Merge branch 'hotfix/v0.12.3' into development

Conflicts:
	.gitignore
	.tx/config
	apps/acls/locale/bg/LC_MESSAGES/django.mo
	apps/acls/locale/bg/LC_MESSAGES/django.po
	apps/acls/locale/de_DE/LC_MESSAGES/django.mo
	apps/acls/locale/de_DE/LC_MESSAGES/django.po
	apps/acls/locale/en/LC_MESSAGES/django.mo
	apps/acls/locale/en/LC_MESSAGES/django.po
	apps/acls/locale/es/LC_MESSAGES/django.mo
	apps/acls/locale/es/LC_MESSAGES/django.po
	apps/acls/locale/fr/LC_MESSAGES/django.mo
	apps/acls/locale/fr/LC_MESSAGES/django.po
	apps/acls/locale/it/LC_MESSAGES/django.mo
	apps/acls/locale/it/LC_MESSAGES/django.po
	apps/acls/locale/nl_NL/LC_MESSAGES/django.mo
	apps/acls/locale/nl_NL/LC_MESSAGES/django.po
	apps/acls/locale/pl/LC_MESSAGES/django.mo
	apps/acls/locale/pl/LC_MESSAGES/django.po
	apps/acls/locale/pt/LC_MESSAGES/django.mo
	apps/acls/locale/pt/LC_MESSAGES/django.po
	apps/acls/locale/pt_BR/LC_MESSAGES/django.mo
	apps/acls/locale/pt_BR/LC_MESSAGES/django.po
	apps/acls/locale/ru/LC_MESSAGES/django.mo
	apps/acls/locale/ru/LC_MESSAGES/django.po
	apps/acls/registry.py
	apps/app_registry/__init__.py
	apps/app_registry/models.py
	apps/bootstrap/classes.py
	apps/bootstrap/exceptions.py
	apps/bootstrap/forms.py
	apps/bootstrap/links.py
	apps/bootstrap/literals.py
	apps/bootstrap/locale/bg/LC_MESSAGES/django.mo
	apps/bootstrap/locale/bg/LC_MESSAGES/django.po
	apps/bootstrap/locale/de_DE/LC_MESSAGES/django.mo
	apps/bootstrap/locale/de_DE/LC_MESSAGES/django.po
	apps/bootstrap/locale/en/LC_MESSAGES/django.mo
	apps/bootstrap/locale/en/LC_MESSAGES/django.po
	apps/bootstrap/locale/es/LC_MESSAGES/django.mo
	apps/bootstrap/locale/es/LC_MESSAGES/django.po
	apps/bootstrap/locale/fr/LC_MESSAGES/django.mo
	apps/bootstrap/locale/fr/LC_MESSAGES/django.po
	apps/bootstrap/locale/it/LC_MESSAGES/django.mo
	apps/bootstrap/locale/it/LC_MESSAGES/django.po
	apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.mo
	apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.po
	apps/bootstrap/locale/pl/LC_MESSAGES/django.mo
	apps/bootstrap/locale/pl/LC_MESSAGES/django.po
	apps/bootstrap/locale/pt/LC_MESSAGES/django.mo
	apps/bootstrap/locale/pt/LC_MESSAGES/django.po
	apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.mo
	apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.po
	apps/bootstrap/locale/ru/LC_MESSAGES/django.mo
	apps/bootstrap/locale/ru/LC_MESSAGES/django.po
	apps/bootstrap/managers.py
	apps/bootstrap/migrations/0001_initial.py
	apps/bootstrap/models.py
	apps/bootstrap/permissions.py
	apps/bootstrap/post_init.py
	apps/bootstrap/registry.py
	apps/bootstrap/static/images/icons/radioactivity.png
	apps/bootstrap/urls.py
	apps/bootstrap/utils.py
	apps/bootstrap/views.py
	apps/checkouts/locale/bg/LC_MESSAGES/django.mo
	apps/checkouts/locale/bg/LC_MESSAGES/django.po
	apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo
	apps/checkouts/locale/de_DE/LC_MESSAGES/django.po
	apps/checkouts/locale/en/LC_MESSAGES/django.mo
	apps/checkouts/locale/en/LC_MESSAGES/django.po
	apps/checkouts/locale/es/LC_MESSAGES/django.mo
	apps/checkouts/locale/es/LC_MESSAGES/django.po
	apps/checkouts/locale/fr/LC_MESSAGES/django.mo
	apps/checkouts/locale/fr/LC_MESSAGES/django.po
	apps/checkouts/locale/it/LC_MESSAGES/django.mo
	apps/checkouts/locale/it/LC_MESSAGES/django.po
	apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo
	apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po
	apps/checkouts/locale/pl/LC_MESSAGES/django.mo
	apps/checkouts/locale/pl/LC_MESSAGES/django.po
	apps/checkouts/locale/pt/LC_MESSAGES/django.mo
	apps/checkouts/locale/pt/LC_MESSAGES/django.po
	apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo
	apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po
	apps/checkouts/locale/ru/LC_MESSAGES/django.mo
	apps/checkouts/locale/ru/LC_MESSAGES/django.po
	apps/common/__init__.py
	apps/common/locale/bg/LC_MESSAGES/django.mo
	apps/common/locale/bg/LC_MESSAGES/django.po
	apps/common/locale/de_DE/LC_MESSAGES/django.mo
	apps/common/locale/de_DE/LC_MESSAGES/django.po
	apps/common/locale/en/LC_MESSAGES/django.mo
	apps/common/locale/en/LC_MESSAGES/django.po
	apps/common/locale/es/LC_MESSAGES/django.mo
	apps/common/locale/es/LC_MESSAGES/django.po
	apps/common/locale/fr/LC_MESSAGES/django.mo
	apps/common/locale/fr/LC_MESSAGES/django.po
	apps/common/locale/it/LC_MESSAGES/django.mo
	apps/common/locale/it/LC_MESSAGES/django.po
	apps/common/locale/nl_NL/LC_MESSAGES/django.mo
	apps/common/locale/nl_NL/LC_MESSAGES/django.po
	apps/common/locale/pl/LC_MESSAGES/django.mo
	apps/common/locale/pl/LC_MESSAGES/django.po
	apps/common/locale/pt/LC_MESSAGES/django.mo
	apps/common/locale/pt/LC_MESSAGES/django.po
	apps/common/locale/pt_BR/LC_MESSAGES/django.mo
	apps/common/locale/pt_BR/LC_MESSAGES/django.po
	apps/common/locale/ru/LC_MESSAGES/django.mo
	apps/common/locale/ru/LC_MESSAGES/django.po
	apps/common/templates/generic_list_subtemplate.html
	apps/common/utils.py
	apps/common/widgets.py
	apps/converter/conf/settings.py
	apps/converter/locale/bg/LC_MESSAGES/django.mo
	apps/converter/locale/bg/LC_MESSAGES/django.po
	apps/converter/locale/de_DE/LC_MESSAGES/django.mo
	apps/converter/locale/de_DE/LC_MESSAGES/django.po
	apps/converter/locale/en/LC_MESSAGES/django.mo
	apps/converter/locale/en/LC_MESSAGES/django.po
	apps/converter/locale/es/LC_MESSAGES/django.mo
	apps/converter/locale/es/LC_MESSAGES/django.po
	apps/converter/locale/fr/LC_MESSAGES/django.mo
	apps/converter/locale/fr/LC_MESSAGES/django.po
	apps/converter/locale/it/LC_MESSAGES/django.mo
	apps/converter/locale/it/LC_MESSAGES/django.po
	apps/converter/locale/nl_NL/LC_MESSAGES/django.mo
	apps/converter/locale/nl_NL/LC_MESSAGES/django.po
	apps/converter/locale/pl/LC_MESSAGES/django.mo
	apps/converter/locale/pl/LC_MESSAGES/django.po
	apps/converter/locale/pt/LC_MESSAGES/django.mo
	apps/converter/locale/pt/LC_MESSAGES/django.po
	apps/converter/locale/pt_BR/LC_MESSAGES/django.mo
	apps/converter/locale/pt_BR/LC_MESSAGES/django.po
	apps/converter/locale/ru/LC_MESSAGES/django.mo
	apps/converter/locale/ru/LC_MESSAGES/django.po
	apps/converter/office_converter.py
	apps/converter/utils.py
	apps/django_gpg/locale/bg/LC_MESSAGES/django.mo
	apps/django_gpg/locale/bg/LC_MESSAGES/django.po
	apps/django_gpg/locale/de_DE/LC_MESSAGES/django.mo
	apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po
	apps/django_gpg/locale/en/LC_MESSAGES/django.mo
	apps/django_gpg/locale/en/LC_MESSAGES/django.po
	apps/django_gpg/locale/es/LC_MESSAGES/django.mo
	apps/django_gpg/locale/es/LC_MESSAGES/django.po
	apps/django_gpg/locale/fr/LC_MESSAGES/django.mo
	apps/django_gpg/locale/fr/LC_MESSAGES/django.po
	apps/django_gpg/locale/it/LC_MESSAGES/django.mo
	apps/django_gpg/locale/it/LC_MESSAGES/django.po
	apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.mo
	apps/django_gpg/locale/nl_NL/LC_MESSAGES/django.po
	apps/django_gpg/locale/pl/LC_MESSAGES/django.mo
	apps/django_gpg/locale/pl/LC_MESSAGES/django.po
	apps/django_gpg/locale/pt/LC_MESSAGES/django.mo
	apps/django_gpg/locale/pt/LC_MESSAGES/django.po
	apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.mo
	apps/django_gpg/locale/pt_BR/LC_MESSAGES/django.po
	apps/django_gpg/locale/ru/LC_MESSAGES/django.mo
	apps/django_gpg/locale/ru/LC_MESSAGES/django.po
	apps/document_comments/locale/bg/LC_MESSAGES/django.mo
	apps/document_comments/locale/bg/LC_MESSAGES/django.po
	apps/document_comments/locale/de_DE/LC_MESSAGES/django.mo
	apps/document_comments/locale/de_DE/LC_MESSAGES/django.po
	apps/document_comments/locale/en/LC_MESSAGES/django.mo
	apps/document_comments/locale/en/LC_MESSAGES/django.po
	apps/document_comments/locale/es/LC_MESSAGES/django.mo
	apps/document_comments/locale/es/LC_MESSAGES/django.po
	apps/document_comments/locale/fr/LC_MESSAGES/django.mo
	apps/document_comments/locale/fr/LC_MESSAGES/django.po
	apps/document_comments/locale/it/LC_MESSAGES/django.mo
	apps/document_comments/locale/it/LC_MESSAGES/django.po
	apps/document_comments/locale/nl_NL/LC_MESSAGES/django.mo
	apps/document_comments/locale/nl_NL/LC_MESSAGES/django.po
	apps/document_comments/locale/pl/LC_MESSAGES/django.mo
	apps/document_comments/locale/pl/LC_MESSAGES/django.po
	apps/document_comments/locale/pt/LC_MESSAGES/django.mo
	apps/document_comments/locale/pt/LC_MESSAGES/django.po
	apps/document_comments/locale/pt_BR/LC_MESSAGES/django.mo
	apps/document_comments/locale/pt_BR/LC_MESSAGES/django.po
	apps/document_comments/locale/ru/LC_MESSAGES/django.mo
	apps/document_comments/locale/ru/LC_MESSAGES/django.po
	apps/document_indexing/__init__.py
	apps/document_indexing/locale/bg/LC_MESSAGES/django.mo
	apps/document_indexing/locale/bg/LC_MESSAGES/django.po
	apps/document_indexing/locale/de_DE/LC_MESSAGES/django.mo
	apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po
	apps/document_indexing/locale/en/LC_MESSAGES/django.mo
	apps/document_indexing/locale/en/LC_MESSAGES/django.po
	apps/document_indexing/locale/es/LC_MESSAGES/django.mo
	apps/document_indexing/locale/es/LC_MESSAGES/django.po
	apps/document_indexing/locale/fr/LC_MESSAGES/django.mo
	apps/document_indexing/locale/fr/LC_MESSAGES/django.po
	apps/document_indexing/locale/it/LC_MESSAGES/django.mo
	apps/document_indexing/locale/it/LC_MESSAGES/django.po
	apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.mo
	apps/document_indexing/locale/nl_NL/LC_MESSAGES/django.po
	apps/document_indexing/locale/pl/LC_MESSAGES/django.mo
	apps/document_indexing/locale/pl/LC_MESSAGES/django.po
	apps/document_indexing/locale/pt/LC_MESSAGES/django.mo
	apps/document_indexing/locale/pt/LC_MESSAGES/django.po
	apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.mo
	apps/document_indexing/locale/pt_BR/LC_MESSAGES/django.po
	apps/document_indexing/locale/ru/LC_MESSAGES/django.mo
	apps/document_indexing/locale/ru/LC_MESSAGES/django.po
	apps/document_indexing/models.py
	apps/document_indexing/registry.py
	apps/document_indexing/urls.py
	apps/document_indexing/views.py
	apps/document_signatures/locale/bg/LC_MESSAGES/django.mo
	apps/document_signatures/locale/bg/LC_MESSAGES/django.po
	apps/document_signatures/locale/de_DE/LC_MESSAGES/django.mo
	apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po
	apps/document_signatures/locale/en/LC_MESSAGES/django.mo
	apps/document_signatures/locale/en/LC_MESSAGES/django.po
	apps/document_signatures/locale/es/LC_MESSAGES/django.mo
	apps/document_signatures/locale/es/LC_MESSAGES/django.po
	apps/document_signatures/locale/fr/LC_MESSAGES/django.mo
	apps/document_signatures/locale/fr/LC_MESSAGES/django.po
	apps/document_signatures/locale/it/LC_MESSAGES/django.mo
	apps/document_signatures/locale/it/LC_MESSAGES/django.po
	apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.mo
	apps/document_signatures/locale/nl_NL/LC_MESSAGES/django.po
	apps/document_signatures/locale/pl/LC_MESSAGES/django.mo
	apps/document_signatures/locale/pl/LC_MESSAGES/django.po
	apps/document_signatures/locale/pt/LC_MESSAGES/django.mo
	apps/document_signatures/locale/pt/LC_MESSAGES/django.po
	apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.mo
	apps/document_signatures/locale/pt_BR/LC_MESSAGES/django.po
	apps/document_signatures/locale/ru/LC_MESSAGES/django.mo
	apps/document_signatures/locale/ru/LC_MESSAGES/django.po
	apps/documents/__init__.py
	apps/documents/forms.py
	apps/documents/locale/bg/LC_MESSAGES/django.mo
	apps/documents/locale/bg/LC_MESSAGES/django.po
	apps/documents/locale/de_DE/LC_MESSAGES/django.mo
	apps/documents/locale/de_DE/LC_MESSAGES/django.po
	apps/documents/locale/en/LC_MESSAGES/django.mo
	apps/documents/locale/en/LC_MESSAGES/django.po
	apps/documents/locale/es/LC_MESSAGES/django.mo
	apps/documents/locale/es/LC_MESSAGES/django.po
	apps/documents/locale/fr/LC_MESSAGES/django.mo
	apps/documents/locale/fr/LC_MESSAGES/django.po
	apps/documents/locale/it/LC_MESSAGES/django.mo
	apps/documents/locale/it/LC_MESSAGES/django.po
	apps/documents/locale/nl_NL/LC_MESSAGES/django.mo
	apps/documents/locale/nl_NL/LC_MESSAGES/django.po
	apps/documents/locale/pl/LC_MESSAGES/django.mo
	apps/documents/locale/pl/LC_MESSAGES/django.po
	apps/documents/locale/pt/LC_MESSAGES/django.mo
	apps/documents/locale/pt/LC_MESSAGES/django.po
	apps/documents/locale/pt_BR/LC_MESSAGES/django.mo
	apps/documents/locale/pt_BR/LC_MESSAGES/django.po
	apps/documents/locale/ru/LC_MESSAGES/django.mo
	apps/documents/locale/ru/LC_MESSAGES/django.po
	apps/documents/managers.py
	apps/documents/migrations/0015_auto__add_unique_documenttype_name.py
	apps/documents/models.py
	apps/documents/registry.py
	apps/dynamic_search/locale/bg/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/bg/LC_MESSAGES/django.po
	apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po
	apps/dynamic_search/locale/en/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/en/LC_MESSAGES/django.po
	apps/dynamic_search/locale/es/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/es/LC_MESSAGES/django.po
	apps/dynamic_search/locale/fr/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/fr/LC_MESSAGES/django.po
	apps/dynamic_search/locale/it/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/it/LC_MESSAGES/django.po
	apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/nl_NL/LC_MESSAGES/django.po
	apps/dynamic_search/locale/pl/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/pl/LC_MESSAGES/django.po
	apps/dynamic_search/locale/pt/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/pt/LC_MESSAGES/django.po
	apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/pt_BR/LC_MESSAGES/django.po
	apps/dynamic_search/locale/ru/LC_MESSAGES/django.mo
	apps/dynamic_search/locale/ru/LC_MESSAGES/django.po
	apps/dynamic_search/registry.py
	apps/folders/__init__.py
	apps/folders/locale/bg/LC_MESSAGES/django.mo
	apps/folders/locale/bg/LC_MESSAGES/django.po
	apps/folders/locale/de_DE/LC_MESSAGES/django.mo
	apps/folders/locale/de_DE/LC_MESSAGES/django.po
	apps/folders/locale/en/LC_MESSAGES/django.mo
	apps/folders/locale/en/LC_MESSAGES/django.po
	apps/folders/locale/es/LC_MESSAGES/django.mo
	apps/folders/locale/es/LC_MESSAGES/django.po
	apps/folders/locale/fr/LC_MESSAGES/django.mo
	apps/folders/locale/fr/LC_MESSAGES/django.po
	apps/folders/locale/it/LC_MESSAGES/django.mo
	apps/folders/locale/it/LC_MESSAGES/django.po
	apps/folders/locale/nl_NL/LC_MESSAGES/django.mo
	apps/folders/locale/nl_NL/LC_MESSAGES/django.po
	apps/folders/locale/pl/LC_MESSAGES/django.mo
	apps/folders/locale/pl/LC_MESSAGES/django.po
	apps/folders/locale/pt/LC_MESSAGES/django.mo
	apps/folders/locale/pt/LC_MESSAGES/django.po
	apps/folders/locale/pt_BR/LC_MESSAGES/django.mo
	apps/folders/locale/pt_BR/LC_MESSAGES/django.po
	apps/folders/locale/ru/LC_MESSAGES/django.mo
	apps/folders/locale/ru/LC_MESSAGES/django.po
	apps/folders/registry.py
	apps/history/locale/bg/LC_MESSAGES/django.mo
	apps/history/locale/bg/LC_MESSAGES/django.po
	apps/history/locale/de_DE/LC_MESSAGES/django.mo
	apps/history/locale/de_DE/LC_MESSAGES/django.po
	apps/history/locale/en/LC_MESSAGES/django.mo
	apps/history/locale/en/LC_MESSAGES/django.po
	apps/history/locale/es/LC_MESSAGES/django.mo
	apps/history/locale/es/LC_MESSAGES/django.po
	apps/history/locale/fr/LC_MESSAGES/django.mo
	apps/history/locale/fr/LC_MESSAGES/django.po
	apps/history/locale/it/LC_MESSAGES/django.mo
	apps/history/locale/it/LC_MESSAGES/django.po
	apps/history/locale/nl_NL/LC_MESSAGES/django.mo
	apps/history/locale/nl_NL/LC_MESSAGES/django.po
	apps/history/locale/pl/LC_MESSAGES/django.mo
	apps/history/locale/pl/LC_MESSAGES/django.po
	apps/history/locale/pt/LC_MESSAGES/django.mo
	apps/history/locale/pt/LC_MESSAGES/django.po
	apps/history/locale/pt_BR/LC_MESSAGES/django.mo
	apps/history/locale/pt_BR/LC_MESSAGES/django.po
	apps/history/locale/ru/LC_MESSAGES/django.mo
	apps/history/locale/ru/LC_MESSAGES/django.po
	apps/history/registry.py
	apps/installation/__init__.py
	apps/installation/locale/bg/LC_MESSAGES/django.mo
	apps/installation/locale/bg/LC_MESSAGES/django.po
	apps/installation/locale/de_DE/LC_MESSAGES/django.mo
	apps/installation/locale/de_DE/LC_MESSAGES/django.po
	apps/installation/locale/en/LC_MESSAGES/django.mo
	apps/installation/locale/en/LC_MESSAGES/django.po
	apps/installation/locale/es/LC_MESSAGES/django.mo
	apps/installation/locale/es/LC_MESSAGES/django.po
	apps/installation/locale/fr/LC_MESSAGES/django.mo
	apps/installation/locale/fr/LC_MESSAGES/django.po
	apps/installation/locale/it/LC_MESSAGES/django.mo
	apps/installation/locale/it/LC_MESSAGES/django.po
	apps/installation/locale/nl_NL/LC_MESSAGES/django.mo
	apps/installation/locale/nl_NL/LC_MESSAGES/django.po
	apps/installation/locale/pl/LC_MESSAGES/django.mo
	apps/installation/locale/pl/LC_MESSAGES/django.po
	apps/installation/locale/pt/LC_MESSAGES/django.mo
	apps/installation/locale/pt/LC_MESSAGES/django.po
	apps/installation/locale/pt_BR/LC_MESSAGES/django.mo
	apps/installation/locale/pt_BR/LC_MESSAGES/django.po
	apps/installation/locale/ru/LC_MESSAGES/django.mo
	apps/installation/locale/ru/LC_MESSAGES/django.po
	apps/installation/models.py
	apps/installation/views.py
	apps/linking/locale/bg/LC_MESSAGES/django.mo
	apps/linking/locale/bg/LC_MESSAGES/django.po
	apps/linking/locale/de_DE/LC_MESSAGES/django.mo
	apps/linking/locale/de_DE/LC_MESSAGES/django.po
	apps/linking/locale/en/LC_MESSAGES/django.mo
	apps/linking/locale/en/LC_MESSAGES/django.po
	apps/linking/locale/es/LC_MESSAGES/django.mo
	apps/linking/locale/es/LC_MESSAGES/django.po
	apps/linking/locale/fr/LC_MESSAGES/django.mo
	apps/linking/locale/fr/LC_MESSAGES/django.po
	apps/linking/locale/it/LC_MESSAGES/django.mo
	apps/linking/locale/it/LC_MESSAGES/django.po
	apps/linking/locale/nl_NL/LC_MESSAGES/django.mo
	apps/linking/locale/nl_NL/LC_MESSAGES/django.po
	apps/linking/locale/pl/LC_MESSAGES/django.mo
	apps/linking/locale/pl/LC_MESSAGES/django.po
	apps/linking/locale/pt/LC_MESSAGES/django.mo
	apps/linking/locale/pt/LC_MESSAGES/django.po
	apps/linking/locale/pt_BR/LC_MESSAGES/django.mo
	apps/linking/locale/pt_BR/LC_MESSAGES/django.po
	apps/linking/locale/ru/LC_MESSAGES/django.mo
	apps/linking/locale/ru/LC_MESSAGES/django.po
	apps/linking/registry.py
	apps/main/__init__.py
	apps/main/locale/bg/LC_MESSAGES/django.mo
	apps/main/locale/bg/LC_MESSAGES/django.po
	apps/main/locale/de_DE/LC_MESSAGES/django.mo
	apps/main/locale/de_DE/LC_MESSAGES/django.po
	apps/main/locale/en/LC_MESSAGES/django.mo
	apps/main/locale/en/LC_MESSAGES/django.po
	apps/main/locale/es/LC_MESSAGES/django.mo
	apps/main/locale/es/LC_MESSAGES/django.po
	apps/main/locale/fr/LC_MESSAGES/django.mo
	apps/main/locale/fr/LC_MESSAGES/django.po
	apps/main/locale/it/LC_MESSAGES/django.mo
	apps/main/locale/it/LC_MESSAGES/django.po
	apps/main/locale/nl_NL/LC_MESSAGES/django.mo
	apps/main/locale/nl_NL/LC_MESSAGES/django.po
	apps/main/locale/pl/LC_MESSAGES/django.mo
	apps/main/locale/pl/LC_MESSAGES/django.po
	apps/main/locale/pt/LC_MESSAGES/django.mo
	apps/main/locale/pt/LC_MESSAGES/django.po
	apps/main/locale/pt_BR/LC_MESSAGES/django.mo
	apps/main/locale/pt_BR/LC_MESSAGES/django.po
	apps/main/locale/ru/LC_MESSAGES/django.mo
	apps/main/locale/ru/LC_MESSAGES/django.po
	apps/main/templates/base.html
	apps/metadata/__init__.py
	apps/metadata/locale/bg/LC_MESSAGES/django.mo
	apps/metadata/locale/bg/LC_MESSAGES/django.po
	apps/metadata/locale/de_DE/LC_MESSAGES/django.mo
	apps/metadata/locale/de_DE/LC_MESSAGES/django.po
	apps/metadata/locale/en/LC_MESSAGES/django.mo
	apps/metadata/locale/en/LC_MESSAGES/django.po
	apps/metadata/locale/es/LC_MESSAGES/django.mo
	apps/metadata/locale/es/LC_MESSAGES/django.po
	apps/metadata/locale/fr/LC_MESSAGES/django.mo
	apps/metadata/locale/fr/LC_MESSAGES/django.po
	apps/metadata/locale/it/LC_MESSAGES/django.mo
	apps/metadata/locale/it/LC_MESSAGES/django.po
	apps/metadata/locale/nl_NL/LC_MESSAGES/django.mo
	apps/metadata/locale/nl_NL/LC_MESSAGES/django.po
	apps/metadata/locale/pl/LC_MESSAGES/django.mo
	apps/metadata/locale/pl/LC_MESSAGES/django.po
	apps/metadata/locale/pt/LC_MESSAGES/django.mo
	apps/metadata/locale/pt/LC_MESSAGES/django.po
	apps/metadata/locale/pt_BR/LC_MESSAGES/django.mo
	apps/metadata/locale/pt_BR/LC_MESSAGES/django.po
	apps/metadata/locale/ru/LC_MESSAGES/django.mo
	apps/metadata/locale/ru/LC_MESSAGES/django.po
	apps/metadata/migrations/0001_initial.py
	apps/metadata/models.py
	apps/metadata/registry.py
	apps/navigation/locale/bg/LC_MESSAGES/django.mo
	apps/navigation/locale/bg/LC_MESSAGES/django.po
	apps/navigation/locale/de_DE/LC_MESSAGES/django.mo
	apps/navigation/locale/de_DE/LC_MESSAGES/django.po
	apps/navigation/locale/en/LC_MESSAGES/django.mo
	apps/navigation/locale/en/LC_MESSAGES/django.po
	apps/navigation/locale/es/LC_MESSAGES/django.mo
	apps/navigation/locale/es/LC_MESSAGES/django.po
	apps/navigation/locale/fr/LC_MESSAGES/django.mo
	apps/navigation/locale/fr/LC_MESSAGES/django.po
	apps/navigation/locale/it/LC_MESSAGES/django.mo
	apps/navigation/locale/it/LC_MESSAGES/django.po
	apps/navigation/locale/nl_NL/LC_MESSAGES/django.mo
	apps/navigation/locale/nl_NL/LC_MESSAGES/django.po
	apps/navigation/locale/pl/LC_MESSAGES/django.mo
	apps/navigation/locale/pl/LC_MESSAGES/django.po
	apps/navigation/locale/pt/LC_MESSAGES/django.mo
	apps/navigation/locale/pt/LC_MESSAGES/django.po
	apps/navigation/locale/pt_BR/LC_MESSAGES/django.mo
	apps/navigation/locale/pt_BR/LC_MESSAGES/django.po
	apps/navigation/locale/ru/LC_MESSAGES/django.mo
	apps/navigation/locale/ru/LC_MESSAGES/django.po
	apps/navigation/templatetags/navigation_tags.py
	apps/ocr/__init__.py
	apps/ocr/locale/bg/LC_MESSAGES/django.mo
	apps/ocr/locale/bg/LC_MESSAGES/django.po
	apps/ocr/locale/de_DE/LC_MESSAGES/django.mo
	apps/ocr/locale/de_DE/LC_MESSAGES/django.po
	apps/ocr/locale/en/LC_MESSAGES/django.mo
	apps/ocr/locale/en/LC_MESSAGES/django.po
	apps/ocr/locale/es/LC_MESSAGES/django.mo
	apps/ocr/locale/es/LC_MESSAGES/django.po
	apps/ocr/locale/fr/LC_MESSAGES/django.mo
	apps/ocr/locale/fr/LC_MESSAGES/django.po
	apps/ocr/locale/it/LC_MESSAGES/django.mo
	apps/ocr/locale/it/LC_MESSAGES/django.po
	apps/ocr/locale/nl_NL/LC_MESSAGES/django.mo
	apps/ocr/locale/nl_NL/LC_MESSAGES/django.po
	apps/ocr/locale/pl/LC_MESSAGES/django.mo
	apps/ocr/locale/pl/LC_MESSAGES/django.po
	apps/ocr/locale/pt/LC_MESSAGES/django.mo
	apps/ocr/locale/pt/LC_MESSAGES/django.po
	apps/ocr/locale/pt_BR/LC_MESSAGES/django.mo
	apps/ocr/locale/pt_BR/LC_MESSAGES/django.po
	apps/ocr/locale/ru/LC_MESSAGES/django.mo
	apps/ocr/locale/ru/LC_MESSAGES/django.po
	apps/permissions/locale/bg/LC_MESSAGES/django.mo
	apps/permissions/locale/bg/LC_MESSAGES/django.po
	apps/permissions/locale/de_DE/LC_MESSAGES/django.mo
	apps/permissions/locale/de_DE/LC_MESSAGES/django.po
	apps/permissions/locale/en/LC_MESSAGES/django.mo
	apps/permissions/locale/en/LC_MESSAGES/django.po
	apps/permissions/locale/es/LC_MESSAGES/django.mo
	apps/permissions/locale/es/LC_MESSAGES/django.po
	apps/permissions/locale/fr/LC_MESSAGES/django.mo
	apps/permissions/locale/fr/LC_MESSAGES/django.po
	apps/permissions/locale/it/LC_MESSAGES/django.mo
	apps/permissions/locale/it/LC_MESSAGES/django.po
	apps/permissions/locale/nl_NL/LC_MESSAGES/django.mo
	apps/permissions/locale/nl_NL/LC_MESSAGES/django.po
	apps/permissions/locale/pl/LC_MESSAGES/django.mo
	apps/permissions/locale/pl/LC_MESSAGES/django.po
	apps/permissions/locale/pt/LC_MESSAGES/django.mo
	apps/permissions/locale/pt/LC_MESSAGES/django.po
	apps/permissions/locale/pt_BR/LC_MESSAGES/django.mo
	apps/permissions/locale/pt_BR/LC_MESSAGES/django.po
	apps/permissions/locale/ru/LC_MESSAGES/django.mo
	apps/permissions/locale/ru/LC_MESSAGES/django.po
	apps/permissions/models.py
	apps/permissions/registry.py
	apps/project_setup/locale/bg/LC_MESSAGES/django.mo
	apps/project_setup/locale/bg/LC_MESSAGES/django.po
	apps/project_setup/locale/de_DE/LC_MESSAGES/django.mo
	apps/project_setup/locale/de_DE/LC_MESSAGES/django.po
	apps/project_setup/locale/en/LC_MESSAGES/django.mo
	apps/project_setup/locale/en/LC_MESSAGES/django.po
	apps/project_setup/locale/es/LC_MESSAGES/django.mo
	apps/project_setup/locale/es/LC_MESSAGES/django.po
	apps/project_setup/locale/fr/LC_MESSAGES/django.mo
	apps/project_setup/locale/fr/LC_MESSAGES/django.po
	apps/project_setup/locale/it/LC_MESSAGES/django.mo
	apps/project_setup/locale/it/LC_MESSAGES/django.po
	apps/project_setup/locale/nl_NL/LC_MESSAGES/django.mo
	apps/project_setup/locale/nl_NL/LC_MESSAGES/django.po
	apps/project_setup/locale/pl/LC_MESSAGES/django.mo
	apps/project_setup/locale/pl/LC_MESSAGES/django.po
	apps/project_setup/locale/pt/LC_MESSAGES/django.mo
	apps/project_setup/locale/pt/LC_MESSAGES/django.po
	apps/project_setup/locale/pt_BR/LC_MESSAGES/django.mo
	apps/project_setup/locale/pt_BR/LC_MESSAGES/django.po
	apps/project_setup/locale/ru/LC_MESSAGES/django.mo
	apps/project_setup/locale/ru/LC_MESSAGES/django.po
	apps/project_tools/locale/bg/LC_MESSAGES/django.mo
	apps/project_tools/locale/bg/LC_MESSAGES/django.po
	apps/project_tools/locale/de_DE/LC_MESSAGES/django.mo
	apps/project_tools/locale/de_DE/LC_MESSAGES/django.po
	apps/project_tools/locale/en/LC_MESSAGES/django.mo
	apps/project_tools/locale/en/LC_MESSAGES/django.po
	apps/project_tools/locale/es/LC_MESSAGES/django.mo
	apps/project_tools/locale/es/LC_MESSAGES/django.po
	apps/project_tools/locale/fr/LC_MESSAGES/django.mo
	apps/project_tools/locale/fr/LC_MESSAGES/django.po
	apps/project_tools/locale/it/LC_MESSAGES/django.mo
	apps/project_tools/locale/it/LC_MESSAGES/django.po
	apps/project_tools/locale/nl_NL/LC_MESSAGES/django.mo
	apps/project_tools/locale/nl_NL/LC_MESSAGES/django.po
	apps/project_tools/locale/pl/LC_MESSAGES/django.mo
	apps/project_tools/locale/pl/LC_MESSAGES/django.po
	apps/project_tools/locale/pt/LC_MESSAGES/django.mo
	apps/project_tools/locale/pt/LC_MESSAGES/django.po
	apps/project_tools/locale/pt_BR/LC_MESSAGES/django.mo
	apps/project_tools/locale/pt_BR/LC_MESSAGES/django.po
	apps/project_tools/locale/ru/LC_MESSAGES/django.mo
	apps/project_tools/locale/ru/LC_MESSAGES/django.po
	apps/scheduler/__init__.py
	apps/scheduler/locale/bg/LC_MESSAGES/django.mo
	apps/scheduler/locale/bg/LC_MESSAGES/django.po
	apps/scheduler/locale/de_DE/LC_MESSAGES/django.mo
	apps/scheduler/locale/de_DE/LC_MESSAGES/django.po
	apps/scheduler/locale/en/LC_MESSAGES/django.mo
	apps/scheduler/locale/en/LC_MESSAGES/django.po
	apps/scheduler/locale/es/LC_MESSAGES/django.mo
	apps/scheduler/locale/es/LC_MESSAGES/django.po
	apps/scheduler/locale/fr/LC_MESSAGES/django.mo
	apps/scheduler/locale/fr/LC_MESSAGES/django.po
	apps/scheduler/locale/it/LC_MESSAGES/django.mo
	apps/scheduler/locale/it/LC_MESSAGES/django.po
	apps/scheduler/locale/nl_NL/LC_MESSAGES/django.mo
	apps/scheduler/locale/nl_NL/LC_MESSAGES/django.po
	apps/scheduler/locale/pl/LC_MESSAGES/django.mo
	apps/scheduler/locale/pl/LC_MESSAGES/django.po
	apps/scheduler/locale/pt/LC_MESSAGES/django.mo
	apps/scheduler/locale/pt/LC_MESSAGES/django.po
	apps/scheduler/locale/pt_BR/LC_MESSAGES/django.mo
	apps/scheduler/locale/pt_BR/LC_MESSAGES/django.po
	apps/scheduler/locale/ru/LC_MESSAGES/django.mo
	apps/scheduler/locale/ru/LC_MESSAGES/django.po
	apps/scheduler/runtime.py
	apps/smart_settings/locale/bg/LC_MESSAGES/django.mo
	apps/smart_settings/locale/bg/LC_MESSAGES/django.po
	apps/smart_settings/locale/de_DE/LC_MESSAGES/django.mo
	apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po
	apps/smart_settings/locale/en/LC_MESSAGES/django.mo
	apps/smart_settings/locale/en/LC_MESSAGES/django.po
	apps/smart_settings/locale/es/LC_MESSAGES/django.mo
	apps/smart_settings/locale/es/LC_MESSAGES/django.po
	apps/smart_settings/locale/fr/LC_MESSAGES/django.mo
	apps/smart_settings/locale/fr/LC_MESSAGES/django.po
	apps/smart_settings/locale/it/LC_MESSAGES/django.mo
	apps/smart_settings/locale/it/LC_MESSAGES/django.po
	apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.mo
	apps/smart_settings/locale/nl_NL/LC_MESSAGES/django.po
	apps/smart_settings/locale/pl/LC_MESSAGES/django.mo
	apps/smart_settings/locale/pl/LC_MESSAGES/django.po
	apps/smart_settings/locale/pt/LC_MESSAGES/django.mo
	apps/smart_settings/locale/pt/LC_MESSAGES/django.po
	apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.mo
	apps/smart_settings/locale/pt_BR/LC_MESSAGES/django.po
	apps/smart_settings/locale/ru/LC_MESSAGES/django.mo
	apps/smart_settings/locale/ru/LC_MESSAGES/django.po
	apps/sources/locale/bg/LC_MESSAGES/django.mo
	apps/sources/locale/bg/LC_MESSAGES/django.po
	apps/sources/locale/de_DE/LC_MESSAGES/django.mo
	apps/sources/locale/de_DE/LC_MESSAGES/django.po
	apps/sources/locale/en/LC_MESSAGES/django.mo
	apps/sources/locale/en/LC_MESSAGES/django.po
	apps/sources/locale/es/LC_MESSAGES/django.mo
	apps/sources/locale/es/LC_MESSAGES/django.po
	apps/sources/locale/fr/LC_MESSAGES/django.mo
	apps/sources/locale/fr/LC_MESSAGES/django.po
	apps/sources/locale/it/LC_MESSAGES/django.mo
	apps/sources/locale/it/LC_MESSAGES/django.po
	apps/sources/locale/nl_NL/LC_MESSAGES/django.mo
	apps/sources/locale/nl_NL/LC_MESSAGES/django.po
	apps/sources/locale/pl/LC_MESSAGES/django.mo
	apps/sources/locale/pl/LC_MESSAGES/django.po
	apps/sources/locale/pt/LC_MESSAGES/django.mo
	apps/sources/locale/pt/LC_MESSAGES/django.po
	apps/sources/locale/pt_BR/LC_MESSAGES/django.mo
	apps/sources/locale/pt_BR/LC_MESSAGES/django.po
	apps/sources/locale/ru/LC_MESSAGES/django.mo
	apps/sources/locale/ru/LC_MESSAGES/django.po
	apps/sources/registry.py
	apps/tags/__init__.py
	apps/tags/links.py
	apps/tags/locale/bg/LC_MESSAGES/django.mo
	apps/tags/locale/bg/LC_MESSAGES/django.po
	apps/tags/locale/de_DE/LC_MESSAGES/django.mo
	apps/tags/locale/de_DE/LC_MESSAGES/django.po
	apps/tags/locale/en/LC_MESSAGES/django.mo
	apps/tags/locale/en/LC_MESSAGES/django.po
	apps/tags/locale/es/LC_MESSAGES/django.mo
	apps/tags/locale/es/LC_MESSAGES/django.po
	apps/tags/locale/fr/LC_MESSAGES/django.mo
	apps/tags/locale/fr/LC_MESSAGES/django.po
	apps/tags/locale/it/LC_MESSAGES/django.mo
	apps/tags/locale/it/LC_MESSAGES/django.po
	apps/tags/locale/nl_NL/LC_MESSAGES/django.mo
	apps/tags/locale/nl_NL/LC_MESSAGES/django.po
	apps/tags/locale/pl/LC_MESSAGES/django.mo
	apps/tags/locale/pl/LC_MESSAGES/django.po
	apps/tags/locale/pt/LC_MESSAGES/django.mo
	apps/tags/locale/pt/LC_MESSAGES/django.po
	apps/tags/locale/pt_BR/LC_MESSAGES/django.mo
	apps/tags/locale/pt_BR/LC_MESSAGES/django.po
	apps/tags/locale/ru/LC_MESSAGES/django.mo
	apps/tags/locale/ru/LC_MESSAGES/django.po
	apps/tags/registry.py
	apps/tags/views.py
	apps/user_management/__init__.py
	apps/user_management/locale/bg/LC_MESSAGES/django.mo
	apps/user_management/locale/bg/LC_MESSAGES/django.po
	apps/user_management/locale/de_DE/LC_MESSAGES/django.mo
	apps/user_management/locale/de_DE/LC_MESSAGES/django.po
	apps/user_management/locale/en/LC_MESSAGES/django.mo
	apps/user_management/locale/en/LC_MESSAGES/django.po
	apps/user_management/locale/es/LC_MESSAGES/django.mo
	apps/user_management/locale/es/LC_MESSAGES/django.po
	apps/user_management/locale/fr/LC_MESSAGES/django.mo
	apps/user_management/locale/fr/LC_MESSAGES/django.po
	apps/user_management/locale/it/LC_MESSAGES/django.mo
	apps/user_management/locale/it/LC_MESSAGES/django.po
	apps/user_management/locale/nl_NL/LC_MESSAGES/django.mo
	apps/user_management/locale/nl_NL/LC_MESSAGES/django.po
	apps/user_management/locale/pl/LC_MESSAGES/django.mo
	apps/user_management/locale/pl/LC_MESSAGES/django.po
	apps/user_management/locale/pt/LC_MESSAGES/django.mo
	apps/user_management/locale/pt/LC_MESSAGES/django.po
	apps/user_management/locale/pt_BR/LC_MESSAGES/django.mo
	apps/user_management/locale/pt_BR/LC_MESSAGES/django.po
	apps/user_management/locale/ru/LC_MESSAGES/django.mo
	apps/user_management/locale/ru/LC_MESSAGES/django.po
	apps/user_management/registry.py
	apps/web_theme/locale/bg/LC_MESSAGES/django.mo
	apps/web_theme/locale/bg/LC_MESSAGES/django.po
	apps/web_theme/locale/de_DE/LC_MESSAGES/django.mo
	apps/web_theme/locale/de_DE/LC_MESSAGES/django.po
	apps/web_theme/locale/en/LC_MESSAGES/django.mo
	apps/web_theme/locale/en/LC_MESSAGES/django.po
	apps/web_theme/locale/es/LC_MESSAGES/django.mo
	apps/web_theme/locale/es/LC_MESSAGES/django.po
	apps/web_theme/locale/fr/LC_MESSAGES/django.mo
	apps/web_theme/locale/fr/LC_MESSAGES/django.po
	apps/web_theme/locale/it/LC_MESSAGES/django.mo
	apps/web_theme/locale/it/LC_MESSAGES/django.po
	apps/web_theme/locale/nl_NL/LC_MESSAGES/django.mo
	apps/web_theme/locale/nl_NL/LC_MESSAGES/django.po
	apps/web_theme/locale/pl/LC_MESSAGES/django.mo
	apps/web_theme/locale/pl/LC_MESSAGES/django.po
	apps/web_theme/locale/pt/LC_MESSAGES/django.mo
	apps/web_theme/locale/pt/LC_MESSAGES/django.po
	apps/web_theme/locale/pt_BR/LC_MESSAGES/django.mo
	apps/web_theme/locale/pt_BR/LC_MESSAGES/django.po
	apps/web_theme/locale/ru/LC_MESSAGES/django.mo
	apps/web_theme/locale/ru/LC_MESSAGES/django.po
	docs/credits/contributors.rst
	docs/faq/index.rst
	docs/intro/requirements.rst
	docs/releases/index.rst
	docs/topics/document_visualization.rst
	docs/topics/ocr.rst
	fabfile/platforms/linux.py
	misc/process_messages.py
	requirements/development.txt
	requirements/production.txt
	settings.py
	urls.py
This commit is contained in:
Roberto Rosario
2012-12-14 04:25:10 -04:00
580 changed files with 30706 additions and 20648 deletions

View File

@@ -1,16 +1,23 @@
from __future__ import absolute_import
import logging
from itertools import chain
from django.db import models
from django.core import serializers
from django.utils.datastructures import SortedDict
from .exceptions import ExistingData
from .literals import FIXTURE_TYPE_PK_NULLIFIER
from .exceptions import ExistingData, NotABootstrapSetup
from .literals import (FIXTURE_TYPE_PK_NULLIFIER, FIXTURE_TYPE_MODEL_PROCESS,
FIXTURE_METADATA_REMARK_CHARACTER, BOOTSTRAP_SETUP_MAGIC_NUMBER)
from .utils import toposort2
logger = logging.getLogger(__name__)
class Cleanup(object):
"""
Class to store all the registered cleanup functions in one place
Class to store all the registered cleanup functions in one place.
"""
_registry = {}
@@ -19,18 +26,26 @@ class Cleanup(object):
for cleanup in cls._registry.values():
cleanup.function()
def __init__(self, name, function):
self.name = name
def __init__(self, function):
self.function = function
self.__class__._registry[self.name] = self
self.__class__._registry[id(self)] = self
class BootstrapModel(object):
"""
Class used to keep track of all the models to be dumped to create a
bootstrap setup from the current setup in use
bootstrap setup from the current setup in use.
"""
_registry = SortedDict()#{}
_registry = SortedDict()
@classmethod
def get_magic_number(cls):
return '%s %s' % (FIXTURE_METADATA_REMARK_CHARACTER, BOOTSTRAP_SETUP_MAGIC_NUMBER)
@classmethod
def check_magic_number(cls, data):
if not data.startswith(cls.get_magic_number()):
raise NotABootstrapSetup
@classmethod
def check_for_data(cls):
@@ -40,16 +55,50 @@ class BootstrapModel(object):
raise ExistingData
@classmethod
def get_all(cls):
return cls._registry.values()
def get_all(cls, sort_by_dependencies=False):
"""
Return all boostrap models, sorted by dependencies optionally.
"""
if not sort_by_dependencies:
return cls._registry.values()
else:
return (cls.get_by_name(name) for name in list(chain.from_iterable(toposort2(cls.get_dependency_dict()))))
@classmethod
def get_dependency_dict(cls):
"""
Return a dictionary where the key is the model name and it's value
is a list of models upon which it depends.
"""
result = {}
for instance in cls.get_all():
result[instance.get_fullname()] = set(instance.dependencies)
logger.debug('result: %s' % result)
return result
@classmethod
def get_by_name(cls, name):
"""
Return a BootstrapModel instance by the fullname of the model it
represents.
"""
return cls._registry[name]
def get_fullname(self):
"""
Return a the full app name + model name of the model represented
by the instance.
"""
return '.'.join([self.app_name, self.model_name])
def get_model_instance(self):
"""
Returns an actual Model class instance of the model.
"""
return models.get_model(self.app_name, self.model_name)
def __init__(self, model_name, app_name=None, sanitize=True):
def __init__(self, model_name, app_name=None, sanitize=True, dependencies=None):
app_name_splitted = None
if '.' in model_name:
app_name_splitted, model_name = model_name.split('.')
@@ -58,12 +107,66 @@ class BootstrapModel(object):
if not self.app_name:
raise Exception('Pass either a dotted app plus model name or a model name and a separate app name')
self.model_name = model_name
self.__class__._registry[self.get_fullname()] = self
self.sanitize = sanitize
self.dependencies = dependencies if dependencies else []
self.__class__._registry[self.get_fullname()] = self
def dump(self, serialization_format):
result = serializers.serialize(serialization_format, self.get_model_instance().objects.all(), indent=4, use_natural_keys=True)
logger.debug('result: "%s"' % result)
if self.sanitize:
# Remove primary key values
result = FIXTURE_TYPE_PK_NULLIFIER[serialization_format](result)
# Do any clean up required on the fixture
result = FIXTURE_TYPE_MODEL_PROCESS[serialization_format](result)
return result
class FixtureMetadata(object):
"""
Class to automatically create and extract metadata from a bootstrap
fixture.
"""
_registry = SortedDict()
@classmethod
def get_all(cls):
return cls._registry.values()
@classmethod
def generate_all(cls, fixture_instance):
result = []
for fixture_metadata in cls.get_all():
result.append(fixture_metadata.generate(fixture_instance))
return '\n'.join(result)
@classmethod
def read_all(cls, data):
result = {}
for instance in cls.get_all():
single_result = instance.read_value(data)
if single_result:
result[instance.property_name] = single_result
return result
def __init__(self, literal, generate_function, read_function=None, property_name=None):
self.literal = literal
self.generate_function = generate_function
self.property_name = property_name
self.read_function = read_function or (lambda x: x)
self.__class__._registry[id(self)] = self
def get_with_remark(self):
return '%s %s' % (FIXTURE_METADATA_REMARK_CHARACTER, self.literal)
def generate(self, fixture_instance):
return '%s: %s' % (self.get_with_remark(), self.generate_function(fixture_instance))
def read_value(self, fixture_data):
if self.property_name:
for line in fixture_data.splitlines(False):
if line.startswith(self.get_with_remark()):
# TODO: replace the "+ 4" with a space and next character finding algo
return self.read_function(line[len(self.literal) + 4:])

View File

@@ -5,6 +5,14 @@ class ExistingData(Exception):
"""
Raised when an attempt to execute a bootstrap setup is made and there is
existing data that would be corrupted or damaged by the loading the
bootstrap's fixture
bootstrap's fixture.
"""
pass
class NotABootstrapSetup(Exception):
"""
Raised when an attempting to import a bootstrap setup without a proper
magic number metadata
"""
pass

View File

@@ -15,14 +15,43 @@ logger = logging.getLogger(__name__)
class BootstrapSetupForm(forms.ModelForm):
class Meta:
model = BootstrapSetup
widgets = {
'description': forms.widgets.Textarea(attrs={
'rows': 5, 'cols': 80,
}
)
}
class BootstrapSetupForm_view(DetailForm):
class Meta:
model = BootstrapSetup
widgets = {
'description': forms.widgets.Textarea(attrs={
'rows': 5, 'cols': 80,
}
)
}
class BootstrapSetupForm_dump(forms.ModelForm):
class Meta:
class BootstrapSetupForm_edit(BootstrapSetupForm):
class Meta(BootstrapSetupForm.Meta):
model = BootstrapSetup
exclude = ['fixture']
exclude = ('type',)
class BootstrapSetupForm_dump(BootstrapSetupForm):
class Meta(BootstrapSetupForm.Meta):
model = BootstrapSetup
exclude = ('fixture',)
class BootstrapFileImportForm(forms.Form):
file = forms.FileField(
label=_(u'Bootstrap setup file'),
)
class BootstrapURLImportForm(forms.Form):
url = forms.URLField(
label=_(u'Bootstrap setup URL'),
)

View File

@@ -7,7 +7,8 @@ from navigation import Link
from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE,
PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE,
PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_BOOTSTRAP_DUMP,
PERMISSION_NUKE_DATABASE)
PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_EXPORT,
PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC)
from .icons import (icon_bootstrap_setup, icon_bootstrap_setup_execute, icon_bootstrap_setup_create,
icon_bootstrap_setup_edit, icon_bootstrap_setup_delete, icon_bootstrap_setup_view,
icon_bootstrap_setup_dump, icon_nuke_database)
@@ -21,3 +22,9 @@ link_bootstrap_setup_view = Link(text=_(u'details'), view='bootstrap_setup_view'
link_bootstrap_setup_execute = Link(text=_(u'execute'), view='bootstrap_setup_execute', args='object.pk', icon=icon_bootstrap_setup_execute, permissions=[PERMISSION_BOOTSTRAP_EXECUTE])
link_bootstrap_setup_dump = Link(text=_(u'dump current setup'), view='bootstrap_setup_dump', icon=icon_bootstrap_setup_dump, permissions=[PERMISSION_BOOTSTRAP_DUMP])
link_erase_database = Link(text=_(u'erase database'), view='erase_database_view', icon=icon_nuke_database, permissions=[PERMISSION_NUKE_DATABASE])
# TODO: convert to Link class and assign icon
link_bootstrap_setup_export = {'text': _(u'export'), 'view': 'bootstrap_setup_export', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_BOOTSTRAP_EXPORT]}
link_bootstrap_setup_import_from_file = {'text': _(u'import from file'), 'view': 'bootstrap_setup_import_from_file', 'famfam': 'folder', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]}
link_bootstrap_setup_import_from_url = {'text': _(u'import from URL'), 'view': 'bootstrap_setup_import_from_url', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]}
link_bootstrap_setup_repository_sync = {'text': _(u'sync with repository'), 'view': 'bootstrap_setup_repository_sync', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_REPOSITORY_SYNC]}

View File

@@ -2,15 +2,22 @@ from __future__ import absolute_import
import re
try:
import yaml
except ImportError:
YAML_AVAILABLE = False
else:
YAML_AVAILABLE = True
from django.utils.translation import ugettext_lazy as _
FIXTURE_TYPE_JSON = 'json'
FIXTURE_TYPE_YAML = 'yaml'
FIXTURE_TYPE_BETTER_YAML = 'better_yaml'
FIXTURE_TYPE_XML = 'xml'
FIXTURE_TYPES_CHOICES = (
(FIXTURE_TYPE_JSON, _(u'JSON')),
(FIXTURE_TYPE_YAML, _(u'YAML')),
# Disabing XML until a way to specify a null pk is found
#(FIXTURE_TYPE_XML, _(u'XML')),
)
@@ -18,13 +25,57 @@ FIXTURE_TYPES_CHOICES = (
FIXTURE_FILE_TYPE = {
FIXTURE_TYPE_JSON: 'json',
FIXTURE_TYPE_YAML: 'yaml',
FIXTURE_TYPE_BETTER_YAML: 'better_yaml',
FIXTURE_TYPE_XML: 'xml',
}
FIXTURE_TYPE_PK_NULLIFIER = {
FIXTURE_TYPE_JSON: lambda x: re.sub('"pk": [0-9]{1,5}', '"pk": null', x),
FIXTURE_TYPE_YAML: lambda x: re.sub('pk: [0-9]{1,5}', 'pk: null', x),
FIXTURE_TYPE_BETTER_YAML: lambda x: re.sub('[0-9]{1,5}:', 'null:', x),
FIXTURE_TYPE_XML: lambda x: re.sub('pk="[0-9]{1,5}"', 'pk=null', x),
}
FIXTURE_TYPE_EMPTY_FIXTURE = {
FIXTURE_TYPE_JSON: lambda x: x.startswith('[]') or x == ',',
FIXTURE_TYPE_YAML: lambda x: x.startswith('[]'),
FIXTURE_TYPE_BETTER_YAML: lambda x: x.startswith('{}'),
FIXTURE_TYPE_XML: lambda x: x,
}
FIXTURE_TYPE_MODEL_PROCESS = {
FIXTURE_TYPE_JSON: lambda x: '%s,' % x[2:-2],
FIXTURE_TYPE_YAML: lambda x: x,
FIXTURE_TYPE_BETTER_YAML: lambda x: x,
FIXTURE_TYPE_XML: lambda x: x,
}
FIXTURE_TYPE_FIXTURE_PROCESS = {
FIXTURE_TYPE_JSON: lambda x: '[\n%s\n]' % x[:-1], # Enclose in [], remove last comma
FIXTURE_TYPE_YAML: lambda x: x,
FIXTURE_TYPE_BETTER_YAML: lambda x: x,
FIXTURE_TYPE_XML: lambda x: x,
}
COMMAND_LOADDATA = 'loaddata'
if YAML_AVAILABLE:
FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_YAML, _(u'YAML')),
FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_BETTER_YAML, _(u'Better YAML')),
# better_yaml is not working with natural keys
FIXTURE_METADATA_REMARK_CHARACTER = '#'
DATETIME_STRING_FORMAT = '%a, %d %b %Y %H:%M:%S +0000'
FIXTURE_METADATA_CREATED = 'created'
FIXTURE_METADATA_EDITED = 'edited'
FIXTURE_METADATA_MAYAN_VERSION = 'mayan_edms_version'
FIXTURE_METADATA_FORMAT = 'format'
FIXTURE_METADATA_NAME = 'name'
FIXTURE_METADATA_SLUG = 'slug'
FIXTURE_METADATA_DESCRIPTION = 'description'
BOOTSTRAP_EXTENSION = 'txt'
BOOTSTRAP_SETUP_MAGIC_NUMBER = 'bootstrap setup'
BOOTSTRAP_REPOSITORY_URL = 'http://bootstrap.mayan-edms.com'
BOOTSTRAP_REPOSITORY_INDEX_FILE = '_repo_index.txt'

View File

@@ -3,12 +3,13 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <pkoldamov@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/"
"language/bg/)\n"
@@ -16,112 +17,115 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
msgstr ""
#: links.py:19
msgid "edit"
msgstr "редактиране"
#: api.py:137
msgid "Form"
msgstr ""
#: links.py:20
msgid "delete"
msgstr "изтриване"
#: api.py:138
msgid "Building construction form"
msgstr ""
#: links.py:21
msgid "details"
msgstr "детайли"
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr "изпълнение"
#: links.py:23
msgid "dump current setup"
msgstr "изпринтване на текущата настройка"
#: links.py:24
msgid "erase database"
msgstr "изтриване на база данни"
#: links.py:27
msgid "export"
msgstr ""
#: links.py:11
msgid "erase database"
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr "JSON"
#: literals.py:63
msgid "YAML"
msgstr "YAML"
#: literals.py:64
msgid "Better YAML"
msgstr "Подобрен YAML"
#: models.py:30
msgid "name"
msgstr "име"
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr "описание"
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
"Това са текущите инструкции за създаване на структурата на базата данни."
#: models.py:34 views.py:36
msgid "type"
msgstr "тип"
#: models.py:35
msgid "creation date and time"
msgstr "дата и време на създаване"
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
@@ -129,56 +133,190 @@ msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr "Изтрийте цялата база данни за съхраняване и документното пространство"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:24
msgid "description"
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:45
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
#, fuzzy
msgid "dump current setup into a bootstrap setup"
msgstr "изпринтване на текущата настройка"
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
msgstr "Грешка при изтриване на база данни; %s"
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
msgstr "Базата данни е изтрита успешно."
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
"Сигурен ли сте, че искате да изтриете цялата база данни и документното "
"пространство?"
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-"
"edms/language/de_DE/)\n"
@@ -16,169 +16,302 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,167 +17,300 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:35+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 07:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/"
"language/es/)\n"
@@ -17,175 +17,297 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
msgstr "Simple"
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
"Una configuración simple que proporciona una fecha de metadatos subida y el "
"índice, más un índice alfabético basado en nombres de archivo de documentos."
#: api.py:118
msgid "Upload date"
msgstr "Fecha de envío"
#: api.py:121
msgid "Segmented date index"
msgstr "Índice de la fecha segmentado"
#: api.py:132
msgid "Permits"
msgstr "Permisos"
#: api.py:133
msgid "A setup for handling permits and related documents."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
"Una configuración para el manejo de los permisos y documentos relacionados."
#: api.py:137
msgid "Form"
msgstr "Formulario"
#: links.py:16
msgid "bootstrap"
msgstr "arranque"
#: api.py:138
msgid "Building construction form"
msgstr "Formulario de construcción"
#: links.py:17
msgid "bootstrap setup list"
msgstr "list de configuraciones de arranque"
#: api.py:139
msgid "Building usage form"
msgstr "Formulario de uso"
#: links.py:18
msgid "create new bootstrap setup"
msgstr "crear nueva configuración de arranque"
#: api.py:141
msgid "Blueprint"
msgstr "Planos"
#: links.py:19
msgid "edit"
msgstr "editar"
#: api.py:142
msgid "Floorplan"
msgstr "Plano de edificio"
#: links.py:20
msgid "delete"
msgstr "borrar"
#: api.py:143
msgid "Plot plan"
msgstr "Plano de parcela"
#: links.py:21
msgid "details"
msgstr "detalles"
#: api.py:146
msgid "Date"
msgstr "Fecha"
#: api.py:147
msgid "Client"
msgstr "Cliente"
#: api.py:148
msgid "Permit number"
msgstr "Número de permiso"
#: api.py:149
msgid "Project"
msgstr "Proyecto"
#: api.py:150
msgid "User"
msgstr "Usuario"
#: api.py:153
msgid "Permit index"
msgstr "Indice de permisos"
#: api.py:156 api.py:161
msgid "Per permit"
msgstr "Por permiso"
#: api.py:159
msgid "Per project"
msgstr "Por proyecto"
#: api.py:164
msgid "Per date"
msgstr "Por fecha"
#: api.py:167
msgid "Per user"
msgstr "Por usuario"
#: api.py:170
msgid "Per client"
msgstr "Por cliente"
#: links.py:9
msgid "bootstrap database"
msgstr "arranque de base de datos"
#: links.py:10
#: links.py:22
msgid "execute"
msgstr "ejecutar"
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr "grabar la configuración actual"
#: links.py:24
msgid "erase database"
msgstr "borrar la base de datos"
#: links.py:27
msgid "export"
msgstr "exportar"
#: links.py:28
msgid "import from file"
msgstr "importar desde el archivo"
#: links.py:29
msgid "import from URL"
msgstr "importar desde URL"
#: links.py:30
msgid "sync with repository"
msgstr "sincronizar con el repositorio"
#: literals.py:20
msgid "JSON"
msgstr "JSON"
#: literals.py:63
msgid "YAML"
msgstr "YAML"
#: literals.py:64
msgid "Better YAML"
msgstr "Better YAML"
#: models.py:30
msgid "name"
msgstr "nombre"
#: models.py:31
msgid "slug"
msgstr "identificador"
#: models.py:32 views.py:35
msgid "description"
msgstr "descripción"
#: models.py:33
msgid "fixture"
msgstr "código"
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
"Estas son la instrucciones reales para la creación de las estructuras de la "
"base de datos."
#: models.py:34 views.py:36
msgid "type"
msgstr "tipo"
#: models.py:35
msgid "creation date and time"
msgstr "fecha y hora de creación"
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr "configuración de arranque"
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr "configuraciones de arranque"
#: permissions.py:7
msgid "Database bootstrap"
msgstr "Arranque de base de datos"
#: permissions.py:9
msgid "Execute document bootstraps"
msgstr "Ejecutar arranque de datos de documentos"
msgid "View bootstrap setups"
msgstr "Ver las configuraciones de arranque"
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr "Crear configuraciones de arranque"
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr "Editar las configuraciones de arranque"
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr "Eliminar las configuraciones de arranque"
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr "Ejecutar configuraciones de arranque"
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
"Grabar la configuración actual del projecto en una configuración de arranque"
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr "Borrar toda la base de datos y almacenamiento de documentos"
#: views.py:21
msgid "database bootstrap setups"
msgstr "configuraciones de arranque de bases de datos"
#: registry.py:8
msgid "Bootstrap"
msgstr "Arranque"
#: views.py:24
msgid "description"
msgstr "descripción"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
"Proporciona configuraciones pre ajustadas para los índices, tipos de "
"documentos, etiquetas, etc"
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr "Error al crear la configuración de arranque."
#: views.py:59
msgid "create bootstrap"
msgstr "crear configuración de arranque"
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr "Configuración de arranque editada exitosamente."
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr "Error editando la configuración de arranque."
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr "editar configuración de arranque: %s"
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr "Configuración de arranque :%s eliminada exitosamente."
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr "¿Seguro que desea borrar la configuración de arranque: %s?"
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr "Error al ejecutar la configuración de arranque; %s"
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr "Configuración de arranque \"%s\" ejecutada exitosamente."
#: views.py:51
msgid "bootstrap setup"
msgstr "configuración de arranque"
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
"¿Seguro de que desea ejecutar la configuración de arranque de base de datos "
"llamada: %s?"
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
#, fuzzy
msgid "dump current setup into a bootstrap setup"
msgstr ""
"Grabar la configuración actual del projecto en una configuración de arranque"
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr "Error borrando la base de datos; %s"
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr "Base de datos borrada exitosamente."
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
"¿Está seguro que desea borrar de la base de datos completamente y el "
"almacenamiento de documentos?"
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
@@ -193,3 +315,16 @@ msgstr ""
"¡Todos los documentos, las fuentes, los metadatos, los tipos de metadatos, "
"los conjuntos de metadatos, las etiquetas, los índices y vitacoras se "
"perderán irreversiblemente!"
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -1,185 +1,324 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# <patrick.hetu@gmail.com>, 2012.
# Pierre Lhoste <peter.cathbad.host@gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-07-26 23:54-0400\n"
"PO-Revision-Date: 2012-07-28 19:41+0000\n"
"Last-Translator: Pierre Lhoste <peter.cathbad.host@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/language/fr/)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/"
"language/fr/)\n"
"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"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: api.py:113
msgid "Simple"
msgstr "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
msgstr "Une configuration simple fournissant un l'import d'un index et métadonnées de dates, ainsi qu'un index alphabétique construit à partir des noms de fichiers des documents."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
msgstr "Date d'importation"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
msgstr "Index segmenté des dates"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
msgstr "Permis/Autorisations"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
msgstr "Une configuration permettant gérer les documents de type permis/autorisations et apparentés"
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
msgstr "Fomulaire"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
msgstr "Formulaire de construction"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr "Formulaire d'utilisation"
#: api.py:141
msgid "Blueprint"
msgstr "Plan général"
#: api.py:142
msgid "Floorplan"
msgstr "Plan d'étage"
#: api.py:143
msgid "Plot plan"
msgstr "Plan de parcelle"
#: api.py:146
msgid "Date"
msgstr "Date"
#: api.py:147
msgid "Client"
msgstr "Client"
#: api.py:148
msgid "Permit number"
msgstr "Numéro de permis/autorisation"
#: api.py:149
msgid "Project"
msgstr "Projet"
#: api.py:150
msgid "User"
msgstr "Utilisateur"
#: api.py:153
msgid "Permit index"
msgstr "Index des permis"
#: api.py:156 api.py:161
msgid "Per permit"
msgstr "Par permis/autorisation"
#: api.py:159
msgid "Per project"
msgstr "Par projet"
#: api.py:164
msgid "Per date"
msgstr "Par date"
#: api.py:167
msgid "Per user"
msgstr "Par utilisateur"
#: api.py:170
msgid "Per client"
msgstr "Par client"
#: links.py:9
msgid "bootstrap database"
msgstr "pré-configurer la base de données"
#: links.py:10
#: links.py:22
msgid "execute"
msgstr "exécuter"
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr "Supprimer la base de données"
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr "description"
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr "pré-configuration"
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr "Pré-configuration de base de données"
#: permissions.py:9
msgid "Execute document bootstraps"
msgstr "Exécuter la pré-configuration de documents"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr "Effacer l'ensemble de la base de donnée et tous les documents stockés"
#: views.py:21
msgid "database bootstrap setups"
msgstr "bases de données pré-configurées"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
msgstr "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr "Erreur lors de l'exécution de la pré-configuration; %s"
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr "Pré-configuration \"%s\" effectuée avec succès."
#: views.py:51
msgid "bootstrap setup"
msgstr "pré-configuration"
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgstr "Êtes vous certain de vouloir exécuter la précofiguration de base de données nommée: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
#, fuzzy
msgid "dump current setup into a bootstrap setup"
msgstr "Erreur lors de l'exécution de la pré-configuration; %s"
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr "Erreur lors de l'effacement de la base de données; %s"
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr "Base de Données effacée avec succès."
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr "Êtes vous certain de vouloir effacer l'intégralité de la base de données et des documents stockés?"
msgstr ""
"Êtes vous certain de vouloir effacer l'intégralité de la base de données et "
"des documents stockés?"
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr "Tous les documents, sources, métadonnées, types de métadonnées, jeux, étiquettes, indexes et logs seron définitivement perdus!"
msgstr ""
"Tous les documents, sources, métadonnées, types de métadonnées, jeux, "
"étiquettes, indexes et logs seron définitivement perdus!"
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/"
"language/it/)\n"
@@ -16,169 +16,302 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
"mayan-edms/language/nl_NL/)\n"
@@ -16,169 +16,302 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/"
"language/pl/)\n"
@@ -17,169 +17,302 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2)\n"
"|| n%100>=20) ? 1 : 2);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/"
"language/pt/)\n"
@@ -16,169 +16,302 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
"mayan-edms/language/pt_BR/)\n"
@@ -16,169 +16,302 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-07-27 00:45-0400\n"
"PO-Revision-Date: 2012-07-27 04:09+0000\n"
"POT-Creation-Date: 2012-12-14 04:18-0400\n"
"PO-Revision-Date: 2012-12-12 06:04+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/"
"language/ru/)\n"
@@ -17,169 +17,302 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: api.py:113
msgid "Simple"
#: forms.py:50
msgid "Bootstrap setup file"
msgstr ""
#: api.py:114
msgid ""
"A simple setup providing an uploaded date metadata and index plus an "
"alphabetic index based on document filenames."
#: forms.py:56
msgid "Bootstrap setup URL"
msgstr ""
#: api.py:118
msgid "Upload date"
#: links.py:16
msgid "bootstrap"
msgstr ""
#: api.py:121
msgid "Segmented date index"
#: links.py:17
msgid "bootstrap setup list"
msgstr ""
#: api.py:132
msgid "Permits"
#: links.py:18
msgid "create new bootstrap setup"
msgstr ""
#: api.py:133
msgid "A setup for handling permits and related documents."
#: links.py:19
msgid "edit"
msgstr ""
#: api.py:137
msgid "Form"
#: links.py:20
msgid "delete"
msgstr ""
#: api.py:138
msgid "Building construction form"
#: links.py:21
msgid "details"
msgstr ""
#: api.py:139
msgid "Building usage form"
msgstr ""
#: api.py:141
msgid "Blueprint"
msgstr ""
#: api.py:142
msgid "Floorplan"
msgstr ""
#: api.py:143
msgid "Plot plan"
msgstr ""
#: api.py:146
msgid "Date"
msgstr ""
#: api.py:147
msgid "Client"
msgstr ""
#: api.py:148
msgid "Permit number"
msgstr ""
#: api.py:149
msgid "Project"
msgstr ""
#: api.py:150
msgid "User"
msgstr ""
#: api.py:153
msgid "Permit index"
msgstr ""
#: api.py:156 api.py:161
msgid "Per permit"
msgstr ""
#: api.py:159
msgid "Per project"
msgstr ""
#: api.py:164
msgid "Per date"
msgstr ""
#: api.py:167
msgid "Per user"
msgstr ""
#: api.py:170
msgid "Per client"
msgstr ""
#: links.py:9
msgid "bootstrap database"
msgstr ""
#: links.py:10
#: links.py:22
msgid "execute"
msgstr ""
#: links.py:11
#: links.py:23
msgid "dump current setup"
msgstr ""
#: links.py:24
msgid "erase database"
msgstr ""
#: links.py:27
msgid "export"
msgstr ""
#: links.py:28
msgid "import from file"
msgstr ""
#: links.py:29
msgid "import from URL"
msgstr ""
#: links.py:30
msgid "sync with repository"
msgstr ""
#: literals.py:20
msgid "JSON"
msgstr ""
#: literals.py:63
msgid "YAML"
msgstr ""
#: literals.py:64
msgid "Better YAML"
msgstr ""
#: models.py:30
msgid "name"
msgstr ""
#: models.py:31
msgid "slug"
msgstr ""
#: models.py:32 views.py:35
msgid "description"
msgstr ""
#: models.py:33
msgid "fixture"
msgstr ""
#: models.py:33
msgid "These are the actual database structure creation instructions."
msgstr ""
#: models.py:34 views.py:36
msgid "type"
msgstr ""
#: models.py:35
msgid "creation date and time"
msgstr ""
#: models.py:104 views.py:91 views.py:120 views.py:145 views.py:173
msgid "bootstrap setup"
msgstr ""
#: models.py:105 views.py:32
msgid "bootstrap setups"
msgstr ""
#: permissions.py:7
msgid "Database bootstrap"
msgstr ""
#: permissions.py:9
msgid "Execute document bootstraps"
msgid "View bootstrap setups"
msgstr ""
#: permissions.py:10
msgid "Create bootstrap setups"
msgstr ""
#: permissions.py:11
msgid "Edit bootstrap setups"
msgstr ""
#: permissions.py:12
msgid "Delete bootstrap setups"
msgstr ""
#: permissions.py:13
msgid "Execute bootstrap setups"
msgstr ""
#: permissions.py:14
msgid "Dump the current project\\s setup into a bootstrap setup"
msgstr ""
#: permissions.py:15
msgid "Export bootstrap setups as files"
msgstr ""
#: permissions.py:16
msgid "Import new bootstrap setups"
msgstr ""
#: permissions.py:17
msgid "Sync the local bootstrap setups with a published repository"
msgstr ""
#: permissions.py:18
msgid "Erase the entire database and document storage"
msgstr ""
#: views.py:21
msgid "database bootstrap setups"
#: registry.py:8
msgid "Bootstrap"
msgstr ""
#: views.py:24
msgid "description"
#: registry.py:9
msgid "Provides pre configured setups for indexes, document types, tags, etc."
msgstr ""
#: views.py:45
#: views.py:51
msgid "Bootstrap setup created successfully"
msgstr ""
#: views.py:54
msgid "Error creating bootstrap setup."
msgstr ""
#: views.py:59
msgid "create bootstrap"
msgstr ""
#: views.py:79
msgid "Bootstrap setup edited successfully"
msgstr ""
#: views.py:82
msgid "Error editing bootstrap setup."
msgstr ""
#: views.py:87
#, python-format
msgid "edit bootstrap setup: %s"
msgstr ""
#: views.py:112
#, python-format
msgid "Bootstrap setup: %s deleted successfully."
msgstr ""
#: views.py:114
#, python-format
msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s"
msgstr ""
#: views.py:125
#, python-format
msgid "Are you sure you with to delete the bootstrap setup: %s?"
msgstr ""
#: views.py:165
msgid ""
"Cannot execute bootstrap setup, there is existing data. Erase all data and "
"try again."
msgstr ""
#: views.py:167
#, python-format
msgid "Error executing bootstrap setup; %s"
msgstr ""
#: views.py:47
#: views.py:169
#, python-format
msgid "Bootstrap setup \"%s\" executed successfully."
msgstr ""
#: views.py:51
msgid "bootstrap setup"
msgstr ""
#: views.py:59
#: views.py:181
#, python-format
msgid "Are you sure you wish to execute the database bootstrap named: %s?"
msgid ""
"Are you sure you wish to execute the database bootstrap setup named: %s?"
msgstr ""
#: views.py:77
#: views.py:197
#, python-format
msgid "Error dumping configuration into a bootstrap setup; %s"
msgstr ""
#: views.py:201
msgid "Bootstrap setup created successfully."
msgstr ""
#: views.py:207
msgid "dump current setup into a bootstrap setup"
msgstr ""
#: views.py:241 views.py:269
msgid "Bootstrap setup imported successfully."
msgstr ""
#: views.py:244
msgid "File is not a bootstrap setup."
msgstr ""
#: views.py:246
#, python-format
msgid "Error importing bootstrap setup from file; %s."
msgstr ""
#: views.py:252
msgid "Import bootstrap setup from file"
msgstr ""
#: views.py:272
msgid "Data from URL is not a bootstrap setup."
msgstr ""
#: views.py:274
#, python-format
msgid "Error importing bootstrap setup from URL; %s."
msgstr ""
#: views.py:280
msgid "Import bootstrap setup from URL"
msgstr ""
#: views.py:299
#, python-format
msgid "Error erasing database; %s"
msgstr ""
#: views.py:79
#: views.py:301
msgid "Database erased successfully."
msgstr ""
#: views.py:89
#: views.py:311
msgid ""
"Are you sure you wish to erase the entire database and document storage?"
msgstr ""
#: views.py:90
#: views.py:312
msgid ""
"All documents, sources, metadata, metadata types, set, tags, indexes and "
"logs will be lost irreversibly!"
msgstr ""
#: views.py:329
msgid "Bootstrap repository successfully synchronized."
msgstr ""
#: views.py:331
#, python-format
msgid "Bootstrap repository synchronization error: %(error)s"
msgstr ""
#: views.py:338
msgid "Are you sure you wish to synchronize with the bootstrap repository?"
msgstr ""

View File

View File

@@ -0,0 +1,64 @@
from __future__ import absolute_import
from optparse import make_option
from django.db import models, router, connections, DEFAULT_DB_ALIAS
from django.core.management import call_command
from django.core.management.base import NoArgsCommand, CommandError
from django.core.management.color import no_style
from django.core.management.sql import emit_post_sync_signal
from ...classes import Cleanup
class Command(NoArgsCommand):
option_list = NoArgsCommand.option_list + (
make_option('--noinput', action='store_false', dest='interactive', default=True,
help='Tells Django to NOT prompt the user for input of any kind.'),
make_option('--database', action='store', dest='database',
default=DEFAULT_DB_ALIAS, help='Nominates a database to erase. '
'Defaults to the "default" database.'),
)
help = 'Erases all data in a Mayan EDMS installation.'
def handle_noargs(self, **options):
db = options.get('database', DEFAULT_DB_ALIAS)
connection = connections[db]
verbosity = int(options.get('verbosity', 1))
interactive = options.get('interactive')
self.style = no_style()
if interactive:
confirm = raw_input("""You have requested a erase all the data in the current Mayan EDMS installation.
This will IRREVERSIBLY ERASE all user data currently in the database,
and return each table to the state it was in after syncdb.
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: """)
else:
confirm = 'yes'
if confirm == 'yes':
try:
Cleanup.execute_all()
except Exception, e:
raise CommandError("""Unable to erase data. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the expected database tables doesn't exist.""")
# Emit the post sync signal. This allows individual
# applications to respond as if the database had been
# sync'd from scratch.
all_models = []
for app in models.get_apps():
all_models.extend([
m for m in models.get_models(app, include_auto_created=True)
if router.allow_syncdb(db, m)
])
emit_post_sync_signal(set(all_models), verbosity, interactive, db)
# Reinstall the initial_data fixture.
kwargs = options.copy()
kwargs['database'] = db
else:
print 'Erase data cancelled.'

View File

@@ -0,0 +1,31 @@
from __future__ import absolute_import
from optparse import make_option
from django.core.management.base import BaseCommand, CommandError
from ...models import BootstrapSetup
from ...exceptions import ExistingData
class Command(BaseCommand):
help = 'Execute a bootstrap setup by the given slug.'
args = '[bootstrap setup slug]'
def handle(self, bootstrap_setup_slug=None, **options):
if not bootstrap_setup_slug:
raise CommandError('Enter one bootstrap setup slug.')
# Get corresponding bootstrap setup instance
try:
bootstrap_setup = BootstrapSetup.objects.get(slug=bootstrap_setup_slug)
except BootstrapSetup.DoesNotExist:
raise CommandError('No bootstrap setup with such a slug.')
# Try to execute bootstrap setup, catch errors
try:
bootstrap_setup.execute()
except ExistingData:
raise CommandError('Cannot execute bootstrap setup, there is existing data. Erase all data and try again.')
except Exception as exception:
raise CommandError('Unhandled exception: %s' % exception)

View File

@@ -2,35 +2,73 @@ from __future__ import absolute_import
import logging
#try:
# from cStringIO import StringIO
#except ImportError:
# from StringIO import StringIO
import requests
from django.db import models
from django.core import serializers
from django.utils.simplejson import loads
from django.db import IntegrityError
from django.db.models import Q
from .classes import BootstrapModel
from .classes import BootstrapModel, FixtureMetadata
from .literals import (FIXTURE_TYPE_FIXTURE_PROCESS, FIXTURE_TYPE_EMPTY_FIXTURE,
BOOTSTRAP_REPOSITORY_URL, BOOTSTRAP_REPOSITORY_INDEX_FILE)
logger = logging.getLogger(__name__)
class BootstrapSetupManager(models.Manager):
def explode(self, data):
"""
Gets a compressed and compacted bootstrap setup and creates a new
database BootstrapSetup instance
"""
pass
def dump(self, serialization_format):
"""
Get the current setup of Mayan in bootstrap format fixture
"""
result = []
#models = [instance.get_fullname()
for bootstrap_model in BootstrapModel.get_all():
#logger.debug('models: %s' % models)
#options = dict(indent=4, format=format, use_natural_keys=True, interactive=False, verbosity=0, stdout=result)
#management.call_command(COMMAND_DUMPDATA, *models, **options)
#logger.debug('result: %s' % result)
result.append(bootstrap_model.dump(serialization_format))
#return result.read()
return '\n'.join(result)
logger.debug('start dumping data')
for bootstrap_model in BootstrapModel.get_all(sort_by_dependencies=True):
logger.debug('dumping model: %s' % bootstrap_model.get_fullname())
model_fixture = bootstrap_model.dump(serialization_format)
# Only add non empty model fixtures
if not FIXTURE_TYPE_EMPTY_FIXTURE[serialization_format](model_fixture):
result.append(model_fixture)
return FIXTURE_TYPE_FIXTURE_PROCESS[serialization_format]('\n'.join(result))
def import_setup(self, file_data, overwrite=False):
BootstrapModel.check_magic_number(file_data)
metadata = FixtureMetadata.read_all(file_data)
instance = self.model(fixture=file_data, **metadata)
try:
instance.save(update_metadata=False)
except IntegrityError:
if not overwrite:
raise
else:
# Delete conflicting bootstrap setups
query = Q()
if 'slug' in metadata:
query = query | Q(slug=metadata['slug'])
if 'name' in metadata:
query = query | Q(name=metadata['name'])
self.model.objects.filter(query).delete()
self.import_setup(file_data)
def import_from_file(self, files):
file_data = files.read()
self.import_setup(file_data)
def import_from_url(self, url, **kwargs):
response = requests.get(url)
if response.status_code == requests.codes.ok:
self.import_setup(response.text, **kwargs)
else:
response.raise_for_status()
def repository_sync(self):
response = requests.get('%s/%s' % (BOOTSTRAP_REPOSITORY_URL, BOOTSTRAP_REPOSITORY_INDEX_FILE))
if response.status_code == requests.codes.ok:
for entry in loads(response.text):
bootstrap_setup_url = '%s/%s' % (BOOTSTRAP_REPOSITORY_URL, entry['filename'])
self.import_from_url(bootstrap_setup_url, overwrite=True)
else:
response.raise_for_status()

View File

@@ -14,6 +14,7 @@ class Migration(SchemaMigration):
('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)),
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
('fixture', self.gf('django.db.models.fields.TextField')()),
('type', self.gf('django.db.models.fields.CharField')(max_length=16)),
))
db.send_create_signal('bootstrap', ['BootstrapSetup'])
@@ -25,12 +26,13 @@ class Migration(SchemaMigration):
models = {
'bootstrap.bootstrapsetup': {
'Meta': {'object_name': 'BootstrapSetup'},
'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'},
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'fixture': ('django.db.models.fields.TextField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'})
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
'type': ('django.db.models.fields.CharField', [], {'max_length': '16'})
}
}
complete_apps = ['bootstrap']
complete_apps = ['bootstrap']

View File

@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'BootstrapSetup.created'
db.add_column('bootstrap_bootstrapsetup', 'created',
self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 10, 8, 0, 0)),
keep_default=False)
def backwards(self, orm):
# Deleting field 'BootstrapSetup.created'
db.delete_column('bootstrap_bootstrapsetup', 'created')
models = {
'bootstrap.bootstrapsetup': {
'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'},
'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 8, 0, 0)'}),
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'fixture': ('django.db.models.fields.TextField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
'type': ('django.db.models.fields.CharField', [], {'max_length': '16'})
}
}
complete_apps = ['bootstrap']

View File

@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Adding field 'BootstrapSetup.slug'
db.add_column('bootstrap_bootstrapsetup', 'slug',
self.gf('django.db.models.fields.SlugField')(default='', unique=True, max_length=128, blank=True),
keep_default=False)
def backwards(self, orm):
# Deleting field 'BootstrapSetup.slug'
db.delete_column('bootstrap_bootstrapsetup', 'slug')
models = {
'bootstrap.bootstrapsetup': {
'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'},
'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 16, 0, 0)'}),
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'fixture': ('django.db.models.fields.TextField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'blank': 'True'}),
'type': ('django.db.models.fields.CharField', [], {'max_length': '16'})
}
}
complete_apps = ['bootstrap']

View File

@@ -2,14 +2,25 @@ from __future__ import absolute_import
import os
import tempfile
import re
import datetime
import slugify
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.core import management
from django.core.files.uploadedfile import SimpleUploadedFile
from .literals import (FIXTURE_TYPES_CHOICES, FIXTURE_FILE_TYPE, COMMAND_LOADDATA)
from .literals import (FIXTURE_TYPES_CHOICES, FIXTURE_FILE_TYPE, COMMAND_LOADDATA,
BOOTSTRAP_EXTENSION, FIXTURE_METADATA_REMARK_CHARACTER)
from .managers import BootstrapSetupManager
from .classes import BootstrapModel
from .classes import BootstrapModel, FixtureMetadata
class BootstrapSetup(models.Model):
@@ -17,9 +28,11 @@ class BootstrapSetup(models.Model):
Model to store the fixture for a pre configured setup.
"""
name = models.CharField(max_length=128, verbose_name=_(u'name'), unique=True)
slug = models.SlugField(max_length=128, verbose_name=_(u'slug'), unique=True, blank=True)
description = models.TextField(verbose_name=_(u'description'), blank=True)
fixture = models.TextField(verbose_name=_(u'fixture'), help_text=_(u'These are the actual database structure creation instructions.'))
type = models.CharField(max_length=16, verbose_name=_(u'type'), choices=FIXTURE_TYPES_CHOICES)
created = models.DateTimeField(verbose_name=_('creation date and time'), default=lambda: datetime.datetime.now(), editable=False)
objects = BootstrapSetupManager()
@@ -27,9 +40,16 @@ class BootstrapSetup(models.Model):
return self.name
def get_extension(self):
"""
Return the fixture file extension based on the fixture type.
"""
return FIXTURE_FILE_TYPE[self.type]
def execute(self):
"""
Read a bootstrap's fixture and create the corresponding model
instances based on it.
"""
BootstrapModel.check_for_data()
handle, filepath = tempfile.mkstemp()
# Just need the filepath, close the file description
@@ -38,19 +58,46 @@ class BootstrapSetup(models.Model):
filepath = os.path.extsep.join([filepath, self.get_extension()])
with open(filepath, 'w') as file_handle:
file_handle.write(self.fixture)
file_handle.write(self.cleaned_fixture)
content = StringIO()
management.call_command(COMMAND_LOADDATA, filepath, verbosity=0, stderr=content)
content.seek(0, os.SEEK_END)
if content.tell():
content.seek(0)
raise Exception(content.readlines()[-2])
management.call_command(COMMAND_LOADDATA, filepath, verbosity=0)
os.unlink(filepath)
def compress(self):
@property
def cleaned_fixture(self):
"""
Return a compacted and compressed version of the BootstrapSetup
instance, meant for download.
Return the bootstrap setup's fixture without comments.
"""
return ''
return re.sub(re.compile('%s.*?\n' % FIXTURE_METADATA_REMARK_CHARACTER), '', self.fixture)
def get_metadata_string(self):
"""
Return all the metadata for the current bootstrap fixture.
"""
return FixtureMetadata.generate_all(self)
def get_filename(self):
return os.extsep.join([self.name, BOOTSTRAP_EXTENSION])
def as_file(self):
return SimpleUploadedFile(name=self.get_filename(), content=self.fixture)
def save(self, *args, **kwargs):
update_metadata = kwargs.pop('update_metadata', True)
if update_metadata:
self.fixture = '%s\n%s\n%s' % (
BootstrapModel.get_magic_number(),
self.get_metadata_string(),
self.cleaned_fixture
)
if not self.slug:
self.slug = slugify.slugify(self.name)
return super(BootstrapSetup, self).save(*args, **kwargs)
class Meta:

View File

@@ -12,4 +12,7 @@ PERMISSION_BOOTSTRAP_EDIT = Permission.objects.register(namespace, 'bootstrap_ed
PERMISSION_BOOTSTRAP_DELETE = Permission.objects.register(namespace, 'bootstrap_delete', _(u'Delete bootstrap setups'))
PERMISSION_BOOTSTRAP_EXECUTE = Permission.objects.register(namespace, 'bootstrap_execute', _(u'Execute bootstrap setups'))
PERMISSION_BOOTSTRAP_DUMP = Permission.objects.register(namespace, 'bootstrap_dump', _(u'Dump the current project\s setup into a bootstrap setup'))
PERMISSION_BOOTSTRAP_EXPORT = Permission.objects.register(namespace, 'bootstrap_export', _(u'Export bootstrap setups as files'))
PERMISSION_BOOTSTRAP_IMPORT = Permission.objects.register(namespace, 'bootstrap_import', _(u'Import new bootstrap setups'))
PERMISSION_BOOTSTRAP_REPOSITORY_SYNC = Permission.objects.register(namespace, 'bootstrap_repo_sync', _(u'Sync the local bootstrap setups with a published repository'))
PERMISSION_NUKE_DATABASE = Permission.objects.register(namespace, 'nuke_database', _(u'Erase the entire database and document storage'))

View File

@@ -1,12 +1,29 @@
from __future__ import absolute_import
import datetime
from navigation.api import bind_links
from main import __version__
from .links import (link_bootstrap_setup_create, link_bootstrap_setup_execute,
link_bootstrap_setup_list, link_bootstrap_setup_edit, link_bootstrap_setup_delete,
link_bootstrap_setup_view, link_bootstrap_setup_dump)
link_bootstrap_setup_view, link_bootstrap_setup_dump, link_bootstrap_setup_export,
link_bootstrap_setup_import_from_url, link_bootstrap_setup_import_from_file,
link_bootstrap_setup_repository_sync)
from .models import BootstrapSetup
from .classes import FixtureMetadata
from .literals import (FIXTURE_METADATA_CREATED, FIXTURE_METADATA_EDITED,
FIXTURE_METADATA_MAYAN_VERSION, FIXTURE_METADATA_FORMAT, FIXTURE_METADATA_NAME,
FIXTURE_METADATA_DESCRIPTION, DATETIME_STRING_FORMAT, FIXTURE_METADATA_SLUG)
bind_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute])
bind_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump], menu_name='secondary_menu')
bind_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump], menu_name='secondary_menu')
bind_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute, link_bootstrap_setup_export])
bind_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
bind_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump', 'bootstrap_setup_import_from_file', 'bootstrap_setup_import_from_url', 'bootstrap_setup_repository_sync'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu')
FixtureMetadata(FIXTURE_METADATA_CREATED, generate_function=lambda fixture_instance: fixture_instance.created.strftime(DATETIME_STRING_FORMAT), read_function=lambda x: datetime.datetime.strptime(x, DATETIME_STRING_FORMAT), property_name='created')
FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instance: datetime.datetime.now().strftime(DATETIME_STRING_FORMAT))
FixtureMetadata(FIXTURE_METADATA_MAYAN_VERSION, generate_function=lambda fixture_instance: __version__)
FixtureMetadata(FIXTURE_METADATA_FORMAT, generate_function=lambda fixture_instance: fixture_instance.type, property_name='type')
FixtureMetadata(FIXTURE_METADATA_NAME, generate_function=lambda fixture_instance: fixture_instance.name, property_name='name')
FixtureMetadata(FIXTURE_METADATA_SLUG, generate_function=lambda fixture_instance: fixture_instance.slug, property_name='slug')
FixtureMetadata(FIXTURE_METADATA_DESCRIPTION, generate_function=lambda fixture_instance: fixture_instance.description, property_name='description')

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -7,6 +7,10 @@ urlpatterns = patterns('bootstrap.views',
url(r'^setup/(?P<bootstrap_setup_pk>\d+)/delete/$', 'bootstrap_setup_delete', (), 'bootstrap_setup_delete'),
url(r'^setup/(?P<bootstrap_setup_pk>\d+)/$', 'bootstrap_setup_view', (), 'bootstrap_setup_view'),
url(r'^setup/(?P<bootstrap_setup_pk>\d+)/execute/$', 'bootstrap_setup_execute', (), 'bootstrap_setup_execute'),
url(r'^setup/(?P<bootstrap_setup_pk>\d+)/export/$', 'bootstrap_setup_export', (), 'bootstrap_setup_export'),
url(r'^setup/dump/$', 'bootstrap_setup_dump', (), 'bootstrap_setup_dump'),
url(r'^setup/import/file/$', 'bootstrap_setup_import_from_file', (), 'bootstrap_setup_import_from_file'),
url(r'^setup/import/url/$', 'bootstrap_setup_import_from_url', (), 'bootstrap_setup_import_from_url'),
url(r'^setup/repository/sync/$', 'bootstrap_setup_repository_sync', (), 'bootstrap_setup_repository_sync'),
url(r'^nuke/$', 'erase_database_view', (), 'erase_database_view'),
)

View File

@@ -1 +1,40 @@
## {{{ http://code.activestate.com/recipes/578272/ (r1)
def toposort2(data):
"""Dependencies are expressed as a dictionary whose keys are items
and whose values are a set of dependent items. Output is a list of
sets in topological order. The first set consists of items with no
dependences, each subsequent set consists of items that depend upon
items in the preceeding sets.
>>> print '\\n'.join(repr(sorted(x)) for x in toposort2({
... 2: set([11]),
... 9: set([11,8]),
... 10: set([11,3]),
... 11: set([7,5]),
... 8: set([7,3]),
... }) )
[3, 5, 7]
[8, 11]
[2, 9, 10]
"""
from functools import reduce
# Ignore self dependencies.
for k, v in data.items():
v.discard(k)
# Find all items that don't depend on anything.
extra_items_in_deps = reduce(set.union, data.itervalues()) - set(data.iterkeys())
# Add empty dependences where needed
data.update({item:set() for item in extra_items_in_deps})
while True:
ordered = set(item for item, dep in data.iteritems() if not dep)
if not ordered:
break
yield ordered
data = {item: (dep - ordered)
for item, dep in data.iteritems()
if item not in ordered}
assert not data, "Cyclic dependencies exist among these items:\n%s" % '\n'.join(repr(x) for x in data.iteritems())
## end of http://code.activestate.com/recipes/578272/ }}}

View File

@@ -6,6 +6,9 @@ from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.core.files import File
from filetransfers.api import serve_file
from permissions.models import Permission
@@ -13,10 +16,12 @@ from .models import BootstrapSetup
from .classes import Cleanup, BootstrapModel
from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE,
PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE,
PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_DUMP)
PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_DUMP,
PERMISSION_BOOTSTRAP_EXPORT, PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC)
from .icons import icon_bootstrap_setup_execute, icon_nuke_database, icon_bootstrap_setup_delete
from .forms import BootstrapSetupForm, BootstrapSetupForm_view, BootstrapSetupForm_dump
from .exceptions import ExistingData
from .forms import (BootstrapSetupForm, BootstrapSetupForm_view, BootstrapSetupForm_dump,
BootstrapSetupForm_edit, BootstrapFileImportForm, BootstrapURLImportForm)
from .exceptions import ExistingData, NotABootstrapSetup
def bootstrap_setup_list(request):
@@ -43,7 +48,7 @@ def bootstrap_setup_create(request):
form = BootstrapSetupForm(request.POST)
if form.is_valid():
bootstrap = form.save()
messages.success(request, _(u'Bootstrap created successfully'))
messages.success(request, _(u'Bootstrap setup created successfully'))
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
else:
messages.error(request, _(u'Error creating bootstrap setup.'))
@@ -68,7 +73,7 @@ def bootstrap_setup_edit(request, bootstrap_setup_pk):
AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_EDIT, request.user, bootstrap)
if request.method == 'POST':
form = BootstrapSetupForm(instance=bootstrap, data=request.POST)
form = BootstrapSetupForm_edit(instance=bootstrap, data=request.POST)
if form.is_valid():
form.save()
messages.success(request, _(u'Bootstrap setup edited successfully'))
@@ -76,7 +81,7 @@ def bootstrap_setup_edit(request, bootstrap_setup_pk):
else:
messages.error(request, _(u'Error editing bootstrap setup.'))
else:
form = BootstrapSetupForm(instance=bootstrap)
form = BootstrapSetupForm_edit(instance=bootstrap)
return render_to_response('generic_form.html', {
'title': _(u'edit bootstrap setup: %s') % bootstrap,
@@ -106,7 +111,7 @@ def bootstrap_setup_delete(request, bootstrap_setup_pk):
bootstrap.delete()
messages.success(request, _(u'Bootstrap setup: %s deleted successfully.') % bootstrap)
except Exception, e:
messages.error(request, _(u'Bootstrap setup: %(bootstrap)s delete error: %(error)s') % {
messages.error(request, _(u'Bootstrap setup: %(bootstrap)s, delete error: %(error)s') % {
'bootstrap': bootstrap, 'error': e})
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
@@ -157,7 +162,7 @@ def bootstrap_setup_execute(request, bootstrap_setup_pk):
try:
bootstrap_setup.execute()
except ExistingData:
messages.error(request, _(u'Cannot execute bootstrap setup, there is existing data. Erase database and try again.'))
messages.error(request, _(u'Cannot execute bootstrap setup, there is existing data. Erase all data and try again.'))
except Exception, exc:
messages.error(request, _(u'Error executing bootstrap setup; %s') % exc)
else:
@@ -173,7 +178,7 @@ def bootstrap_setup_execute(request, bootstrap_setup_pk):
'object': bootstrap_setup,
}
context['title'] = _(u'Are you sure you wish to execute the database bootstrap named: %s?') % bootstrap_setup
context['title'] = _(u'Are you sure you wish to execute the database bootstrap setup named: %s?') % bootstrap_setup
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))
@@ -189,11 +194,11 @@ def bootstrap_setup_dump(request):
try:
bootstrap.fixture = BootstrapSetup.objects.dump(serialization_format=bootstrap.type)
except Exception as exception:
messages.error(request, _(u'Error dumping bootstrap setup; %s') % exception)
messages.error(request, _(u'Error dumping configuration into a bootstrap setup; %s') % exception)
raise
else:
bootstrap.save()
messages.success(request, _(u'Bootstrap created successfully.'))
messages.success(request, _(u'Bootstrap setup created successfully.'))
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
else:
form = BootstrapSetupForm_dump()
@@ -205,6 +210,80 @@ def bootstrap_setup_dump(request):
context_instance=RequestContext(request))
def bootstrap_setup_export(request, bootstrap_setup_pk):
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
bootstrap = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_EXPORT])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_EXPORT, request.user, bootstrap)
return serve_file(
request,
bootstrap.as_file(),
save_as=u'"%s"' % bootstrap.get_filename(),
content_type='text/plain; charset=us-ascii'
)
def bootstrap_setup_import_from_file(request):
Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_IMPORT])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
if request.method == 'POST':
form = BootstrapFileImportForm(request.POST, request.FILES)
if form.is_valid():
try:
BootstrapSetup.objects.import_from_file(request.FILES['file'])
messages.success(request, _(u'Bootstrap setup imported successfully.'))
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
except NotABootstrapSetup:
messages.error(request, _(u'File is not a bootstrap setup.'))
except Exception as exception:
messages.error(request, _(u'Error importing bootstrap setup from file; %s.') % exception)
return HttpResponseRedirect(previous)
else:
form = BootstrapFileImportForm()
return render_to_response('generic_form.html', {
'title': _(u'Import bootstrap setup from file'),
'form_icon': 'folder.png',
'form': form,
'previous': previous,
}, context_instance=RequestContext(request))
def bootstrap_setup_import_from_url(request):
Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_IMPORT])
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
if request.method == 'POST':
form = BootstrapURLImportForm(request.POST, request.FILES)
if form.is_valid():
try:
BootstrapSetup.objects.import_from_url(form.cleaned_data['url'])
messages.success(request, _(u'Bootstrap setup imported successfully.'))
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
except NotABootstrapSetup:
messages.error(request, _(u'Data from URL is not a bootstrap setup.'))
except Exception as exception:
messages.error(request, _(u'Error importing bootstrap setup from URL; %s.') % exception)
return HttpResponseRedirect(previous)
else:
form = BootstrapURLImportForm()
return render_to_response('generic_form.html', {
'title': _(u'Import bootstrap setup from URL'),
'form_icon': 'folder.png',
'form': form,
'previous': previous,
}, context_instance=RequestContext(request))
def erase_database_view(request):
Permission.objects.check_permissions(request.user, [PERMISSION_NUKE_DATABASE])
@@ -234,3 +313,31 @@ def erase_database_view(request):
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))
def bootstrap_setup_repository_sync(request):
Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_REPOSITORY_SYNC])
post_action_redirect = reverse('bootstrap_setup_list')
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
if request.method == 'POST':
try:
BootstrapSetup.objects.repository_sync()
messages.success(request, _(u'Bootstrap repository successfully synchronized.'))
except Exception, e:
messages.error(request, _(u'Bootstrap repository synchronization error: %(error)s') % {'error': e})
return HttpResponseRedirect(reverse('bootstrap_setup_list'))
context = {
'previous': previous,
'next': next,
'title': _(u'Are you sure you wish to synchronize with the bootstrap repository?'),
'form_icon': 'world.png',
}
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))