summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/formtools
diff options
context:
space:
mode:
authorttt2017-05-13 00:29:47 +0530
committerttt2017-05-13 00:29:47 +0530
commitabf599be33b383a6a5baf9493093b2126a622ac8 (patch)
tree4c5ab6e0d935d5e65fabcf0258e4a00dd20a5afa /lib/python2.7/site-packages/django/contrib/formtools
downloadSBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.tar.gz
SBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.tar.bz2
SBHS-2018-Rpi-abf599be33b383a6a5baf9493093b2126a622ac8.zip
added all server files
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/formtools')
-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.mobin0 -> 698 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.mobin0 -> 447 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.mobin0 -> 695 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.mobin0 -> 626 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.mobin0 -> 450 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.mobin0 -> 586 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.mobin0 -> 524 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.mobin0 -> 588 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.mobin0 -> 750 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.mobin0 -> 493 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.mobin0 -> 722 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.mobin0 -> 731 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.mobin0 -> 614 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.mobin0 -> 356 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.mobin0 -> 608 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.mobin0 -> 729 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.mobin0 -> 722 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.mobin0 -> 761 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.mobin0 -> 605 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.mobin0 -> 713 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.mobin0 -> 727 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.mobin0 -> 747 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.mobin0 -> 601 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.mobin0 -> 757 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.mobin0 -> 478 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.mobin0 -> 643 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.mobin0 -> 604 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.mobin0 -> 734 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.mobin0 -> 640 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.mobin0 -> 666 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.mobin0 -> 582 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.mobin0 -> 596 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.mobin0 -> 604 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.mobin0 -> 590 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.mobin0 -> 745 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.mobin0 -> 753 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.mobin0 -> 643 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.mobin0 -> 442 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.mobin0 -> 441 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.mobin0 -> 443 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.mobin0 -> 442 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.mobin0 -> 810 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.mobin0 -> 485 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.mobin0 -> 829 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.mobin0 -> 688 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.mobin0 -> 794 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.mobin0 -> 723 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.mobin0 -> 650 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.mobin0 -> 712 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.mobin0 -> 597 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.mobin0 -> 631 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.mobin0 -> 632 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.mobin0 -> 651 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.mobin0 -> 730 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.mobin0 -> 764 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.mobin0 -> 633 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.mobin0 -> 901 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.mobin0 -> 760 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.mobin0 -> 777 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.mobin0 -> 602 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.mobin0 -> 696 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.mobin0 -> 686 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.mobin0 -> 724 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.mobin0 -> 720 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.mobin0 -> 448 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.mobin0 -> 449 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.mobin0 -> 670 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.mobin0 -> 706 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.mobin0 -> 441 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.mobin0 -> 706 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.mobin0 -> 447 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.mobin0 -> 469 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.mobin0 -> 591 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.mobin0 -> 592 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
186 files changed, 5366 insertions, 0 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/__init__.py
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py b/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py
new file mode 100644
index 0000000..f07ac9f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py
@@ -0,0 +1,6 @@
+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
new file mode 100644
index 0000000..05d932c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..fc13ed9
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..3d7060f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..9d749d3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..ac79538
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..9373d80
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..acd8ff3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..fe104fe
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..f08a75b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..78d62f2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..cf43088
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c7d3313
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..6be7f4c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..ab3549f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..1efc93e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..d270091
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..71a16cf
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..114a7af
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..197a0ac
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..b5468ea
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..83f2fc3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..1068519
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..1e506c0
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..7b1d5d2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..607322f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..654b11d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..684b735
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..caea4ba
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.po
@@ -0,0 +1,30 @@
+# 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
new file mode 100644
index 0000000..3c20106
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..b47b800
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..cf7f95e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..e612912
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..2d9d587
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..86215f3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..4a44940
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..41b8310
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po
@@ -0,0 +1,37 @@
+# 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
new file mode 100644
index 0000000..689459b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..87d05eb
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..26eb330
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..4924a11
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..790d0fe
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..120dbbf
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..8b8adfe
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..8a7cb0c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..2cd4b6b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..63cb09d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..25d58fc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c4dd26b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po
@@ -0,0 +1,38 @@
+# 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
new file mode 100644
index 0000000..cf97e52
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..8fcb19c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..53c83b8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..6edce56
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..b1b34d5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..5068e15
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..c2bc32a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..bcf78c4
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..ca46fcd
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..30b2318
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..48cdfec
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..ed35511
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po
@@ -0,0 +1,37 @@
+# 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
new file mode 100644
index 0000000..4583998
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..8f5c694
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..b0af1f4
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..325d8fb
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..cc76794
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..9b7b68e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..f3c4c76
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..f912f52
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..335f669
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c346d0f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..d063d97
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..0b695e4
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..8a0bc62
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..cb6a646
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..dced094
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..cb061a0
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..e714bcd
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..df66594
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..25b028e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..2f35b34
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..985db2d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..474e179
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..ce083a9
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..a349475
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..2694677
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..6bbb6bf
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..b78b8bc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..70323d9
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..6d8e26e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..0dd6857
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..951230f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..e66f0ae
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..db031a8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..cac007a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..c564d5e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..4dfae46
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..bdbc57f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..a1a8107
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..f13137b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..5bfc7c1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..afdf864
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..71d39e2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..6ec6ed5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..2b3366b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..a80242f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..4de198f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..e4ed29b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..eaa7a1b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..f522244
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..e9be26f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..df1ae6c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..57695e3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..0b77ff8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..bbbdb14
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po
@@ -0,0 +1,37 @@
+# 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
new file mode 100644
index 0000000..d0c2be1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..e3aef73
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..d7c374f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..10ccb74
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po
@@ -0,0 +1,37 @@
+# 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
new file mode 100644
index 0000000..653096f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..b9fcf6d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..9649270
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..9abae40
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..95e68d7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..a456b20
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..06752ec
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..3af5f3a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..f036372
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..b3f2995
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po
@@ -0,0 +1,34 @@
+# 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
new file mode 100644
index 0000000..41cef4b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..191f5db
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..e3a40fd
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c73fc99
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..af95be5
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..d44474c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..9036db1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..6a4d429
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..a1b54eb
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..3b9cf6d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..3bc9293
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c78252b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po
@@ -0,0 +1,36 @@
+# 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
new file mode 100644
index 0000000..c384b75
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..0200477
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..09d65f1
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..2639373
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po
@@ -0,0 +1,33 @@
+# 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
new file mode 100644
index 0000000..378c27b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..c3119e7
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..eb07917
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo
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
new file mode 100644
index 0000000..820d6c3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po
@@ -0,0 +1,35 @@
+# 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
new file mode 100644
index 0000000..13990e2
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/models.py
@@ -0,0 +1 @@
+""" 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
new file mode 100644
index 0000000..d2e6987
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/preview.py
@@ -0,0 +1,148 @@
+"""
+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
new file mode 100644
index 0000000..2f2de1f
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/form.html
@@ -0,0 +1,15 @@
+{% 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
new file mode 100644
index 0000000..eb88b1e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/preview.html
@@ -0,0 +1,36 @@
+{% 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
new file mode 100644
index 0000000..95bc576
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/wizard/wizard_form.html
@@ -0,0 +1,18 @@
+{% 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
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/__init__.py
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
new file mode 100644
index 0000000..6f3ce4b
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/forms.py
@@ -0,0 +1,15 @@
+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
new file mode 100644
index 0000000..4aa1203
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/404.html
@@ -0,0 +1 @@
+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
new file mode 100644
index 0000000..c6afe66
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/base.html
@@ -0,0 +1,2 @@
+{% 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
new file mode 100644
index 0000000..c911c3c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/forms/wizard.html
@@ -0,0 +1,13 @@
+<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
new file mode 100644
index 0000000..58c59f4
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/tests.py
@@ -0,0 +1,183 @@
+# -*- 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
new file mode 100644
index 0000000..f96f89e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/urls.py
@@ -0,0 +1,15 @@
+"""
+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
new file mode 100644
index 0000000..81de44e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/__init__.py
@@ -0,0 +1,19 @@
+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
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py
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
new file mode 100644
index 0000000..39e914d
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
@@ -0,0 +1,52 @@
+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
new file mode 100644
index 0000000..b6125db
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py
@@ -0,0 +1,382 @@
+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
new file mode 100644
index 0000000..ac2cadc
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
@@ -0,0 +1,24 @@
+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
new file mode 100644
index 0000000..17968df
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/storage.py
@@ -0,0 +1,87 @@
+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
new file mode 100644
index 0000000..4c1ff97
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_cookiestorage.py
@@ -0,0 +1,47 @@
+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
new file mode 100644
index 0000000..2191782
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_forms.py
@@ -0,0 +1,253 @@
+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
new file mode 100644
index 0000000..bb0b06e
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_loadstorage.py
@@ -0,0 +1,18 @@
+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
new file mode 100644
index 0000000..0bd9fd8
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_sessionstorage.py
@@ -0,0 +1,11 @@
+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
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/__init__.py
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
new file mode 100644
index 0000000..6a81329
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/forms.py
@@ -0,0 +1,67 @@
+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
new file mode 100644
index 0000000..45f812c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html
@@ -0,0 +1 @@
+{% 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
new file mode 100644
index 0000000..3c2dbc3
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/tests.py
@@ -0,0 +1,407 @@
+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
new file mode 100644
index 0000000..dabce53
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/urls.py
@@ -0,0 +1,22 @@
+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
new file mode 100644
index 0000000..76277c6
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/utils.py
@@ -0,0 +1,28 @@
+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
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/__init__.py
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
new file mode 100644
index 0000000..bf46c5c
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/forms.py
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 0000000..8f57605
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/__init__.py
@@ -0,0 +1,14 @@
+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
new file mode 100644
index 0000000..6c155e0
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/base.py
@@ -0,0 +1,109 @@
+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
new file mode 100644
index 0000000..9bf6503
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/cookie.py
@@ -0,0 +1,33 @@
+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
new file mode 100644
index 0000000..e273a86
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/exceptions.py
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 0000000..9cfae50
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/session.py
@@ -0,0 +1,19 @@
+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
new file mode 100644
index 0000000..494d87a
--- /dev/null
+++ b/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py
@@ -0,0 +1,730 @@
+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'