Merge branch 'hotfix/v0.12.2' into development

Conflicts:
	apps/common/__init__.py
	apps/documents/forms.py
	apps/feedback/__init__.py
	apps/history/__init__.py
	apps/main/__init__.py
	apps/scheduler/api.py
	apps/sources/models.py
	docs/releases/index.rst
	requirements/production.txt
	settings.py
	urls.py
This commit is contained in:
Roberto Rosario
2012-06-30 04:00:01 -04:00
438 changed files with 12762 additions and 4473 deletions

View File

@@ -6,6 +6,7 @@ trans.pt = apps/converter/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/converter/locale/ru/LC_MESSAGES/django.po
trans.it = apps/converter/locale/it/LC_MESSAGES/django.po
trans.pl = apps/converter/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/converter/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-common]
source_file = apps/common/locale/en/LC_MESSAGES/django.po
@@ -15,6 +16,7 @@ trans.pt = apps/common/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/common/locale/ru/LC_MESSAGES/django.po
trans.it = apps/common/locale/it/LC_MESSAGES/django.po
trans.pl = apps/common/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/common/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-permissions]
source_file = apps/permissions/locale/en/LC_MESSAGES/django.po
@@ -24,6 +26,7 @@ trans.pt = apps/permissions/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/permissions/locale/ru/LC_MESSAGES/django.po
trans.it = apps/permissions/locale/it/LC_MESSAGES/django.po
trans.pl = apps/permissions/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/permissions/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-sources]
source_file = apps/sources/locale/en/LC_MESSAGES/django.po
@@ -33,6 +36,7 @@ trans.pt = apps/sources/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/sources/locale/ru/LC_MESSAGES/django.po
trans.it = apps/sources/locale/it/LC_MESSAGES/django.po
trans.pl = apps/sources/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/sources/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-document_indexing]
source_file = apps/document_indexing/locale/en/LC_MESSAGES/django.po
@@ -42,6 +46,7 @@ trans.pt = apps/document_indexing/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/document_indexing/locale/ru/LC_MESSAGES/django.po
trans.it = apps/document_indexing/locale/it/LC_MESSAGES/django.po
trans.pl = apps/document_indexing/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-user_management]
source_file = apps/user_management/locale/en/LC_MESSAGES/django.po
@@ -51,6 +56,7 @@ trans.pt = apps/user_management/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/user_management/locale/ru/LC_MESSAGES/django.po
trans.it = apps/user_management/locale/it/LC_MESSAGES/django.po
trans.pl = apps/user_management/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/user_management/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-main]
source_file = apps/main/locale/en/LC_MESSAGES/django.po
@@ -60,6 +66,7 @@ trans.pt = apps/main/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/main/locale/ru/LC_MESSAGES/django.po
trans.it = apps/main/locale/it/LC_MESSAGES/django.po
trans.pl = apps/main/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/main/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-ocr]
source_file = apps/ocr/locale/en/LC_MESSAGES/django.po
@@ -69,6 +76,7 @@ trans.pt = apps/ocr/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/ocr/locale/ru/LC_MESSAGES/django.po
trans.it = apps/ocr/locale/it/LC_MESSAGES/django.po
trans.pl = apps/ocr/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/ocr/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-project_setup]
source_file = apps/project_setup/locale/en/LC_MESSAGES/django.po
@@ -78,6 +86,7 @@ trans.pt = apps/project_setup/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/project_setup/locale/ru/LC_MESSAGES/django.po
trans.it = apps/project_setup/locale/it/LC_MESSAGES/django.po
trans.pl = apps/project_setup/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/project_setup/locale/de_DE/LC_MESSAGES/django.po
[main]
host = https://www.transifex.net
@@ -90,6 +99,7 @@ trans.pt = apps/folders/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/folders/locale/ru/LC_MESSAGES/django.po
trans.it = apps/folders/locale/it/LC_MESSAGES/django.po
trans.pl = apps/folders/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/folders/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-history]
source_file = apps/history/locale/en/LC_MESSAGES/django.po
@@ -99,6 +109,7 @@ trans.pt = apps/history/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/history/locale/ru/LC_MESSAGES/django.po
trans.it = apps/history/locale/it/LC_MESSAGES/django.po
trans.pl = apps/history/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/history/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-dynamic_search]
source_file = apps/dynamic_search/locale/en/LC_MESSAGES/django.po
@@ -108,6 +119,7 @@ trans.pt = apps/dynamic_search/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/dynamic_search/locale/ru/LC_MESSAGES/django.po
trans.it = apps/dynamic_search/locale/it/LC_MESSAGES/django.po
trans.pl = apps/dynamic_search/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-smart_settings]
source_file = apps/smart_settings/locale/en/LC_MESSAGES/django.po
@@ -117,6 +129,7 @@ trans.pt = apps/smart_settings/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/smart_settings/locale/ru/LC_MESSAGES/django.po
trans.it = apps/smart_settings/locale/it/LC_MESSAGES/django.po
trans.pl = apps/smart_settings/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-navigation]
source_file = apps/navigation/locale/en/LC_MESSAGES/django.po
@@ -126,6 +139,7 @@ trans.pt = apps/navigation/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/navigation/locale/ru/LC_MESSAGES/django.po
trans.it = apps/navigation/locale/it/LC_MESSAGES/django.po
trans.pl = apps/navigation/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/navigation/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-tags]
source_file = apps/tags/locale/en/LC_MESSAGES/django.po
@@ -135,6 +149,7 @@ trans.pt = apps/tags/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/tags/locale/ru/LC_MESSAGES/django.po
trans.it = apps/tags/locale/it/LC_MESSAGES/django.po
trans.pl = apps/tags/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/tags/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-documents]
source_file = apps/documents/locale/en/LC_MESSAGES/django.po
@@ -144,6 +159,7 @@ trans.pt = apps/documents/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/documents/locale/ru/LC_MESSAGES/django.po
trans.it = apps/documents/locale/it/LC_MESSAGES/django.po
trans.pl = apps/documents/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/documents/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-project_tools]
source_file = apps/project_tools/locale/en/LC_MESSAGES/django.po
@@ -153,6 +169,7 @@ trans.pt = apps/project_tools/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/project_tools/locale/ru/LC_MESSAGES/django.po
trans.it = apps/project_tools/locale/it/LC_MESSAGES/django.po
trans.pl = apps/project_tools/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/project_tools/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-linking]
source_file = apps/linking/locale/en/LC_MESSAGES/django.po
@@ -162,6 +179,7 @@ trans.pt = apps/linking/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/linking/locale/ru/LC_MESSAGES/django.po
trans.it = apps/linking/locale/it/LC_MESSAGES/django.po
trans.pl = apps/linking/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/linking/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-document_comments]
source_file = apps/document_comments/locale/en/LC_MESSAGES/django.po
@@ -171,6 +189,7 @@ trans.pt = apps/document_comments/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/document_comments/locale/ru/LC_MESSAGES/django.po
trans.it = apps/document_comments/locale/it/LC_MESSAGES/django.po
trans.pl = apps/document_comments/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/document_comments/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-metadata]
source_file = apps/metadata/locale/en/LC_MESSAGES/django.po
@@ -180,6 +199,7 @@ trans.pt = apps/metadata/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/metadata/locale/ru/LC_MESSAGES/django.po
trans.it = apps/metadata/locale/it/LC_MESSAGES/django.po
trans.pl = apps/metadata/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/metadata/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-web_theme]
source_file = apps/web_theme/locale/en/LC_MESSAGES/django.po
@@ -189,6 +209,7 @@ trans.pt = apps/web_theme/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/web_theme/locale/ru/LC_MESSAGES/django.po
trans.it = apps/web_theme/locale/it/LC_MESSAGES/django.po
trans.pl = apps/web_theme/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/web_theme/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-django_gpg]
source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po
@@ -198,6 +219,7 @@ trans.pt = apps/django_gpg/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/django_gpg/locale/ru/LC_MESSAGES/django.po
trans.it = apps/django_gpg/locale/it/LC_MESSAGES/django.po
trans.pl = apps/django_gpg/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-document_signatures]
source_file = apps/document_signatures/locale/en/LC_MESSAGES/django.po
@@ -207,6 +229,7 @@ trans.pt = apps/document_signatures/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/document_signatures/locale/ru/LC_MESSAGES/django.po
trans.it = apps/document_signatures/locale/it/LC_MESSAGES/django.po
trans.pl = apps/document_signatures/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-acls]
source_file = apps/acls/locale/en/LC_MESSAGES/django.po
@@ -216,12 +239,24 @@ trans.pt = apps/acls/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/acls/locale/ru/LC_MESSAGES/django.po
trans.it = apps/acls/locale/it/LC_MESSAGES/django.po
trans.pl = apps/acls/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/acls/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-feedback]
source_file = apps/feedback/locale/en/LC_MESSAGES/django.po
[mayan-edms.apps-installation]
source_file = apps/installation/locale/en/LC_MESSAGES/django.po
source_lang = en
trans.es = apps/feedback/locale/es/LC_MESSAGES/django.po
trans.pt = apps/feedback/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/feedback/locale/ru/LC_MESSAGES/django.po
trans.it = apps/feedback/locale/it/LC_MESSAGES/django.po
trans.pl = apps/feedback/locale/pl/LC_MESSAGES/django.po
trans.es = apps/installation/locale/es/LC_MESSAGES/django.po
trans.pt = apps/installation/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/installation/locale/ru/LC_MESSAGES/django.po
trans.it = apps/installation/locale/it/LC_MESSAGES/django.po
trans.pl = apps/installation/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/installation/locale/de_DE/LC_MESSAGES/django.po
[mayan-edms.apps-scheduler]
source_file = apps/scheduler/locale/en/LC_MESSAGES/django.po
source_lang = en
trans.es = apps/scheduler/locale/es/LC_MESSAGES/django.po
trans.pt = apps/scheduler/locale/pt/LC_MESSAGES/django.po
trans.ru = apps/scheduler/locale/ru/LC_MESSAGES/django.po
trans.it = apps/scheduler/locale/it/LC_MESSAGES/django.po
trans.pl = apps/scheduler/locale/pl/LC_MESSAGES/django.po
trans.de_DE = apps/scheduler/locale/de_DE/LC_MESSAGES/django.po

View File

@@ -1,11 +1,13 @@
![screenshot](https://github.com/rosarior/mayan/raw/master/docs/_static/mayan_logo_landscape_black.jpg)
![Logo](https://github.com/rosarior/mayan/raw/master/docs/_static/mayan_logo_landscape_black.jpg)
Mayan
=====
Mayan EDMS
==========
Open source, Django based document manager with custom metadata indexing, file serving integration and OCR capabilities.
Open source, Django based document management system with custom metadata
indexing, file serving integration, tagging, digital signature verification,
text parsing and OCR capabilities.
[Website](http://bit.ly/mayan-edms)
[Website](http://www.mayan-edms.com)
[Video demostration](http://bit.ly/pADNXv)
@@ -40,7 +42,7 @@ This project is open sourced under [GNU GPL Version 3](http://www.gnu.org/licens
Author
------
Roberto Rosario - [Twitter](http://twitter.com/#siloraptor) [E-mail](mailto://roberto.rosario_at_gmail)
Roberto Rosario - [Twitter](http://twitter.com/#siloraptor) [E-mail](mailto://roberto.rosario@mayan-edms.com)
Donations

Binary file not shown.

View File

@@ -0,0 +1,242 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <tilmann.sittig@web.de>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-06-10 13:06+0000\n"
"Last-Translator: tilmannsittig <tilmann.sittig@web.de>\n"
"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14
msgid "ACLs"
msgstr "ACLs"
#: __init__.py:15 __init__.py:23
msgid "details"
msgstr "Details"
#: __init__.py:16 __init__.py:25
msgid "grant"
msgstr "Erlauben"
#: __init__.py:17 __init__.py:26
msgid "revoke"
msgstr "Entziehen"
#: __init__.py:18 __init__.py:24 forms.py:21
msgid "New holder"
msgstr "Neuer Berechtigter"
#: __init__.py:20
msgid "Default ACLs"
msgstr "Standard-ACLs"
#: __init__.py:21
msgid "List of classes"
msgstr "Liste der Klassen"
#: __init__.py:22
msgid "ACLs for class"
msgstr "ACLs für Klasse"
#: forms.py:38
msgid "Users"
msgstr "Benutzer"
#: forms.py:41
msgid "Groups"
msgstr "Gruppen"
#: forms.py:44
msgid "Roles"
msgstr "Rollen"
#: forms.py:47
msgid "Special"
msgstr ""
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr "Unzureichender Zugriff."
#: models.py:25 models.py:67
msgid "permission"
msgstr "Berechtigung"
#: models.py:51
msgid "access entry"
msgstr "Zugriffsberechtigungseintrag"
#: models.py:52
msgid "access entries"
msgstr "Zugriffsberechtigungseinträge"
#: models.py:88
msgid "default access entry"
msgstr "Standard-Zugriffsberechtigungseintrag"
#: models.py:89
msgid "default access entries"
msgstr "Standard-Zugriffsberechtigungseinträge"
#: models.py:108
msgid "Creator"
msgstr ""
#: models.py:111 models.py:112
msgid "creator"
msgstr ""
#: permissions.py:7 permissions.py:8
msgid "Access control lists"
msgstr "Zugriffs-Berechtigungs-Listen (ACLs)"
#: permissions.py:10
msgid "Edit ACLs"
msgstr "ACLs bearbeiten"
#: permissions.py:11
msgid "View ACLs"
msgstr "ACLs anzeigen"
#: permissions.py:13
msgid "Edit class default ACLs"
msgstr "Standard-ACLs für Klasse bearbeiten"
#: permissions.py:14
msgid "View class default ACLs"
msgstr "Standard-ACLs für Klasse anzeigen"
#: views.py:47
#, python-format
msgid "access control lists for: %s"
msgstr "Standard-ACLs für: %s"
#: views.py:49 views.py:409
msgid "holder"
msgstr "Berechtigter"
#: views.py:50 views.py:410
msgid "permissions"
msgstr "Berechtigungen"
#: views.py:97
#, python-format
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr "verfügbare Berechtigungen: %(actor)s für %(obj)s "
#: views.py:104 views.py:442
msgid "namespace"
msgstr "Namensraum"
#: views.py:105 views.py:443
msgid "label"
msgstr "Bezeichner"
#: views.py:107 views.py:445
msgid "has permission"
msgstr "hat die Berechtigung"
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ""
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr "für %s"
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr "zu %s"
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr "Sind Sie sicher, dass Sie Berechtigung %(title_suffix)s erteilen möchten?"
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr "Sind Sie sicher, dass Sie Berechtigungen %(title_suffix)s erteilen möchten?"
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr ""
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr ""
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr "von %s"
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr "Sind Sie sicher, dass Sie Berechtigung %(title_suffix)s enziehen möchten?"
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr "Sind Sie sicher, dass Sie Berechtigungen %(title_suffix)s enziehen möchten?"
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr ""
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr ""
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr "neuen Berechtigten für %s hinzufügen"
#: views.py:354 views.py:486
msgid "Select"
msgstr ""
#: views.py:386
msgid "classes"
msgstr "Klassen"
#: views.py:388
msgid "class"
msgstr "Klasse"
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr ""
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr ""
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:03-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"
@@ -65,35 +65,35 @@ msgstr ""
msgid "Special"
msgstr ""
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr ""
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr ""
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr ""
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr ""
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr ""
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr ""
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr ""
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr ""
@@ -122,11 +122,11 @@ msgstr ""
msgid "access control lists for: %s"
msgstr ""
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr ""
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr ""
@@ -135,107 +135,107 @@ msgstr ""
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr ""
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr ""
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr ""
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr ""
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ""
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr ""
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr ""
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr ""
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr ""
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr ""
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr ""
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr ""
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr ""
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr ""
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr ""
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr ""
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr ""
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr ""
#: views.py:388
#: views.py:386
msgid "classes"
msgstr ""
#: views.py:390
#: views.py:388
msgid "class"
msgstr ""
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr ""
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr ""
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr ""

View File

@@ -7,16 +7,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-12 00:16+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14
@@ -67,35 +66,35 @@ msgstr "Funciones"
msgid "Special"
msgstr "Especial"
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr "Acceso insuficiente."
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr "permiso"
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr "entrada de acceso"
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr "entradas de acceso"
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr "entrada de acceso por defecto"
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr "entradas de acceso por defecto"
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr "Creador"
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr "creador"
@@ -124,11 +123,11 @@ msgstr "Ver LCA por defecto de la clase"
msgid "access control lists for: %s"
msgstr "listas de control de acceso para: %s"
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr "titular"
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr "permisos"
@@ -137,108 +136,107 @@ msgstr "permisos"
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr "permisos disponibles a: %(actor)s para %(obj)s "
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr "espacio de nombres"
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr "etiqueta"
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr "tiene permiso"
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ", "
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr " para %s"
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr " a %s"
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr "¿Está seguro que desea conceder el permiso %(title_suffix)s?"
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr "¿Está seguro que desea conceder los permisos de %(title_suffix)s?"
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr "Permiso \"%(permission)s\" otorgado a %(actor)s para %(object)s."
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr ""
"%(actor)s, ya tenía el permiso \"%(permission)s\", otorgado para %(object)s."
msgstr "%(actor)s, ya tenía el permiso \"%(permission)s\", otorgado para %(object)s."
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr " de %s"
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr "¿Está seguro que desea revocar el permiso %(title_suffix)s?"
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr "¿Está seguro de querer revocar los permisos %(title_suffix)s?"
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr "Permiso \"%(permission)s\" revocado del %(actor)s para %(object)s."
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr "%(actor)s, no tenía el permiso \"%(permission)s\" para %(object)s."
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr "añadir nuevo titular para: %s"
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr "Seleccionar"
#: views.py:388
#: views.py:386
msgid "classes"
msgstr "clases"
#: views.py:390
#: views.py:388
msgid "class"
msgstr "clase"
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr "listas de control de acceso por defecto para la clase: %s"
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr "permisos disponibles para: %(actor)s para la clase %(class)s "
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr "añadir nuevo titular para la clase: %s"

View File

@@ -3,15 +3,16 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Carlo Zanatto <>, 2012.
# Pierpaolo Baldan <pierpaolo.baldan@gmail.com>, 2012.
# Roberto Rosario <roberto.rosario.gonzalez@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-02-12 15:20-0400\n"
"PO-Revision-Date: 2012-03-21 14:55+0000\n"
"Last-Translator: Pierpaolo Baldan <pierpaolo.baldan@gmail.com>\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-06-08 07:20+0000\n"
"Last-Translator: Carlo Zanatto <>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -29,7 +30,7 @@ msgstr "dettagli"
#: __init__.py:16 __init__.py:25
msgid "grant"
msgstr "concedere"
msgstr "permetti"
#: __init__.py:17 __init__.py:26
msgid "revoke"
@@ -67,35 +68,35 @@ msgstr "Ruoli"
msgid "Special"
msgstr "Speciale"
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr "Accesso insufficiente."
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr "autorizzazione"
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr "voce di accesso"
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr "voci di accesso"
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr "accesso voce predefinita"
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr "voci di accesso predefinite "
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr "Creatore"
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr "creatore"
@@ -124,11 +125,11 @@ msgstr "Visualizza classi ACL predefinite"
msgid "access control lists for: %s"
msgstr "lista controllo accessi per: %s"
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr "titolare"
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr "le autorizzazioni"
@@ -137,107 +138,107 @@ msgstr "le autorizzazioni"
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr "autorizzazioni disponibili per: %(actor)s per %(obj)s "
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr "namespace"
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr "etichetta"
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr "ha l'autorizzazione"
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ", "
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr "per %s"
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr "a %s"
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr "Sei sicuro di voler concedere l'autorizzazione %(title_suffix)s?"
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr "Sei sicuro di voler concedere permessi %(title_suffix)s?"
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr "Permesso \"%(permission)s\" concesso%(actor)s per %(object)s."
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr "%(actor)s, ha già i permessi\"%(permission)s\" concessi per%(object)s."
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr "da %s"
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr "Sei sicuro di voler revocare l'autorizzazione %(title_suffix)s?"
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr "Sei sicuro di voler revocare permessi %(title_suffix)s?"
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr "Permessi \"%(permission)s\" revocati al %(actor)s per %(object)s."
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr "%(actor)s, non ha i permessi\"%(permission)s\" per %(object)s."
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr "aggiungi nuovo titolare per: %s"
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr "Selezionare"
#: views.py:388
#: views.py:386
msgid "classes"
msgstr "classi"
#: views.py:390
#: views.py:388
msgid "class"
msgstr "classe"
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr "lista di default per il controllo accessi per la classe: %s"
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr "permessi disponibili per: %(actor)s per la classe %(class)s"
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr "aggiungi un nuovo titolare per la calsse: %s"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-01-02 09:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n"
@@ -65,35 +65,35 @@ msgstr ""
msgid "Special"
msgstr ""
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr ""
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr ""
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr ""
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr ""
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr ""
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr ""
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr ""
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr ""
@@ -122,11 +122,11 @@ msgstr ""
msgid "access control lists for: %s"
msgstr ""
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr ""
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr ""
@@ -135,107 +135,107 @@ msgstr ""
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr ""
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr ""
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr ""
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr ""
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ""
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr ""
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr ""
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr ""
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr ""
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr ""
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr ""
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr ""
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr ""
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr ""
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr ""
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr ""
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr ""
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr ""
#: views.py:388
#: views.py:386
msgid "classes"
msgstr ""
#: views.py:390
#: views.py:388
msgid "class"
msgstr ""
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr ""
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr ""
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr ""

View File

@@ -6,16 +6,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/"
"team/pt/)\n"
"Language: pt\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14
@@ -66,35 +65,35 @@ msgstr ""
msgid "Special"
msgstr ""
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr ""
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr ""
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr ""
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr ""
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr ""
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr ""
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr ""
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr ""
@@ -123,11 +122,11 @@ msgstr ""
msgid "access control lists for: %s"
msgstr ""
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr ""
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr ""
@@ -136,107 +135,107 @@ msgstr ""
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr ""
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr ""
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr ""
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr ""
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ""
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr ""
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr ""
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr ""
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr ""
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr ""
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr ""
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr ""
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr ""
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr ""
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr ""
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr ""
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr ""
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr ""
#: views.py:388
#: views.py:386
msgid "classes"
msgstr ""
#: views.py:390
#: views.py:388
msgid "class"
msgstr ""
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr ""
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr ""
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-27 04:26+0000\n"
"Last-Translator: Sergey Glita <gsv70@mail.ru>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n"
@@ -66,35 +66,35 @@ msgstr "Роли"
msgid "Special"
msgstr "Специальный"
#: managers.py:116 managers.py:128
#: managers.py:118 managers.py:130
msgid "Insufficient access."
msgstr "Недостаточный доступ."
#: models.py:27 models.py:69
#: models.py:25 models.py:67
msgid "permission"
msgstr "разрешение"
#: models.py:53
#: models.py:51
msgid "access entry"
msgstr "запись доступа"
#: models.py:54
#: models.py:52
msgid "access entries"
msgstr "записи доступа"
#: models.py:90
#: models.py:88
msgid "default access entry"
msgstr "запись доступа по умолчанию"
#: models.py:91
#: models.py:89
msgid "default access entries"
msgstr "записи доступа по умолчанию"
#: models.py:109
#: models.py:108
msgid "Creator"
msgstr "Создатель"
#: models.py:112 models.py:113
#: models.py:111 models.py:112
msgid "creator"
msgstr "создатель"
@@ -123,11 +123,11 @@ msgstr "Просмотр списков ACL класса по умолчанию
msgid "access control lists for: %s"
msgstr "списки контроля доступа для %s"
#: views.py:49 views.py:411
#: views.py:49 views.py:409
msgid "holder"
msgstr "владелец"
#: views.py:50 views.py:412
#: views.py:50 views.py:410
msgid "permissions"
msgstr "разрешения"
@@ -136,107 +136,107 @@ msgstr "разрешения"
msgid "permissions available to: %(actor)s for %(obj)s"
msgstr "разрешения, доступные %(actor)s для %(obj)s"
#: views.py:104 views.py:444
#: views.py:104 views.py:442
msgid "namespace"
msgstr "пространство имен"
#: views.py:105 views.py:445
#: views.py:105 views.py:443
msgid "label"
msgstr "этикетка"
#: views.py:107 views.py:447
#: views.py:107 views.py:445
msgid "has permission"
msgstr "имеет разрешение"
#: views.py:185 views.py:279 views.py:528 views.py:608
#: views.py:184 views.py:277 views.py:525 views.py:604
msgid ", "
msgstr ","
#: views.py:186 views.py:280 views.py:529 views.py:609
#: views.py:185 views.py:278 views.py:526 views.py:605
#, python-format
msgid " for %s"
msgstr "для %s"
#: views.py:187 views.py:530
#: views.py:186 views.py:527
#, python-format
msgid " to %s"
msgstr "до %s"
#: views.py:190 views.py:533
#: views.py:189 views.py:530
#, python-format
msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
msgstr "Вы действительно хотите предоставить разрешение %(title_suffix)s?"
#: views.py:192 views.py:535
#: views.py:191 views.py:532
#, python-format
msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
msgstr "Вы уверены, что хотите предоставить разрешения %(title_suffix)s?"
#: views.py:199 views.py:542
#: views.py:198 views.py:539
#, python-format
msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
msgstr "Право \"%(permission)s\" проедоставлено %(actor)s для %(object)s."
#: views.py:205 views.py:548
#: views.py:204 views.py:545
#, python-format
msgid ""
"%(actor)s, already had the permission \"%(permission)s\" granted for "
"%(object)s."
msgstr "%(actor)s, уже имеет право \"%(permission)s\" для %(object)s."
#: views.py:281 views.py:610
#: views.py:279 views.py:606
#, python-format
msgid " from %s"
msgstr "от%s"
#: views.py:284 views.py:613
#: views.py:282 views.py:609
#, python-format
msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
msgstr "Вы уверены, что хотите отменить разрешение %(title_suffix)s?"
#: views.py:286 views.py:615
#: views.py:284 views.py:611
#, python-format
msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
msgstr "Вы уверены, что хотите отменить разрешение %(title_suffix)s?"
#: views.py:293 views.py:622
#: views.py:291 views.py:618
#, python-format
msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
msgstr "Право \"%(permission)s\" для %(object)s отозвано у %(actor)s."
#: views.py:299 views.py:628
#: views.py:297 views.py:624
#, python-format
msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
msgstr "%(actor)s не имеет права \"%(permission)s\" для %(object)s."
#: views.py:355
#: views.py:353
#, python-format
msgid "add new holder for: %s"
msgstr "добавить нового владельца для %s"
#: views.py:356 views.py:488
#: views.py:354 views.py:486
msgid "Select"
msgstr "Выбор"
#: views.py:388
#: views.py:386
msgid "classes"
msgstr "классы"
#: views.py:390
#: views.py:388
msgid "class"
msgstr "класс"
#: views.py:409
#: views.py:407
#, python-format
msgid "default access control lists for class: %s"
msgstr "списки контроля доступа умолчанию для класса %s"
#: views.py:437
#: views.py:435
#, python-format
msgid "permissions available to: %(actor)s for class %(class)s"
msgstr "разрешения доступные %(actor)s для класса %(class)s"
#: views.py:486
#: views.py:484
#, python-format
msgid "add new holder for class: %s"
msgstr "добавить нового владельца для класса %s"

View File

@@ -0,0 +1,48 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from navigation.api import (register_links, register_top_menu,
register_multi_item_links, register_sidebar_template)
from scheduler.api import register_interval_job
from documents.models import Document
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from acls.api import class_permissions
from history.api import register_history_type
from .permissions import (PERMISSION_DOCUMENT_CHECKOUT,
PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE,
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE)
from .links import checkout_list, checkout_document, checkout_info, checkin_document
from .models import DocumentCheckout
from .tasks import task_check_expired_check_outs
from .events import (HISTORY_DOCUMENT_CHECKED_OUT, HISTORY_DOCUMENT_CHECKED_IN,
HISTORY_DOCUMENT_AUTO_CHECKED_IN, HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
def initialize_document_checkout_extra_methods():
Document.add_to_class('is_checked_out', lambda document: DocumentCheckout.objects.is_document_checked_out(document))
Document.add_to_class('check_in', lambda document, user=None: DocumentCheckout.objects.check_in_document(document, user))
Document.add_to_class('checkout_info', lambda document: DocumentCheckout.objects.document_checkout_info(document))
Document.add_to_class('checkout_state', lambda document: DocumentCheckout.objects.document_checkout_state(document))
Document.add_to_class('is_new_versions_allowed', lambda document, user=None: DocumentCheckout.objects.is_document_new_versions_allowed(document, user))
register_top_menu(name='checkouts', link=checkout_list)
register_links(Document, [checkout_info], menu_name='form_header')
register_links(['checkout_info', 'checkout_document', 'checkin_document'], [checkout_document, checkin_document], menu_name="sidebar")
class_permissions(Document, [
PERMISSION_DOCUMENT_CHECKOUT,
PERMISSION_DOCUMENT_CHECKIN,
PERMISSION_DOCUMENT_CHECKIN_OVERRIDE,
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE
])
CHECK_EXPIRED_CHECK_OUTS_INTERVAL=60 # Lowest check out expiration allowed
register_interval_job('task_check_expired_check_outs', _(u'Check expired check out documents and checks them in.'), task_check_expired_check_outs, seconds=CHECK_EXPIRED_CHECK_OUTS_INTERVAL)
initialize_document_checkout_extra_methods()
register_history_type(HISTORY_DOCUMENT_CHECKED_OUT)
register_history_type(HISTORY_DOCUMENT_CHECKED_IN)
register_history_type(HISTORY_DOCUMENT_AUTO_CHECKED_IN)
register_history_type(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)

28
apps/checkouts/events.py Normal file
View File

@@ -0,0 +1,28 @@
from django.utils.translation import ugettext_lazy as _
HISTORY_DOCUMENT_CHECKED_OUT = {
'namespace': 'checkouts', 'name': 'document_checked_out',
'label': _(u'Document checked out'),
'summary': _(u'Document "%(document)s" checked out by %(fullname)s.'),
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
}
HISTORY_DOCUMENT_CHECKED_IN = {
'namespace': 'checkouts', 'name': 'document_checked_in',
'label': _(u'Document checked in'),
'summary': _(u'Document "%(document)s" checked in by %(fullname)s.'),
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
}
HISTORY_DOCUMENT_AUTO_CHECKED_IN = {
'namespace': 'checkouts', 'name': 'document_auto_checked_in',
'label': _(u'Document automatically checked in'),
'summary': _(u'Document "%(document)s" automatically checked in.'),
}
HISTORY_DOCUMENT_FORCEFUL_CHECK_IN = {
'namespace': 'checkouts', 'name': 'document_forefull_check_in',
'label': _(u'Document forcefully checked in'),
'summary': _(u'Document "%(document)s" forcefully checked in by %(fullname)s.'),
'expressions': {'fullname': 'user.get_full_name() if user.get_full_name() else user'}
}

View File

@@ -0,0 +1,11 @@
class DocumentNotCheckedOut(Exception):
"""
Raised when trying to checkin a document that is not checkedout
"""
pass
class DocumentAlreadyCheckedOut(Exception):
"""
Raised when trying to checkout an already checkedout document
"""
pass

26
apps/checkouts/forms.py Normal file
View File

@@ -0,0 +1,26 @@
from __future__ import absolute_import
from django import forms
from django.utils.translation import ugettext_lazy as _
from .models import DocumentCheckout
from .exceptions import DocumentAlreadyCheckedOut
from .widgets import SplitTimeDeltaField
class DocumentCheckoutForm(forms.ModelForm):
expiration_datetime = SplitTimeDeltaField()
class Meta:
model = DocumentCheckout
exclude = ('checkout_datetime', 'user_content_type', 'user_object_id')
widgets = {
'document': forms.widgets.HiddenInput(),
}
def clean_document(self):
document = self.cleaned_data['document']
if document.is_checked_out():
raise DocumentAlreadyCheckedOut
return document

21
apps/checkouts/links.py Normal file
View File

@@ -0,0 +1,21 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from documents.permissions import PERMISSION_DOCUMENT_VIEW
from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE)
def is_checked_out(context):
return context['object'].is_checked_out()
def is_not_checked_out(context):
return not context['object'].is_checked_out()
checkout_list = {'text': _(u'checkouts'), 'view': 'checkout_list', 'famfam': 'basket'}
checkout_document = {'text': _('check out document'), 'view': 'checkout_document', 'args': 'object.pk', 'famfam': 'basket_put', 'condition': is_not_checked_out, 'permissions': [PERMISSION_DOCUMENT_CHECKOUT]}
checkin_document = {'text': _('check in document'), 'view': 'checkin_document', 'args': 'object.pk', 'famfam': 'basket_remove', 'condition': is_checked_out, 'permissions': [PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE]}
checkout_info = {'text': _('check in/out'), 'view': 'checkout_info', 'args': 'object.pk', 'famfam': 'basket', 'children_views': ['checkout_document', 'checkin_document'], 'permissions': [PERMISSION_DOCUMENT_CHECKIN, PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, PERMISSION_DOCUMENT_CHECKOUT]}

View File

@@ -0,0 +1,16 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
STATE_CHECKED_OUT = 'checkedout'
STATE_CHECKED_IN = 'checkedin'
STATE_ICONS = {
STATE_CHECKED_OUT: 'basket_put.png',
STATE_CHECKED_IN: 'traffic_lights_green.png',
}
STATE_LABELS = {
STATE_CHECKED_OUT: _(u'checked out'),
STATE_CHECKED_IN: _(u'checked in/available'),
}

101
apps/checkouts/managers.py Normal file
View File

@@ -0,0 +1,101 @@
from __future__ import absolute_import
import datetime
import logging
from django.db import models
from django.core.exceptions import PermissionDenied
from documents.models import Document
from history.api import create_history
from permissions.models import Permission
from acls.models import AccessEntry
from .exceptions import DocumentNotCheckedOut
from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN
from .events import (HISTORY_DOCUMENT_CHECKED_IN, HISTORY_DOCUMENT_AUTO_CHECKED_IN,
HISTORY_DOCUMENT_FORCEFUL_CHECK_IN)
from .permissions import PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE
from history.api import create_history
logger = logging.getLogger(__name__)
class DocumentCheckoutManager(models.Manager):
def checked_out_documents(self):
return Document.objects.filter(pk__in=self.model.objects.all().values_list('document__pk', flat=True))
def expired_check_outs(self):
expired_list = Document.objects.filter(pk__in=self.model.objects.filter(expiration_datetime__lte=datetime.datetime.now()).values_list('document__pk', flat=True))
logger.debug('expired_list: %s' % expired_list)
return expired_list
def check_in_expired_check_outs(self):
for document in self.expired_check_outs():
document.check_in()
def is_document_checked_out(self, document):
if self.model.objects.filter(document=document):
return True
else:
return False
def check_in_document(self, document, user=None):
try:
document_checkout = self.model.objects.get(document=document)
except self.model.DoesNotExist:
raise DocumentNotCheckedOut
else:
if user:
if self.document_checkout_info(document).user_object != user:
create_history(HISTORY_DOCUMENT_FORCEFUL_CHECK_IN, source_object=document, data={'user': user, 'document': document})
else:
create_history(HISTORY_DOCUMENT_CHECKED_IN, source_object=document, data={'user': user, 'document': document})
else:
create_history(HISTORY_DOCUMENT_AUTO_CHECKED_IN, source_object=document, data={'document': document})
document_checkout.delete()
def document_checkout_info(self, document):
try:
return self.model.objects.get(document=document)
except self.model.DoesNotExist:
raise DocumentNotCheckedOut
def document_checkout_state(self, document):
if self.is_document_checked_out(document):
return STATE_CHECKED_OUT
else:
return STATE_CHECKED_IN
def is_document_new_versions_allowed(self, document, user=None):
try:
checkout_info = self.document_checkout_info(document)
except DocumentNotCheckedOut:
return True
else:
if not user:
return not checkout_info.block_new_version
else:
if user.is_staff or user.is_superuser:
# Allow anything to superusers and staff
return True
if user == checkout_info.user_object:
# Allow anything to the user who checked out this document
True
else:
# If not original user check to see if user has global or this document's PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE permission
try:
Permission.objects.check_permissions(user, [PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE])
except PermissionDenied:
try:
AccessEntry.objects.check_accesses([PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE], user, document)
except PermissionDenied:
# Last resort check if original user enabled restriction
return not checkout_info.block_new_version
else:
return True
else:
return True

View File

@@ -0,0 +1,122 @@
# -*- 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 model 'DocumentCheckout'
db.create_table('checkouts_documentcheckout', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('document', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['documents.Document'], unique=True)),
('checkout_datetime', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 6, 13, 0, 0))),
('expiration_datetime', self.gf('django.db.models.fields.DateTimeField')()),
('block_new_version', self.gf('django.db.models.fields.BooleanField')(default=False)),
))
db.send_create_signal('checkouts', ['DocumentCheckout'])
def backwards(self, orm):
# Deleting model 'DocumentCheckout'
db.delete_table('checkouts_documentcheckout')
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'checkouts.documentcheckout': {
'Meta': {'object_name': 'DocumentCheckout'},
'block_new_version': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'checkout_datetime': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 6, 13, 0, 0)'}),
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']", 'unique': 'True'}),
'expiration_datetime': ('django.db.models.fields.DateTimeField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
'comments.comment': {
'Meta': {'ordering': "('submit_date',)", 'object_name': 'Comment', 'db_table': "'django_comments'"},
'comment': ('django.db.models.fields.TextField', [], {'max_length': '3000'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_comment'", 'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_removed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'object_pk': ('django.db.models.fields.TextField', [], {}),
'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
'submit_date': ('django.db.models.fields.DateTimeField', [], {'default': 'None'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_comments'", 'null': 'True', 'to': "orm['auth.User']"}),
'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'user_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
'user_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
},
'documents.document': {
'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentType']", 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '48', 'blank': 'True'})
},
'documents.documenttype': {
'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
},
'sites.site': {
'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'taggit.tag': {
'Meta': {'object_name': 'Tag'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '100'})
},
'taggit.taggeditem': {
'Meta': {'object_name': 'TaggedItem'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_tagged_items'", 'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_items'", 'to': "orm['taggit.Tag']"})
}
}
complete_apps = ['checkouts']

View File

@@ -0,0 +1,133 @@
# -*- 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 'DocumentCheckout.user_content_type'
db.add_column('checkouts_documentcheckout', 'user_content_type',
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True, blank=True),
keep_default=False)
# Adding field 'DocumentCheckout.user_object_id'
db.add_column('checkouts_documentcheckout', 'user_object_id',
self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True),
keep_default=False)
# Changing field 'DocumentCheckout.checkout_datetime'
db.alter_column('checkouts_documentcheckout', 'checkout_datetime', self.gf('django.db.models.fields.DateTimeField')(null=True))
def backwards(self, orm):
# Deleting field 'DocumentCheckout.user_content_type'
db.delete_column('checkouts_documentcheckout', 'user_content_type_id')
# Deleting field 'DocumentCheckout.user_object_id'
db.delete_column('checkouts_documentcheckout', 'user_object_id')
# Changing field 'DocumentCheckout.checkout_datetime'
db.alter_column('checkouts_documentcheckout', 'checkout_datetime', self.gf('django.db.models.fields.DateTimeField')())
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'checkouts.documentcheckout': {
'Meta': {'object_name': 'DocumentCheckout'},
'block_new_version': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'checkout_datetime': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']", 'unique': 'True'}),
'expiration_datetime': ('django.db.models.fields.DateTimeField', [], {}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'user_content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}),
'user_object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'})
},
'comments.comment': {
'Meta': {'ordering': "('submit_date',)", 'object_name': 'Comment', 'db_table': "'django_comments'"},
'comment': ('django.db.models.fields.TextField', [], {'max_length': '3000'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_comment'", 'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_removed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'object_pk': ('django.db.models.fields.TextField', [], {}),
'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}),
'submit_date': ('django.db.models.fields.DateTimeField', [], {'default': 'None'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_comments'", 'null': 'True', 'to': "orm['auth.User']"}),
'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'user_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
'user_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
},
'documents.document': {
'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'},
'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentType']", 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'uuid': ('django.db.models.fields.CharField', [], {'max_length': '48', 'blank': 'True'})
},
'documents.documenttype': {
'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '32'})
},
'sites.site': {
'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"},
'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'taggit.tag': {
'Meta': {'object_name': 'Tag'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '100'})
},
'taggit.taggeditem': {
'Meta': {'object_name': 'TaggedItem'},
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_tagged_items'", 'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'object_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}),
'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_items'", 'to': "orm['taggit.Tag']"})
}
}
complete_apps = ['checkouts']

View File

56
apps/checkouts/models.py Normal file
View File

@@ -0,0 +1,56 @@
from __future__ import absolute_import
import logging
import datetime
from django.db import models, IntegrityError
from django.utils.translation import ugettext_lazy as _
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic
from documents.models import Document
from history.api import create_history
from .managers import DocumentCheckoutManager
from .exceptions import DocumentAlreadyCheckedOut
from .events import HISTORY_DOCUMENT_CHECKED_OUT
logger = logging.getLogger(__name__)
class DocumentCheckout(models.Model):
"""
Model to store the state and information of a document checkout
"""
document = models.ForeignKey(Document, verbose_name=_(u'document'), unique=True)
checkout_datetime = models.DateTimeField(verbose_name=_(u'check out date and time'), blank=True, null=True)
expiration_datetime = models.DateTimeField(verbose_name=_(u'check out expiration date and time'), help_text=_(u'Amount of time to hold the document checked out in minutes.'))
user_content_type = models.ForeignKey(ContentType, null=True, blank=True) # blank and null added for ease of db migration
user_object_id = models.PositiveIntegerField(null=True, blank=True)
user_object = generic.GenericForeignKey(ct_field='user_content_type', fk_field='user_object_id')
block_new_version = models.BooleanField(default=True, verbose_name=_(u'block new version upload'), help_text=_(u'Do not allow new version of this document to be uploaded.'))
#block_metadata
#block_editing
#block tag add/remove
objects = DocumentCheckoutManager()
def __unicode__(self):
return unicode(self.document)
def save(self, *args, **kwargs):
if not self.pk:
self.checkout_datetime = datetime.datetime.now()
result = super(DocumentCheckout, self).save(*args, **kwargs)
create_history(HISTORY_DOCUMENT_CHECKED_OUT, source_object=self.document, data={'user': self.user_object, 'document': self.document})
return result
@models.permalink
def get_absolute_url(self):
return ('checkout_info', [self.document.pk])
class Meta:
verbose_name = _(u'document checkout')
verbose_name_plural = _(u'document checkouts')

View File

@@ -0,0 +1,13 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from permissions.models import PermissionNamespace, Permission
namespace = PermissionNamespace('checkouts', _(u'Document checkout'))
PERMISSION_DOCUMENT_CHECKOUT = Permission.objects.register(namespace, 'checkout_document', _(u'Check out documents'))
PERMISSION_DOCUMENT_CHECKIN = Permission.objects.register(namespace, 'checkin_document', _(u'Check in documents'))
PERMISSION_DOCUMENT_CHECKIN_OVERRIDE = Permission.objects.register(namespace, 'checkin_document_override', _(u'Forcefully check in documents'))
PERMISSION_DOCUMENT_RESTRICTIONS_OVERRIDE = Permission.objects.register(namespace, 'checkout_restrictions_override', _(u'Allow overriding check out restrictions'))

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.

After

Width:  |  Height:  |  Size: 1.6 KiB

24
apps/checkouts/tasks.py Normal file
View File

@@ -0,0 +1,24 @@
from __future__ import absolute_import
import logging
from lock_manager import Lock, LockError
from .models import DocumentCheckout
LOCK_EXPIRE = 50
logger = logging.getLogger(__name__)
def task_check_expired_check_outs():
logger.debug('executing...')
lock_id = u'task_expired_check_outs'
try:
logger.debug('trying to acquire lock: %s' % lock_id)
lock = Lock.acquire_lock(lock_id, LOCK_EXPIRE)
logger.debug('acquired lock: %s' % lock_id)
DocumentCheckout.objects.check_in_expired_check_outs()
lock.release()
except LockError:
logger.debug('unable to obtain lock')
pass

8
apps/checkouts/urls.py Normal file
View File

@@ -0,0 +1,8 @@
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('checkouts.views',
url(r'^list/$', 'checkout_list', (), 'checkout_list'),
url(r'^(?P<document_pk>\d+)/check/out/$', 'checkout_document', (), 'checkout_document'),
url(r'^(?P<document_pk>\d+)/check/in/$', 'checkin_document', (), 'checkin_document'),
url(r'^(?P<document_pk>\d+)/check/info/$', 'checkout_info', (), 'checkout_info'),
)

147
apps/checkouts/views.py Normal file
View File

@@ -0,0 +1,147 @@
from __future__ import absolute_import
from django.utils.translation import ugettext_lazy as _
from django.http import HttpResponseRedirect
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.exceptions import PermissionDenied
from documents.views import document_list
from documents.models import Document
from permissions.models import Permission
from acls.models import AccessEntry
from common.utils import get_object_name
from common.utils import encapsulate
from .models import DocumentCheckout
from .permissions import (PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN,
PERMISSION_DOCUMENT_CHECKIN_OVERRIDE)
from .forms import DocumentCheckoutForm
from .exceptions import DocumentAlreadyCheckedOut, DocumentNotCheckedOut
from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN, STATE_ICONS, STATE_LABELS
from .widgets import checkout_widget
def checkout_list(request):
return document_list(
request,
object_list=DocumentCheckout.objects.checked_out_documents(),
title=_(u'checked out documents'),
extra_context={
'extra_columns': [
{'name': _(u'checkout user'), 'attribute': encapsulate(lambda document: get_object_name(document.checkout_info().user_object, display_object_type=False))},
{'name': _(u'checkout time and date'), 'attribute': encapsulate(lambda document: document.checkout_info().checkout_datetime)},
{'name': _(u'checkout expiration'), 'attribute': encapsulate(lambda document: document.checkout_info().expiration_datetime)},
],
}
)
def checkout_info(request, document_pk):
document = get_object_or_404(Document, pk=document_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN])
except PermissionDenied:
AccessEntry.objects.check_accesses([PERMISSION_DOCUMENT_CHECKOUT, PERMISSION_DOCUMENT_CHECKIN], request.user, document)
paragraphs = [checkout_widget(document)]
if document.is_checked_out():
checkout_info = document.checkout_info()
paragraphs.append(_(u'User: %s') % get_object_name(checkout_info.user_object, display_object_type=False))
paragraphs.append(_(u'Check out time: %s') % checkout_info.checkout_datetime)
paragraphs.append(_(u'Check out expiration: %s') % checkout_info.expiration_datetime)
paragraphs.append(_(u'New versions allowed: %s') % (_(u'yes') if not checkout_info.block_new_version else _(u'no')))
return render_to_response('generic_template.html', {
'paragraphs': paragraphs,
'object': document,
'title': _(u'Check out details for document: %s') % document
}, context_instance=RequestContext(request))
def checkout_document(request, document_pk):
document = get_object_or_404(Document, pk=document_pk)
try:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKOUT])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKOUT, request.user, document)
if request.method == 'POST':
form = DocumentCheckoutForm(data=request.POST, initial={'document': document})
try:
if form.is_valid():
try:
document_checkout = form.save(commit=False)
document_checkout.user_object = request.user
document_checkout.save()
except Exception, exc:
messages.error(request, _(u'Error trying to check out document; %s') % exc)
else:
messages.success(request, _(u'Document "%s" checked out successfully.') % document)
return HttpResponseRedirect(reverse('checkout_info', args=[document.pk]))
except DocumentAlreadyCheckedOut:
messages.error(request, _(u'Document already checked out.'))
return HttpResponseRedirect(reverse('checkout_info', args=[document.pk]))
else:
form = DocumentCheckoutForm(initial={'document': document})
return render_to_response('generic_form.html', {
'form': form,
'object': document,
'title': _(u'Check out document: %s') % document
}, context_instance=RequestContext(request))
def checkin_document(request, document_pk):
document = get_object_or_404(Document, pk=document_pk)
post_action_redirect = reverse('checkout_info', args=[document.pk])
# If the user trying to check in the document is the same as the check out
# user just check for the normal permission otherwise check for the forceful
# checkin permission
if document.checkout_info().user_object == request.user:
try:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN, request.user, document)
else:
try:
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CHECKIN_OVERRIDE])
except PermissionDenied:
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_CHECKIN_OVERRIDE, request.user, document)
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:
document.check_in(user=request.user)
except DocumentNotCheckedOut:
messages.error(request, _(u'Document has not been checked out.'))
except Exception, exc:
messages.error(request, _(u'Error trying to check in document; %s') % exc)
else:
messages.success(request, _(u'Document "%s" checked in successfully.') % document)
return HttpResponseRedirect(next)
context = {
'object_name': _(u'document'),
'delete_view': False,
'previous': previous,
'next': next,
'form_icon': u'basket_remove.png',
'object': document,
}
if document.checkout_info().user_object != request.user:
context['title'] = _(u'You didn\'t originally checked out this document. Are you sure you wish to forcefully check in document: %s?') % document
else:
context['title'] = _(u'Are you sure you wish to check in document: %s?') % document
return render_to_response('generic_confirm.html', context,
context_instance=RequestContext(request))

107
apps/checkouts/widgets.py Normal file
View File

@@ -0,0 +1,107 @@
from __future__ import absolute_import
import datetime
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.utils.safestring import mark_safe
from django.conf import settings
from django.core import validators
from .literals import STATE_CHECKED_OUT, STATE_CHECKED_IN, STATE_ICONS, STATE_LABELS
def checkout_widget(document):
checkout_state = document.checkout_state()
widget = (u'<img style="vertical-align: middle;" src="%simages/icons/%s" />' % (settings.STATIC_URL, STATE_ICONS[checkout_state]))
return _(u'Document status: %(widget)s %(text)s') % {
'widget': mark_safe(widget),
'text': STATE_LABELS[checkout_state]
}
class SplitDeltaWidget(forms.widgets.MultiWidget):
"""
A Widget that splits a timedelta input into three <input type="text"> boxes.
"""
def __init__(self, attrs=None):
widgets = (
forms.widgets.TextInput(attrs={'maxlength': 3, 'style':'width: 5em;', 'placeholder': _(u'Days')}),
forms.widgets.TextInput(attrs={'maxlength': 4, 'style':'width: 5em;', 'placeholder': _(u'Hours')}),
forms.widgets.TextInput(attrs={'maxlength': 5, 'style':'width: 5em;', 'placeholder': _(u'Minutes')}),
)
super(SplitDeltaWidget, self).__init__(widgets, attrs)
def decompress(self, value):
if value:
return [value.days, value.seconds / 3600, (value.seconds / 60) % 60]
return [None, None, None]
def value_from_datadict(self, data, files, name):
return [data.get('expiration_datetime_0', 0) or 0, data.get('expiration_datetime_1', 0) or 0, data.get('expiration_datetime_2', 0) or 0]
class SplitHiddenDeltaWidget(forms.widgets.SplitDateTimeWidget):
"""
A Widget that splits a timedelta input into three <input type="hidden"> inputs.
"""
is_hidden = True
def __init__(self, attrs=None):
super(SplitHiddenDeltaWidget, self).__init__(attrs, date_format, time_format)
for widget in self.widgets:
widget.input_type = 'hidden'
widget.is_hidden = True
class SplitTimeDeltaField(forms.MultiValueField):
widget = SplitDeltaWidget
hidden_widget = SplitHiddenDeltaWidget
default_error_messages = {
'invalid_days': _(u'Enter a valid number of days.'),
'invalid_hours': _(u'Enter a valid number of hours.'),
'invalid_minutes': _(u'Enter a valid number of minutes.'),
'invalid_timedelta': _(u'Enter a valid time difference.'),
}
def __init__(self, *args, **kwargs):
errors = self.default_error_messages.copy()
if 'error_messages' in kwargs:
errors.update(kwargs['error_messages'])
localize = kwargs.get('localize', False)
fields = (
forms.IntegerField(min_value=0,
error_messages={'invalid': errors['invalid_days']},
localize=localize
),
forms.IntegerField(min_value=0,
error_messages={'invalid': errors['invalid_hours']},
localize=localize
),
forms.IntegerField(min_value=0,
error_messages={'invalid': errors['invalid_minutes']},
localize=localize
),
)
super(SplitTimeDeltaField, self).__init__(fields, *args, **kwargs)
self.help_text = _(u'Amount of time to hold the document in the checked out state in days, hours and/or minutes.')
self.label = _('Check out expiration date and time')
def compress(self, data_list):
if data_list == [0, 0, 0]:
raise forms.ValidationError(self.error_messages['invalid_timedelta'])
if data_list:
# Raise a validation error if time or date is empty
# (possible if SplitDateTimeField has required=False).
if data_list[0] in validators.EMPTY_VALUES:
raise forms.ValidationError(self.error_messages['invalid_days'])
if data_list[1] in validators.EMPTY_VALUES:
raise forms.ValidationError(self.error_messages['invalid_hours'])
if data_list[2] in validators.EMPTY_VALUES:
raise forms.ValidationError(self.error_messages['invalid_minutes'])
timedelta = datetime.timedelta(days=data_list[0], hours=data_list[1], minutes=data_list[2])
return datetime.datetime.now() + timedelta
return None

View File

@@ -2,12 +2,15 @@ from __future__ import absolute_import
import tempfile
from south.signals import post_migrate
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import User
from django.contrib.auth.management import create_superuser
from django.dispatch import receiver
from django.db.models.signals import post_syncdb
from django.conf import settings
from django.db.models.signals import post_save
from navigation.api import bind_links, register_top_menu, Link
from project_setup.api import register_setup
@@ -19,6 +22,7 @@ from .conf import settings as common_settings
from .utils import validate_path
from .links import (password_change_view, current_user_details,
current_user_edit, about_view, license_view, admin_site, sentry)
from .models import AutoAdminSingleton
bind_links(['about_view', 'license_view'], [about_view, license_view], menu_name='secondary_menu')
bind_links(['current_user_details', 'current_user_edit', 'password_change_view'], [current_user_details, current_user_edit, password_change_view], menu_name='secondary_menu')
@@ -26,8 +30,8 @@ bind_links(['current_user_details', 'current_user_edit', 'password_change_view']
register_top_menu('about', link=Link(text=_(u'about'), view='about_view', sprite='information'), position=-1)
@receiver(post_syncdb, dispatch_uid='create_superuser_processor', sender=auth_models)
def create_superuser_processor(sender, **kwargs):
@receiver(post_migrate, dispatch_uid='create_superuser')
def create_superuser(sender, **kwargs):
"""
From https://github.com/lambdalisue/django-qwert/blob/master/qwert/autoscript/__init__.py
From http://stackoverflow.com/questions/1466827/ --
@@ -39,17 +43,33 @@ def create_superuser_processor(sender, **kwargs):
Create our own admin super user automatically.
"""
if AUTO_CREATE_ADMIN:
if AUTO_CREATE_ADMIN and kwargs['app'] == 'common':
try:
auth_models.User.objects.get(username=AUTO_ADMIN_USERNAME)
except auth_models.User.DoesNotExist:
print '*' * 80
print 'Creating super admin user -- login: %s, password: %s' % (AUTO_ADMIN_USERNAME, AUTO_ADMIN_PASSWORD)
print '*' * 80
assert auth_models.User.objects.create_superuser(AUTO_ADMIN_USERNAME, 'x@x.com', AUTO_ADMIN_PASSWORD)
assert auth_models.User.objects.create_superuser(AUTO_ADMIN_USERNAME, 'autoadmin@autoadmin.com', AUTO_ADMIN_PASSWORD)
admin = auth_models.User.objects.get(username=AUTO_ADMIN_USERNAME)
# Store the auto admin password properties to display the first login message
auto_admin_properties = AutoAdminSingleton.objects.get()
auto_admin_properties.account = admin
auto_admin_properties.password = AUTO_ADMIN_PASSWORD
auto_admin_properties.password_hash = admin.password
auto_admin_properties.save()
else:
print 'Super admin user already exists. -- login: %s' % AUTO_ADMIN_USERNAME
@receiver(post_save, dispatch_uid='auto_admin_account_passwd_change', sender=User)
def auto_admin_account_passwd_change(sender, instance, **kwargs):
auto_admin_properties = AutoAdminSingleton.objects.get()
if instance == auto_admin_properties.account and instance.password != auto_admin_properties.password_hash:
# Only delete the auto admin properties when the password has been changed
auto_admin_properties.delete(force=True)
if (validate_path(TEMPORARY_DIRECTORY) == False) or (not TEMPORARY_DIRECTORY):
setattr(common_settings, 'TEMPORARY_DIRECTORY', tempfile.mkdtemp())

View File

@@ -1,6 +1,7 @@
"""Configuration options for the common app"""
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from smart_settings.api import Setting, SettingNamespace
@@ -49,7 +50,7 @@ Setting(
namespace=namespace,
name=u'AUTO_ADMIN_PASSWORD',
global_name=u'COMMON_AUTO_ADMIN_PASSWORD',
default=u'admin',
default=User.objects.make_random_password(),
)
Setting(

Binary file not shown.

View File

@@ -0,0 +1,335 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2011-09-30 04:55+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:22
msgid "change password"
msgstr ""
#: __init__.py:23
msgid "user details"
msgstr ""
#: __init__.py:24
msgid "edit details"
msgstr ""
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr ""
#: __init__.py:29
msgid "license"
msgstr ""
#: forms.py:101
msgid "Selection"
msgstr ""
#: forms.py:133
msgid "Email"
msgstr ""
#: forms.py:144
msgid ""
"Please enter a correct email and password. Note that the password fields is "
"case-sensitive."
msgstr ""
#: forms.py:146
msgid "This account is inactive."
msgstr ""
#: literals.py:24
msgid "A5"
msgstr ""
#: literals.py:25
msgid "A4"
msgstr ""
#: literals.py:26
msgid "A3"
msgstr ""
#: literals.py:27
msgid "B5"
msgstr ""
#: literals.py:28
msgid "B4"
msgstr ""
#: literals.py:29
msgid "Letter"
msgstr ""
#: literals.py:30
msgid "Legal"
msgstr ""
#: literals.py:31
msgid "Ledger"
msgstr ""
#: literals.py:38
msgid "Portrait"
msgstr ""
#: literals.py:39
msgid "Landscape"
msgstr ""
#: models.py:16
msgid "lock field"
msgstr ""
#: models.py:43
msgid "Anonymous user"
msgstr ""
#: models.py:46 models.py:47
msgid "anonymous user"
msgstr ""
#: utils.py:295
msgid "function found"
msgstr ""
#: views.py:36
msgid "No action selected."
msgstr ""
#: views.py:40
msgid "Must select at least one item."
msgstr ""
#: views.py:88
#, python-format
msgid "%(selection)s added successfully added to %(right_list_title)s."
msgstr ""
#: views.py:94 views.py:121
#, python-format
msgid "Unable to add %(selection)s to %(right_list_title)s."
msgstr ""
#: views.py:115
#, python-format
msgid "%(selection)s added successfully removed from %(right_list_title)s."
msgstr ""
#: views.py:136
msgid "Add"
msgstr ""
#: views.py:147
msgid "Remove"
msgstr ""
#: views.py:170
msgid "current user details"
msgstr ""
#: views.py:187
msgid "E-mail conflict, another user has that same email."
msgstr ""
#: views.py:190
msgid "Current user's details updated."
msgstr ""
#: views.py:199
msgid "edit current user details"
msgstr ""
#: views.py:230
msgid "License"
msgstr ""
#: views.py:239
msgid "Current user password change"
msgstr ""
#: views.py:254 templates/password_change_done.html:5
msgid "Your password has been successfully changed."
msgstr ""
#: widgets.py:58
msgid "None"
msgstr ""
#: conf/settings.py:15
msgid ""
"Temporary directory used site wide to store thumbnails, previews and "
"temporary files. If none is specified, one will be created using "
"tempfile.mkdtemp()"
msgstr ""
#: conf/settings.py:65
msgid ""
"Controls the mechanism used to authenticated user. Options are: username, "
"email"
msgstr ""
#: conf/settings.py:74
msgid "Allow non authenticated users, access to all views"
msgstr ""
#: templates/403.html:3 templates/403.html.py:7
msgid "Insufficient permissions"
msgstr ""
#: templates/403.html:9
msgid "You don't have enough permissions for this operation."
msgstr ""
#: templates/404.html:3 templates/404.html.py:7
msgid "Page not found"
msgstr ""
#: templates/404.html:9
msgid "Sorry, but the requested page could not be found."
msgstr ""
#: templates/calculate_form_title.html:11
#, python-format
msgid "Details for %(object_name)s: %(object)s"
msgstr ""
#: templates/calculate_form_title.html:13
#, python-format
msgid "Details for: %(object)s"
msgstr ""
#: templates/calculate_form_title.html:18
#, python-format
msgid "Edit %(object_name)s:"
msgstr ""
#: templates/calculate_form_title.html:20
msgid "Edit"
msgstr ""
#: templates/calculate_form_title.html:24
#, python-format
msgid "Create new %(object_name)s"
msgstr ""
#: templates/calculate_form_title.html:26
msgid "Create"
msgstr ""
#: templates/generic_assign_remove.html:3
#, python-format
msgid "Assign %(title)s %(object)s"
msgstr ""
#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18
msgid "Confirm"
msgstr ""
#: templates/generic_confirm.html:16
msgid "Confirm delete"
msgstr ""
#: templates/generic_confirm.html:32
msgid "form icon"
msgstr ""
#: templates/generic_confirm.html:40
#, python-format
msgid "Are you sure you wish to delete %(object_name)s: %(object)s?"
msgstr ""
#: templates/generic_confirm.html:42
#, python-format
msgid "Are you sure you wish to delete: %(object)s?"
msgstr ""
#: templates/generic_confirm.html:50
msgid "Yes"
msgstr ""
#: templates/generic_confirm.html:54
msgid "No"
msgstr ""
#: templates/generic_form_instance.html:37
#: templates/generic_form_subtemplate.html:56
msgid "required"
msgstr ""
#: templates/generic_form_subtemplate.html:80
#: templates/generic_form_subtemplate.html:82
#: templates/generic_list_horizontal_subtemplate.html:51
#: templates/generic_list_horizontal_subtemplate.html:90
#: templates/generic_list_subtemplate.html:52
#: templates/generic_list_subtemplate.html:178
msgid "Save"
msgstr ""
#: templates/generic_form_subtemplate.html:80
#: templates/generic_form_subtemplate.html:82
#: templates/generic_list_horizontal_subtemplate.html:51
#: templates/generic_list_horizontal_subtemplate.html:90
#: templates/generic_list_subtemplate.html:52
#: templates/generic_list_subtemplate.html:178
msgid "Submit"
msgstr ""
#: templates/generic_form_subtemplate.html:87
msgid "Cancel"
msgstr ""
#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6
#, python-format
msgid "List of %(stripped_title)s"
msgstr ""
#: templates/generic_list_horizontal_subtemplate.html:23
#: templates/generic_list_subtemplate.html:24
#, python-format
msgid ""
"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page "
"%(page_number)s of %(total_pages)s)"
msgstr ""
#: templates/generic_list_horizontal_subtemplate.html:25
#: templates/generic_list_subtemplate.html:26
#, python-format
msgid "List of %(title)s (%(total)s)"
msgstr ""
#: templates/generic_list_subtemplate.html:72
msgid "Identifier"
msgstr ""
#: templates/generic_list_subtemplate.html:152
#, python-format
msgid "There are no %(stripped_title)s"
msgstr ""
#: templates/login.html:5
msgid "Login"
msgstr ""
#: templates/password_change_done.html:3 templates/password_change_form.html:3
#: templates/password_change_form.html:5
msgid "Password change"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:02-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,23 +17,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr ""
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr ""
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr ""
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr ""
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr ""

View File

@@ -7,35 +7,34 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-02 18:39+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr "cambiar contraseña"
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr "detalles de usuario"
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr "editar detalles"
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr "sobre"
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr "licencia"
@@ -51,10 +50,7 @@ msgstr "E-mail"
msgid ""
"Please enter a correct email and password. Note that the password fields is "
"case-sensitive."
msgstr ""
"Por favor entre la dirección de correo electrónico y la contraseña "
"correctas. Tenga en cuenta que los campos de contraseña distingue entre "
"mayúsculas y minúsculas."
msgstr "Por favor entre la dirección de correo electrónico y la contraseña correctas. Tenga en cuenta que los campos de contraseña distingue entre mayúsculas y minúsculas."
#: forms.py:146
msgid "This account is inactive."
@@ -153,9 +149,7 @@ msgstr "detalles del usuario corriente"
#: views.py:187
msgid "E-mail conflict, another user has that same email."
msgstr ""
"Conflicto de correo electrónica, otro usuario tiene ese mismo correo "
"electrónico."
msgstr "Conflicto de correo electrónica, otro usuario tiene ese mismo correo electrónico."
#: views.py:190
msgid "Current user's details updated."
@@ -184,25 +178,19 @@ msgstr "Ninguno"
#: conf/settings.py:15
msgid ""
"Temporary directory used site wide to store thumbnails, previews and "
"temporary files. If none is specified, one will be created using tempfile."
"mkdtemp()"
msgstr ""
"Directorio temporal utilizado por todo el sitio para almacenar imágenes en "
"miniatura, vistas previas y los archivos temporales. Si no se especifica "
"ninguno, se creará utilizando tempfile.mkdtemp ()"
"temporary files. If none is specified, one will be created using "
"tempfile.mkdtemp()"
msgstr "Directorio temporal utilizado por todo el sitio para almacenar imágenes en miniatura, vistas previas y los archivos temporales. Si no se especifica ninguno, se creará utilizando tempfile.mkdtemp ()"
#: conf/settings.py:65
msgid ""
"Controls the mechanism used to authenticated user. Options are: username, "
"email"
msgstr ""
"Controla el mecanismo utilizado para el usuario autenticado. Las opciones "
"son: 'username' nombre de usuario, 'email' correo electrónico"
msgstr "Controla el mecanismo utilizado para el usuario autenticado. Las opciones son: 'username' nombre de usuario, 'email' correo electrónico"
#: conf/settings.py:74
msgid "Allow non authenticated users, access to all views"
msgstr ""
"Permita a los usuarios no autenticados, el acceso a todas las pantallas"
msgstr "Permita a los usuarios no autenticados, el acceso a todas las pantallas"
#: templates/403.html:3 templates/403.html.py:7
msgid "Insufficient permissions"
@@ -321,9 +309,7 @@ msgstr "Lista de %(stripped_title)s "
msgid ""
"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page "
"%(page_number)s of %(total_pages)s)"
msgstr ""
"Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Página "
"%(page_number)s de %(total_pages)s)"
msgstr "Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(total_pages)s)"
#: templates/generic_list_horizontal_subtemplate.html:25
#: templates/generic_list_subtemplate.html:26

View File

@@ -3,6 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Carlo Zanatto <>, 2012.
# <pierpaolo.baldan@gmail.com>, 2011.
# Pierpaolo Baldan <pierpaolo.baldan@gmail.com>, 2012.
# Roberto Rosario <roberto.rosario.gonzalez@gmail.com>, 2012.
@@ -10,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2012-03-21 13:21+0000\n"
"Last-Translator: Pierpaolo Baldan <pierpaolo.baldan@gmail.com>\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-08 07:46+0000\n"
"Last-Translator: Carlo Zanatto <>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -20,23 +21,23 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr "cambia password"
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr "dettaglio utente"
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr "modifica dettagli"
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr "a rigurdo"
msgstr "informazioni"
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr "licenza"
@@ -120,7 +121,7 @@ msgstr "Nessuna azione selezionata"
#: views.py:40
msgid "Must select at least one item."
msgstr "Devi selezionare un item"
msgstr "Devi selezionare un elemento"
#: views.py:88
#, python-format
@@ -294,7 +295,7 @@ msgstr "Salva"
#: templates/generic_list_subtemplate.html:52
#: templates/generic_list_subtemplate.html:178
msgid "Submit"
msgstr "Sottometti"
msgstr "Conferma"
#: templates/generic_form_subtemplate.html:87
msgid "Cancel"

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-21 15:17+0000\n"
"Last-Translator: mic <winterfall24@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n"
@@ -21,23 +21,23 @@ msgstr ""
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr "zmień hasło"
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr "szczegóły konta użytkownika"
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr "edytuj szczegóły"
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr "informacje o"
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr "licencja"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-21 15:07+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n"
@@ -19,23 +19,23 @@ msgstr ""
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr "alterar a senha"
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr "detalhes do usuário"
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr "editar detalhes"
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr "sobre"
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr "licença"

View File

@@ -3,40 +3,38 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Sergey Glita <gsv70@mail.ru>, 2011.
# Sergey Glita <gsv70@mail.ru>, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2012-02-02 18:18+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/"
"ru/)\n"
"Language: ru\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-03 06:36+0000\n"
"Last-Translator: Sergey Glita <gsv70@mail.ru>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:20
#: __init__.py:22
msgid "change password"
msgstr "Изменение пароля"
#: __init__.py:21
#: __init__.py:23
msgid "user details"
msgstr "сведения о пользователе"
#: __init__.py:22
#: __init__.py:24
msgid "edit details"
msgstr "изменение сведений"
#: __init__.py:26 __init__.py:31
#: __init__.py:28 __init__.py:33
msgid "about"
msgstr "инфо"
#: __init__.py:27
#: __init__.py:29
msgid "license"
msgstr "лицензия"
@@ -52,9 +50,7 @@ msgstr "Email"
msgid ""
"Please enter a correct email and password. Note that the password fields is "
"case-sensitive."
msgstr ""
"Пожалуйста, введите правильный адрес электронной почты и пароль с учетом "
"регистра."
msgstr "Пожалуйста, введите правильный адрес электронной почты и пароль с учетом регистра."
#: forms.py:146
msgid "This account is inactive."
@@ -102,15 +98,15 @@ msgstr "Пейзаж"
#: models.py:16
msgid "lock field"
msgstr ""
msgstr "блокировка поля"
#: models.py:43
msgid "Anonymous user"
msgstr ""
msgstr "Анонимный пользователь"
#: models.py:46 models.py:47
msgid "anonymous user"
msgstr ""
msgstr "анонимный пользователь"
#: utils.py:295
msgid "function found"
@@ -153,7 +149,7 @@ msgstr "данные пользователя"
#: views.py:187
msgid "E-mail conflict, another user has that same email."
msgstr ""
msgstr "Другой пользователь укеазал тот же е-мейл."
#: views.py:190
msgid "Current user's details updated."
@@ -169,7 +165,7 @@ msgstr "Лицензия"
#: views.py:239
msgid "Current user password change"
msgstr ""
msgstr "Изменить пароль пользователя"
#: views.py:254 templates/password_change_done.html:5
msgid "Your password has been successfully changed."
@@ -182,24 +178,19 @@ msgstr "Ни один"
#: conf/settings.py:15
msgid ""
"Temporary directory used site wide to store thumbnails, previews and "
"temporary files. If none is specified, one will be created using tempfile."
"mkdtemp()"
msgstr ""
"Временный каталог, используемый сайтом для хранения миниатюр, превью и "
"временных файлов. Если он не указан, он будет создан с использованием "
"temporary files. If none is specified, one will be created using "
"tempfile.mkdtemp()"
msgstr "Временный каталог, используемый сайтом для хранения миниатюр, превью и временных файлов. Если он не указан, он будет создан с использованием tempfile.mkdtemp ()"
#: conf/settings.py:65
msgid ""
"Controls the mechanism used to authenticated user. Options are: username, "
"email"
msgstr ""
"Управление механизмом, используемым для аутентификации пользователя. "
"Возможные варианты: имя пользователя, адрес электронной почты"
msgstr "Управление механизмом, используемым для аутентификации пользователя. Возможные варианты: имя пользователя, адрес электронной почты"
#: conf/settings.py:74
msgid "Allow non authenticated users, access to all views"
msgstr ""
msgstr "Разрешить, не прошедшим проверку, пользователям доступ ко всем представлениям"
#: templates/403.html:3 templates/403.html.py:7
msgid "Insufficient permissions"
@@ -305,7 +296,7 @@ msgstr "Выполнить"
#: templates/generic_form_subtemplate.html:87
msgid "Cancel"
msgstr ""
msgstr "Отменить"
#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6
#, python-format
@@ -318,9 +309,7 @@ msgstr "Список \"%(stripped_title)s\""
msgid ""
"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page "
"%(page_number)s of %(total_pages)s)"
msgstr ""
"Список %(title)s (%(start)s - %(end)s из %(total)s) (Page %(page_number)s из "
"%(total_pages)s)"
msgstr "Список %(title)s (%(start)s - %(end)s из %(total)s) (Page %(page_number)s из %(total_pages)s)"
#: templates/generic_list_horizontal_subtemplate.html:25
#: templates/generic_list_subtemplate.html:26

View File

@@ -0,0 +1,32 @@
# -*- 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 model 'AnonymousUserSingleton'
db.create_table('common_anonymoususersingleton', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('lock_id', self.gf('django.db.models.fields.CharField')(default=1, unique=True, max_length=1)),
))
db.send_create_signal('common', ['AnonymousUserSingleton'])
def backwards(self, orm):
# Deleting model 'AnonymousUserSingleton'
db.delete_table('common_anonymoususersingleton')
models = {
'common.anonymoususersingleton': {
'Meta': {'object_name': 'AnonymousUserSingleton'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
}
}
complete_apps = ['common']

View File

@@ -0,0 +1,77 @@
# -*- 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 model 'AutoAdminSingleton'
db.create_table('common_autoadminsingleton', (
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('lock_id', self.gf('django.db.models.fields.CharField')(default=1, unique=True, max_length=1)),
('original_auto_admin_password', self.gf('django.db.models.fields.BooleanField')(default=True)),
('auto_admin', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
))
db.send_create_signal('common', ['AutoAdminSingleton'])
def backwards(self, orm):
# Deleting model 'AutoAdminSingleton'
db.delete_table('common_autoadminsingleton')
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'common.anonymoususersingleton': {
'Meta': {'object_name': 'AnonymousUserSingleton'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
},
'common.autoadminsingleton': {
'Meta': {'object_name': 'AutoAdminSingleton'},
'auto_admin': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'}),
'original_auto_admin_password': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
}
}
complete_apps = ['common']

View File

@@ -0,0 +1,97 @@
# -*- 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):
# Deleting field 'AutoAdminSingleton.original_auto_admin_password'
db.delete_column('common_autoadminsingleton', 'original_auto_admin_password')
# Deleting field 'AutoAdminSingleton.auto_admin'
db.delete_column('common_autoadminsingleton', 'auto_admin_id')
# Adding field 'AutoAdminSingleton.auto_admin_account'
db.add_column('common_autoadminsingleton', 'auto_admin_account',
self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='auto_admin_account', null=True, to=orm['auth.User']),
keep_default=False)
# Adding field 'AutoAdminSingleton.auto_admin_password'
db.add_column('common_autoadminsingleton', 'auto_admin_password',
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
keep_default=False)
def backwards(self, orm):
# Adding field 'AutoAdminSingleton.original_auto_admin_password'
db.add_column('common_autoadminsingleton', 'original_auto_admin_password',
self.gf('django.db.models.fields.BooleanField')(default=True),
keep_default=False)
# Adding field 'AutoAdminSingleton.auto_admin'
db.add_column('common_autoadminsingleton', 'auto_admin',
self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True),
keep_default=False)
# Deleting field 'AutoAdminSingleton.auto_admin_account'
db.delete_column('common_autoadminsingleton', 'auto_admin_account_id')
# Deleting field 'AutoAdminSingleton.auto_admin_password'
db.delete_column('common_autoadminsingleton', 'auto_admin_password')
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'common.anonymoususersingleton': {
'Meta': {'object_name': 'AnonymousUserSingleton'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
},
'common.autoadminsingleton': {
'Meta': {'object_name': 'AutoAdminSingleton'},
'auto_admin_account': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'auto_admin_account'", 'null': 'True', 'to': "orm['auth.User']"}),
'auto_admin_password': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
}
}
complete_apps = ['common']

View File

@@ -0,0 +1,106 @@
# -*- 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):
# Deleting field 'AutoAdminSingleton.auto_admin_password'
db.delete_column('common_autoadminsingleton', 'auto_admin_password')
# Deleting field 'AutoAdminSingleton.auto_admin_account'
db.delete_column('common_autoadminsingleton', 'auto_admin_account_id')
# Adding field 'AutoAdminSingleton.account'
db.add_column('common_autoadminsingleton', 'account',
self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='auto_admin_account', null=True, to=orm['auth.User']),
keep_default=False)
# Adding field 'AutoAdminSingleton.password'
db.add_column('common_autoadminsingleton', 'password',
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
keep_default=False)
# Adding field 'AutoAdminSingleton.password_hash'
db.add_column('common_autoadminsingleton', 'password_hash',
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
keep_default=False)
def backwards(self, orm):
# Adding field 'AutoAdminSingleton.auto_admin_password'
db.add_column('common_autoadminsingleton', 'auto_admin_password',
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
keep_default=False)
# Adding field 'AutoAdminSingleton.auto_admin_account'
db.add_column('common_autoadminsingleton', 'auto_admin_account',
self.gf('django.db.models.fields.related.ForeignKey')(related_name='auto_admin_account', null=True, to=orm['auth.User'], blank=True),
keep_default=False)
# Deleting field 'AutoAdminSingleton.account'
db.delete_column('common_autoadminsingleton', 'account_id')
# Deleting field 'AutoAdminSingleton.password'
db.delete_column('common_autoadminsingleton', 'password')
# Deleting field 'AutoAdminSingleton.password_hash'
db.delete_column('common_autoadminsingleton', 'password_hash')
models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
},
'auth.permission': {
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
},
'common.anonymoususersingleton': {
'Meta': {'object_name': 'AnonymousUserSingleton'},
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'})
},
'common.autoadminsingleton': {
'Meta': {'object_name': 'AutoAdminSingleton'},
'account': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'auto_admin_account'", 'null': 'True', 'to': "orm['auth.User']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'lock_id': ('django.db.models.fields.CharField', [], {'default': '1', 'unique': 'True', 'max_length': '1'}),
'password': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}),
'password_hash': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'})
},
'contenttypes.contenttype': {
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
}
}
complete_apps = ['common']

View File

View File

@@ -2,6 +2,7 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth.models import User
SINGLETON_LOCK_ID = 1
@@ -21,8 +22,9 @@ class Singleton(models.Model):
self.id = 1
super(Singleton, self).save(*args, **kwargs)
def delete(self):
pass
def delete(self, force=False, *args, **kwargs):
if force:
return super(Singleton, self).delete(*args, **kwargs)
class Meta:
abstract = True
@@ -45,3 +47,12 @@ class AnonymousUserSingleton(Singleton):
class Meta:
verbose_name = _(u'anonymous user')
verbose_name_plural = _(u'anonymous user')
class AutoAdminSingleton(Singleton):
account = models.ForeignKey(User, null=True, blank=True, related_name='auto_admin_account', verbose_name=_(u'account'))
password = models.CharField(null=True, blank=True, verbose_name=_(u'password'), max_length=128)
password_hash = models.CharField(null=True, blank=True, verbose_name=_(u'password hash'), max_length=128)
class Meta:
verbose_name = verbose_name_plural = _(u'auto admin properties')

View File

@@ -0,0 +1,12 @@
from django.template import Library
from django.utils.importlib import import_module
from common.models import AutoAdminSingleton
register = Library()
@register.simple_tag(takes_context=True)
def auto_admin_properties(context):
context['auto_admin_properties'] = AutoAdminSingleton.objects.get()
return u''

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:02-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"
@@ -919,6 +919,10 @@ msgid ""
"but less prone to segmentation faults."
msgstr ""
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr ""
#: templates/converter_file_formats_help.html:3
msgid "Help"
msgstr ""

View File

@@ -3,20 +3,19 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Roberto Rosario <roberto.rosario.gonzalez@gmail.com>, 2011.
# Roberto Rosario <roberto.rosario.gonzalez@gmail.com>, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2011-12-14 14:37+0000\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-17 22:21+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:15
@@ -474,8 +473,7 @@ msgstr "Magick Image File Format"
#: literals.py:177
msgid ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:178
msgid "Raw Bi-level bitmap in least-significant-byte first order"
@@ -636,24 +634,19 @@ msgstr "Portable Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:227
msgid ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:228
msgid ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:229
msgid ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:230
msgid "Portable anymap"
@@ -913,11 +906,10 @@ msgstr "Ruta de archivo al programa imagemagick."
#: conf/settings.py:15
msgid ""
"Graphics conversion backend to use. Options are: converter.backends."
"imagemagick, converter.backends.graphicsmagick and converter.backends.python."
msgstr ""
"Manejador de conversión a usarse. Opciones son: converter.backends."
"imagemagick, converter.backends.graphicsmagick y converter.backends.python."
"Graphics conversion backend to use. Options are: "
"converter.backends.imagemagick, converter.backends.graphicsmagick and "
"converter.backends.python."
msgstr "Manejador de conversión a usarse. Opciones son: converter.backends.imagemagick, converter.backends.graphicsmagick y converter.backends.python."
#: conf/settings.py:16
msgid "Path to the unoconv program."
@@ -927,9 +919,11 @@ msgstr "Ruta de acceso al programa de unoconv."
msgid ""
"Use alternate method of connection to LibreOffice using a pipe, it is slower"
" but less prone to segmentation faults."
msgstr ""
"Utilizar el método alternativo de conexión a LibreOffice con un tubo, es más "
"lento pero menos propensos a fallos de segmentación."
msgstr "Utilizar el método alternativo de conexión a LibreOffice con un tubo, es más lento pero menos propensos a fallos de segmentación."
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr "Ruta de acceso al programa LibreOffice."
#: templates/converter_file_formats_help.html:3
msgid "Help"
@@ -940,6 +934,4 @@ msgstr "Ayuda"
msgid ""
"These are the file formats supported by the currently selected converter "
"backend. In this case: '%(backend)s'"
msgstr ""
"Estos son los formatos de archivo apoyados por el servidor del convertidor "
"seleccionado. En este caso: '%(backend)s'"
msgstr "Estos son los formatos de archivo apoyados por el servidor del convertidor seleccionado. En este caso: '%(backend)s'"

View File

@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2011-12-09 14:53+0000\n"
"Last-Translator: Pierpaolo Baldan <pierpaolo.baldan@gmail.com>\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-17 22:11+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -921,6 +921,10 @@ msgid ""
" but less prone to segmentation faults."
msgstr "Utilizzare il metodo alternativo di collegamento a LibreOffice utilizzando questo collegamento, è più lento ma meno soggetto a errori di segmentazione."
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr ""
#: templates/converter_file_formats_help.html:3
msgid "Help"
msgstr "Aiuto"

View File

@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2012-02-20 17:09+0000\n"
"Last-Translator: mic <winterfall24@gmail.com>\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-17 22:11+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -921,6 +921,10 @@ msgid ""
" but less prone to segmentation faults."
msgstr ""
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr ""
#: templates/converter_file_formats_help.html:3
msgid "Help"
msgstr ""

View File

@@ -8,16 +8,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2011-11-22 15:26+0000\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-17 22:11+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/"
"team/pt/)\n"
"Language: pt\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:15
@@ -475,8 +474,7 @@ msgstr "Magick Image File Format"
#: literals.py:177
msgid ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:178
msgid "Raw Bi-level bitmap in least-significant-byte first order"
@@ -637,24 +635,19 @@ msgstr "Portable Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:227
msgid ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:228
msgid ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:229
msgid ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:230
msgid "Portable anymap"
@@ -914,11 +907,10 @@ msgstr "Caminho do arquivo para o programa graphicsmagick."
#: conf/settings.py:15
msgid ""
"Graphics conversion backend to use. Options are: converter.backends."
"imagemagick, converter.backends.graphicsmagick and converter.backends.python."
msgstr ""
"Gráficos de conversão backend para usar. As opções são: converter.backends."
"imagemagick, converter.backends.graphicsmagick and converter.backends.python."
"Graphics conversion backend to use. Options are: "
"converter.backends.imagemagick, converter.backends.graphicsmagick and "
"converter.backends.python."
msgstr "Gráficos de conversão backend para usar. As opções são: converter.backends.imagemagick, converter.backends.graphicsmagick and converter.backends.python."
#: conf/settings.py:16
msgid "Path to the unoconv program."
@@ -930,6 +922,10 @@ msgid ""
" but less prone to segmentation faults."
msgstr ""
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr ""
#: templates/converter_file_formats_help.html:3
msgid "Help"
msgstr "Ajuda"
@@ -939,6 +935,4 @@ msgstr "Ajuda"
msgid ""
"These are the file formats supported by the currently selected converter "
"backend. In this case: '%(backend)s'"
msgstr ""
"Estes são os formatos de arquivos suportados pelo servidor conversor "
"selecionado. Neste caso: ' %(backend)s '"
msgstr "Estes são os formatos de arquivos suportados pelo servidor conversor selecionado. Neste caso: ' %(backend)s '"

View File

@@ -7,18 +7,16 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2011-11-22 19:01+0000\n"
"Last-Translator: Sergey Glita <gsv70@mail.ru>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/"
"ru/)\n"
"Language: ru\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-17 22:11+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:15
msgid "file formats"
@@ -475,8 +473,7 @@ msgstr "Magick Image File Format"
#: literals.py:177
msgid ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:178
msgid "Raw Bi-level bitmap in least-significant-byte first order"
@@ -637,24 +634,19 @@ msgstr "Portable Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:227
msgid ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr ""
"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
msgstr "24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:228
msgid ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:229
msgid ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr ""
"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib "
"1.2.3.3,1.2.3.4)"
msgstr "8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)"
#: literals.py:230
msgid "Portable anymap"
@@ -914,11 +906,10 @@ msgstr "Путь к файлу программs GraphicsMagick."
#: conf/settings.py:15
msgid ""
"Graphics conversion backend to use. Options are: converter.backends."
"imagemagick, converter.backends.graphicsmagick and converter.backends.python."
msgstr ""
"Конвертер графических файлов. Возможные варианты: converter.backends."
"imagemagick, converter.backends.graphicsmagick и converter.backends.python."
"Graphics conversion backend to use. Options are: "
"converter.backends.imagemagick, converter.backends.graphicsmagick and "
"converter.backends.python."
msgstr "Конвертер графических файлов. Возможные варианты: converter.backends.imagemagick, converter.backends.graphicsmagick и converter.backends.python."
#: conf/settings.py:16
msgid "Path to the unoconv program."
@@ -928,9 +919,11 @@ msgstr "Путь к программе unoconv."
msgid ""
"Use alternate method of connection to LibreOffice using a pipe, it is slower"
" but less prone to segmentation faults."
msgstr "Использовать альтернативный способ подключения к LibreOffice использованием конвейера pipe, это медленнее, но менее опасно ошибкой сегментации."
#: conf/settings.py:18
msgid "Path to the libreoffice program."
msgstr ""
"Использовать альтернативный способ подключения к LibreOffice использованием "
"конвейера pipe, это медленнее, но менее опасно ошибкой сегментации."
#: templates/converter_file_formats_help.html:3
msgid "Help"
@@ -941,5 +934,4 @@ msgstr "Помощь"
msgid ""
"These are the file formats supported by the currently selected converter "
"backend. In this case: '%(backend)s'"
msgstr ""
"Эти форматы поддерживают выбранный конвертер. Сейчас это: '%(backend)s'"
msgstr "Эти форматы поддерживают выбранный конвертер. Сейчас это: '%(backend)s'"

Binary file not shown.

View File

@@ -0,0 +1,215 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <tetja.rediske@googlemail.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-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-04-20 11:04+0000\n"
"Last-Translator: tetjarediske <tetja.rediske@googlemail.com>\n"
"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "Private Schlüssel"
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "Öffentliche Schlüssel"
#: __init__.py:16
msgid "delete"
msgstr "Löschen"
#: __init__.py:17
msgid "query keyservers"
msgstr "Schlüsselserver abfragen"
#: __init__.py:18
msgid "import"
msgstr "Importieren"
#: __init__.py:19
msgid "key management"
msgstr "Schlüssel-Management"
#: api.py:24
msgid "Public"
msgstr "Öffentlich"
#: api.py:25
msgid "Secret"
msgstr "Geheim"
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:53
msgid "Bad signature."
msgstr "Ungültige Signatur."
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Dokument nicht signiert oder ungültige Signatur."
#: api.py:61
msgid "Signature error."
msgstr "Signatur Fehler."
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr "Das Dokument ist signiert, aber kein öffentlicher Schlüssel zur Überprüfung verfügbar."
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr "Dokument ist signiert, und die Unterschrift ist gültig."
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr "Das Dokument ist mit einer gültigen Signatur signiert."
#: api.py:146
msgid "unknown"
msgstr "Unbekannt"
#: forms.py:7
msgid "Term"
msgstr "Begriff"
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr "Name, E-Mail-, Schlüssel-ID oder Fingerabdruck des Schlüssels der gesucht wird."
#: permissions.py:7
msgid "Key management"
msgstr "Schlüssel-Management"
#: permissions.py:9
msgid "View keys"
msgstr "Schlüssel anzeigen"
#: permissions.py:10
msgid "Delete keys"
msgstr "Lösche Schlüssel"
#: permissions.py:11
msgid "Query keyservers"
msgstr "Keyserver abfragen"
#: permissions.py:12
msgid "Import keys from keyservers"
msgstr "Hole Schlüssel von Schlüsselservern"
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr "Schlüssel: %s, erfolgreich importiert."
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr "Kann Schlüssel nicht importieren: %(key_id)s; %(error)s"
#: views.py:51
msgid "Import key"
msgstr "Schlüssel importieren"
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "Sind Sie sicher, dass Sie folgende Schlüssel-ID importieren möchten:%s?"
#: views.py:77
msgid "Key ID"
msgstr "Schlüssel ID"
#: views.py:81
msgid "Owner"
msgstr "Eigentümer"
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Schlüssel: %s, erfolgreich gelöscht."
#: views.py:108
msgid "Delete key"
msgstr "Schlüssel löschen"
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
"that is part of a public/private pair the private key will be deleted as "
"well."
msgstr "Sind Sie sicher, dass Sie den Schlüssel löschen wollen :%s? Wenn Sie einen öffentlichen Schlüssel, der Teil eines öffentlichen/privaten Paar ist, zu löschen versuchen, wir der private Schlüssel ebenfalls gelöscht."
#: views.py:128
msgid "Query key server"
msgstr "Schlüssel Abfrage Server"
#: views.py:141
msgid "results"
msgstr "Ergebnis"
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:150
msgid "type"
msgstr "Typ"
#: views.py:154
msgid "creation date"
msgstr "Erstellungsdatum"
#: views.py:158
msgid "disabled"
msgstr "Deaktiviert"
#: views.py:162
msgid "expiration date"
msgstr "Ablaufdatum"
#: views.py:166
msgid "expired"
msgstr "Abgelaufen"
#: views.py:170
msgid "length"
msgstr "Länge"
#: views.py:174
msgid "revoked"
msgstr "Zurückgezogen"
#: views.py:179
msgid "Identifies"
msgstr "Identifiziert"
#: conf/settings.py:15
msgid "List of keyservers to be queried for unknown keys."
msgstr "Liste der Server, die nach unbekannten Schlüsseln durchsucht werden."
#: conf/settings.py:16
msgid "Home directory used to store keys as well as configuration files."
msgstr "Verzeichnis zum speichern von Schlüsseln und Konfigurations-Dateien"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:03-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,11 +17,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr ""
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr ""
@@ -41,59 +41,59 @@ msgstr ""
msgid "key management"
msgstr ""
#: api.py:19
#: api.py:24
msgid "Public"
msgstr ""
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr ""
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr ""
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr ""
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr ""
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr ""
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr ""
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr ""
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr ""
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr ""
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
@@ -117,43 +117,43 @@ msgstr ""
msgid "Import keys from keyservers"
msgstr ""
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr ""
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr ""
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr ""
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr ""
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr ""
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr ""
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr ""
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -161,47 +161,47 @@ msgid ""
"well."
msgstr ""
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr ""
#: views.py:142
#: views.py:141
msgid "results"
msgstr ""
#: views.py:147
#: views.py:146
msgid "ID"
msgstr ""
#: views.py:151
#: views.py:150
msgid "type"
msgstr ""
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr ""
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr ""
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr ""
#: views.py:167
#: views.py:166
msgid "expired"
msgstr ""
#: views.py:171
#: views.py:170
msgid "length"
msgstr ""
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr ""
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr ""

View File

@@ -7,23 +7,22 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-02 18:37+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "llaves privadas"
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "llaves públicas"
@@ -43,65 +42,61 @@ msgstr "importar"
msgid "key management"
msgstr "manejo de llaves"
#: api.py:19
#: api.py:24
msgid "Public"
msgstr "Pública"
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr "Secreta"
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr "Firma invalida."
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Documento no firmado o firma invalida."
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr "Error de firma."
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr ""
"El document ha sido firmado pero no hay llave pública disponible para "
"verificación."
msgstr "El document ha sido firmado pero no hay llave pública disponible para verificación."
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr "El document ha sido firmado y la firma esta es buen estado."
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr "El document ha sido firmado y la firma ha sido validada."
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr "desconocida"
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr "Término"
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
"Nombre, dirección de correo electrónico, identificador de llave or huella "
"digital de llave a buscar."
msgstr "Nombre, dirección de correo electrónico, identificador de llave or huella digital de llave a buscar."
#: permissions.py:7
msgid "Key management"
@@ -123,105 +118,98 @@ msgstr "Hacer búsquedas en servidores de llaves"
msgid "Import keys from keyservers"
msgstr "Importar llaves del servidores de llaves"
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr "Llave: %s, importada exitosamente."
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr "No se pudo importar la llave: %(key_id)s ; %(error)s "
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr "Importar llave"
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "¿Esta seguro que desea importar la llave: %s?"
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr "Identificador de llave"
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr "Dueño"
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Llave: %s, borrada exitosamente."
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr "Borrar llave"
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
"that is part of a public/private pair the private key will be deleted as "
"well."
msgstr ""
"¿Esta seguro que desea borrar la llave: %s? Si trata de borrar una llave "
"pública que es parte de un par público/privado la llave privada será borrada "
"también."
msgstr "¿Esta seguro que desea borrar la llave: %s? Si trata de borrar una llave pública que es parte de un par público/privado la llave privada será borrada también."
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr "Consultar servidor de llaves"
#: views.py:142
#: views.py:141
msgid "results"
msgstr "resultados"
#: views.py:147
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:151
#: views.py:150
msgid "type"
msgstr "tipo"
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr "fecha de creación"
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr "desactivada"
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr "fecha de expiración"
#: views.py:167
#: views.py:166
msgid "expired"
msgstr "expirada"
#: views.py:171
#: views.py:170
msgid "length"
msgstr "tamaño"
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr "revocada"
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr "Identidades"
#: conf/settings.py:15
msgid "List of keyservers to be queried for unknown keys."
msgstr ""
"Lista de servidores de llaves a ser utilizados para buscar llaves "
"desconocidas."
msgstr "Lista de servidores de llaves a ser utilizados para buscar llaves desconocidas."
#: conf/settings.py:16
msgid "Home directory used to store keys as well as configuration files."
msgstr ""
"Directorio de inicio utilizado para almacenar las llaves, así como los "
"archivos de configuración."
msgstr "Directorio de inicio utilizado para almacenar las llaves, así como los archivos de configuración."

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-03-21 13:33+0000\n"
"Last-Translator: Pierpaolo Baldan <pierpaolo.baldan@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n"
@@ -19,11 +19,11 @@ msgstr ""
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "Chiave privata"
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "Chiave pubblica"
@@ -43,59 +43,59 @@ msgstr "import"
msgid "key management"
msgstr "gestione della firma"
#: api.py:19
#: api.py:24
msgid "Public"
msgstr "Pubblica"
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr "Segreta"
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr "Firma cattiva."
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Documento non firmato o firma invalida."
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr "Errore di firma"
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr "Il documento è stato firmato, ma la chiave pubblica non è disponibile per la verifica"
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr "Documento firmato e firma è buona."
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr "Il documento è firmato con una firma valida."
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr "sconosciuto"
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr "Scadenza"
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr "Nome, e-mail,key ID , impronte digitali per cercare"
@@ -119,43 +119,43 @@ msgstr "Interroga l'autorità per le chiavi"
msgid "Import keys from keyservers"
msgstr "Importa le chiavi dal server di chiavi"
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr "Chiave: %s, importata con successo."
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr "Impossibile importare chiave id: %(key_id)s ; %(error)s "
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr "Importa chiave"
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "Sei sicuro di voler importare la chiave id: %s?"
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr "chiave ID"
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr "Proprietario"
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "chiave: %s, cancellata con successo."
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr "Cancella chiave"
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -163,47 +163,47 @@ msgid ""
"well."
msgstr "Sei sicuro di voler cancellare la chiave: %s? Se provi a cancellare una chiave pubblica che è parte di una coppia publica/privata anche la chiave privata sarà cancellata"
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr "Interroga il server delle chiavi"
#: views.py:142
#: views.py:141
msgid "results"
msgstr "risultati"
#: views.py:147
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:151
#: views.py:150
msgid "type"
msgstr "tipo"
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr "data di crezione"
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr "disabilitata"
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr "data scadenza"
#: views.py:167
#: views.py:166
msgid "expired"
msgstr "scaduta"
#: views.py:171
#: views.py:170
msgid "length"
msgstr "lunghezza"
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr "revocata"
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr "Identifica"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-21 20:34+0000\n"
"Last-Translator: mic <winterfall24@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n"
@@ -18,11 +18,11 @@ msgstr ""
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "private keys"
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "public keys"
@@ -42,59 +42,59 @@ msgstr "import"
msgid "key management"
msgstr "zarządzanie kluczami"
#: api.py:19
#: api.py:24
msgid "Public"
msgstr "Publiczny"
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr "Secret"
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr "Zły podpis."
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Dokumentu nie podpisany lub nieprawidłowy podpis."
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr "Błąd podpisu."
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr "Dokument został podpisany, ale klucz publiczny nie jest dostępny do weryfikacji."
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr "Dokument został podpisany, a podpis jest dobry."
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr "Dokument podpisany za pomocą ważnego podpisu."
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr "nieznany"
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr "Term"
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr "Imię i nazwisko, e-mail, key ID lub key fingerprint kluc szukać."
@@ -118,43 +118,43 @@ msgstr "Query keyservers"
msgid "Import keys from keyservers"
msgstr "Import keys from keyservers"
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr "Klucz:%s, zaimportowany."
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr "Nie można zaimportować ID klucza: %(key_id)s ; %(error)s "
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr "Importuj klucz"
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "Czy na pewno chcesz importować ID klucza:%s?"
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr "Key ID"
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr "Właściciel"
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Klucz:%s, został usunięty."
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr "Usuń klucz"
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -162,47 +162,47 @@ msgid ""
"well."
msgstr "Czy na pewno chcesz usunąć klucz:%s? Jeśli próbujesz usunąć klucza publiczny, który jest częścią pary publiczny / prywatny klucz prywatny zostanie usunięty również."
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr "Query key server"
#: views.py:142
#: views.py:141
msgid "results"
msgstr "wyniki"
#: views.py:147
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:151
#: views.py:150
msgid "type"
msgstr "typ"
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr "creation date"
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr "wyłączone"
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr "data ważności"
#: views.py:167
#: views.py:166
msgid "expired"
msgstr "wygasł"
#: views.py:171
#: views.py:170
msgid "length"
msgstr "długość"
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr "odwołany"
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr "Identyfikuje"

View File

@@ -7,23 +7,22 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/"
"team/pt/)\n"
"Language: pt\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "chaves privadas"
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "chaves públicas"
@@ -43,59 +42,59 @@ msgstr ""
msgid "key management"
msgstr ""
#: api.py:19
#: api.py:24
msgid "Public"
msgstr "Público"
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr "Segredo"
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr "Assinatura ruim."
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Documento não assinado ou inválido assinatura."
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr "Erro de assinatura."
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr "desconhecido"
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr ""
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
@@ -119,43 +118,43 @@ msgstr "Consulta servidores de chaves"
msgid "Import keys from keyservers"
msgstr ""
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr ""
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr "Importar chave"
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "Você tem certeza que deseja importar chave: %s?"
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr "ID da chave"
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr "Proprietário"
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Chave: %s, apagado com sucesso."
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr "Excluir chave"
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -163,47 +162,47 @@ msgid ""
"well."
msgstr ""
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr "Consultar servidor de chaves"
#: views.py:142
#: views.py:141
msgid "results"
msgstr "resultados"
#: views.py:147
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:151
#: views.py:150
msgid "type"
msgstr "tipo"
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr "data de criação"
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr "desativada"
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr "data de validade"
#: views.py:167
#: views.py:166
msgid "expired"
msgstr "expirado"
#: views.py:171
#: views.py:170
msgid "length"
msgstr "comprimento"
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr ""
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr ""

View File

@@ -3,28 +3,26 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Sergey Glita <gsv70@mail.ru>, 2011.
# Sergey Glita <gsv70@mail.ru>, 2011, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/"
"ru/)\n"
"Language: ru\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:09-0400\n"
"PO-Revision-Date: 2012-02-03 05:10+0000\n"
"Last-Translator: Sergey Glita <gsv70@mail.ru>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:14 views.py:67
#: __init__.py:14 views.py:66
msgid "private keys"
msgstr "секретные ключи"
#: __init__.py:15 views.py:70
#: __init__.py:15 views.py:69
msgid "public keys"
msgstr "открытые ключи"
@@ -44,65 +42,65 @@ msgstr "получить"
msgid "key management"
msgstr "управление ключами"
#: api.py:19
#: api.py:24
msgid "Public"
msgstr "Открытый"
#: api.py:20
#: api.py:25
msgid "Secret"
msgstr "секретный"
#: api.py:28 api.py:33
#: api.py:33 api.py:38
msgid "RSA"
msgstr "RSA"
#: api.py:29
#: api.py:34
msgid "DSA"
msgstr "DSA"
#: api.py:34
#: api.py:39
msgid "Elgamal"
msgstr "Elgamal"
#: api.py:48
#: api.py:53
msgid "Bad signature."
msgstr "Неверная подпись"
#: api.py:52
#: api.py:57
msgid "Document not signed or invalid signature."
msgstr "Документ не подписан, либо подпись неверна."
#: api.py:56
#: api.py:61
msgid "Signature error."
msgstr "Ошибка подписи."
#: api.py:60
#: api.py:65
msgid "Document is signed but no public key is available for verification."
msgstr "Документ подписан, но нет открытого ключа для проверки."
#: api.py:64
#: api.py:69
msgid "Document is signed, and signature is good."
msgstr "Документ подписан и подпись верна."
#: api.py:68
#: api.py:73
msgid "Document is signed with a valid signature."
msgstr "Документ подписан допустимой подписью."
#: api.py:141
#: api.py:146
msgid "unknown"
msgstr "неизвестно"
#: forms.py:8
#: forms.py:7
msgid "Term"
msgstr "Term"
#: forms.py:9
#: forms.py:8
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr "Имя, e-mail, ID ключа или отпечаток для поиска."
#: permissions.py:7
msgid "Key management"
msgstr ""
msgstr "Управление ключами"
#: permissions.py:9
msgid "View keys"
@@ -118,95 +116,93 @@ msgstr "Запрос к серверам ключей"
#: permissions.py:12
msgid "Import keys from keyservers"
msgstr ""
msgstr "Импортировать ключи с серверов ключей "
#: views.py:38
#: views.py:37
#, python-format
msgid "Key: %s, imported successfully."
msgstr "Ключ %s, получен."
#: views.py:43
#: views.py:42
#, python-format
msgid "Unable to import key id: %(key_id)s; %(error)s"
msgstr ""
msgstr "Невозможно импортировать ключ %(key_id)s; %(error)s"
#: views.py:52
#: views.py:51
msgid "Import key"
msgstr "Получить ключ"
#: views.py:53
#: views.py:52
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "Хотите получить ключ id: %s?"
#: views.py:78
#: views.py:77
msgid "Key ID"
msgstr "ID ключа"
#: views.py:82
#: views.py:81
msgid "Owner"
msgstr "Владелец"
#: views.py:102
#: views.py:101
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Ключ %s удалён."
#: views.py:109
#: views.py:108
msgid "Delete key"
msgstr "Удалить ключ."
#: views.py:111
#: views.py:110
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
"that is part of a public/private pair the private key will be deleted as "
"well."
msgstr ""
"Вы уверены, что хотите удалить ключ %s? Если вы удалите открытый ключ то "
"соответствующий ему закрытый ключ тоже будет удалён."
msgstr "Вы уверены, что хотите удалить ключ %s? Если вы удалите открытый ключ то соответствующий ему закрытый ключ тоже будет удалён."
#: views.py:129
#: views.py:128
msgid "Query key server"
msgstr "Запросить сервер ключей"
#: views.py:142
#: views.py:141
msgid "results"
msgstr "результаты"
#: views.py:147
#: views.py:146
msgid "ID"
msgstr "ID"
#: views.py:151
#: views.py:150
msgid "type"
msgstr "тип"
#: views.py:155
#: views.py:154
msgid "creation date"
msgstr "дата создания"
#: views.py:159
#: views.py:158
msgid "disabled"
msgstr "запрещено"
#: views.py:163
#: views.py:162
msgid "expiration date"
msgstr "дата окончания"
#: views.py:167
#: views.py:166
msgid "expired"
msgstr "истекло"
#: views.py:171
#: views.py:170
msgid "length"
msgstr "длина"
#: views.py:175
#: views.py:174
msgid "revoked"
msgstr "отозван"
#: views.py:180
#: views.py:179
msgid "Identifies"
msgstr "Identifies"
@@ -216,4 +212,4 @@ msgstr "Список ключевых серверов для запроса н
#: conf/settings.py:16
msgid "Home directory used to store keys as well as configuration files."
msgstr ""
msgstr "Домашний каталог, используемый для хранения ключей, а также файлов конфигурации."

View File

@@ -0,0 +1,97 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <tetja.rediske@googlemail.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-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-04-20 18:09+0000\n"
"Last-Translator: tetjarediske <tetja.rediske@googlemail.com>\n"
"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:19 __init__.py:20
msgid "delete"
msgstr "Löschen"
#: __init__.py:21
msgid "add comment"
msgstr "Kommetar hinzufügen"
#: __init__.py:22
msgid "comments"
msgstr "Kommentare"
#: __init__.py:26
msgid "date"
msgstr "Datum"
#: __init__.py:30
msgid "user"
msgstr "Benutzer"
#: __init__.py:34
msgid "comment"
msgstr "Kommentar"
#: permissions.py:7
msgid "Comments"
msgstr "Kommetare"
#: permissions.py:9
msgid "Create new comments"
msgstr "Kommentare erstellen"
#: permissions.py:10
msgid "Delete comments"
msgstr "Kommentare löschen"
#: permissions.py:11
msgid "View comments"
msgstr "Kommetare ansehen"
#: views.py:36
msgid "Must provide at least one comment."
msgstr "Es muss mindestens ein Kommentar angegeben werden."
#: views.py:46
#, python-format
msgid "Comment \"%s\" deleted successfully."
msgstr "Kommentar %s erfolgreich gelöscht."
#: views.py:48
#, python-format
msgid "Error deleting comment \"%(comment)s\": %(error)s"
msgstr "Fehler beim löschen von Kommentar \"%(comment)s\": %(error)s"
#: views.py:63
#, python-format
msgid "Are you sure you wish to delete the comment: %s?"
msgstr "Sind Sie sicher, dass Sie diesen Kommentar löschen möchten: %s?"
#: views.py:65
#, python-format
msgid "Are you sure you wish to delete the comments: %s?"
msgstr "Sind Sie sicher, dass Sie diese Kommentare löschen möchten: %s?"
#: views.py:99
msgid "Comment added successfully."
msgstr "Kommentar erfolgreich hinzugefügt."
#: views.py:106
#, python-format
msgid "Add comment to document: %s"
msgstr "Kommentar zu Dokument hinzufügen: %s"
#: views.py:126
#, python-format
msgid "comments: %s"
msgstr "Kommentare: %s"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:02-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"

View File

@@ -6,16 +6,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:19 __init__.py:20

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-21 14:50+0000\n"
"Last-Translator: mic <winterfall24@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n"

View File

@@ -7,16 +7,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/"
"team/pt/)\n"
"Language: pt\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:19 __init__.py:20

View File

@@ -7,18 +7,16 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/"
"ru/)\n"
"Language: ru\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
#: __init__.py:19 __init__.py:20
msgid "delete"

View File

@@ -0,0 +1,364 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <tilmann.sittig@web.de>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-06-12 09:24+0000\n"
"Last-Translator: tilmannsittig <tilmann.sittig@web.de>\n"
"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:31 __init__.py:45 __init__.py:47 models.py:42 views.py:38
#: views.py:283
msgid "indexes"
msgstr "indices"
#: __init__.py:32 __init__.py:42
msgid "index list"
msgstr "Index-Liste"
#: __init__.py:33 views.py:77
msgid "create index"
msgstr "Index erstellen"
#: __init__.py:34 __init__.py:39
msgid "edit"
msgstr "bearbeiten"
#: __init__.py:35 __init__.py:40
msgid "delete"
msgstr "löschen"
#: __init__.py:36
msgid "tree template"
msgstr "Baum-Vorlage"
#: __init__.py:38
msgid "new child node"
msgstr "Neuen Kind-Knoten"
#: __init__.py:44
msgid "go up one level"
msgstr "Gehe eine Ebene höher"
#: __init__.py:49
msgid "rebuild indexes"
msgstr "Indices neu erstellen"
#: __init__.py:49
msgid "Deletes and creates from scratch all the document indexes."
msgstr "Löscht und erstellt alle Dokumenten-Indices neu."
#: __init__.py:51
msgid "Indexes"
msgstr "Indices"
#: api.py:69
#, python-format
msgid "Maximum suffix (%s) count reached."
msgstr "Maximale Suffix (%s) Anzahl ist erreicht."
#: api.py:83
#, python-format
msgid ""
"Error in document indexing update expression: %(expression)s; %(exception)s"
msgstr "Fehler Dokument-Index-Updateausdruck: %(expression)s; %(exception)s"
#: api.py:92 api.py:107
#, python-format
msgid ""
"Error updating document index, expression: %(expression)s; %(exception)s"
msgstr "Fehler beim Aktualisieren des Dokumenten-Index, Ausdruck: %(expression)s; %(exception)s"
#: api.py:149
#, python-format
msgid "Unable to delete document indexing node; %s"
msgstr "Dokumenten-Index-Knoten kann nicht gelöscht werden: %s"
#: filesystem.py:51
#, python-format
msgid "Unable to create indexing directory; %s"
msgstr "Dokumenten-Index-Verzeichnis kann nicht erstellt werden: %s"
#: filesystem.py:69
#, python-format
msgid ""
"Unable to create symbolic link, file exists and could not be deleted: "
"%(filepath)s; %(exc)s"
msgstr "Erstellen der symb. Verknüpfung nicht möglich, Datei existiert und kann nicht gelöscht werden: %(filepath)s; %(exc)s"
#: filesystem.py:71
#, python-format
msgid "Unable to create symbolic link: %(filepath)s; %(exc)s"
msgstr "Erstellen der symb. Verknüpfung nicht möglich: %(filepath)s; %(exc)s"
#: filesystem.py:84
#, python-format
msgid "Unable to delete document symbolic link; %s"
msgstr "Löschen der symb. Verknüpfung nicht möglich: %s"
#: filesystem.py:96
#, python-format
msgid "Unable to delete indexing directory; %s"
msgstr "Löschen des Index-Verzeichnisses nicht möglich: %s"
#: models.py:13
#, python-format
msgid "Available functions: %s"
msgstr "Verfügbare Funktionen: %s"
#: models.py:17 views.py:42
msgid "name"
msgstr "Name"
#: models.py:17
msgid "Internal name used to reference this index."
msgstr "Interner Name um den Index zu identifizieren."
#: models.py:18 views.py:43
msgid "title"
msgstr "Titel"
#: models.py:18
msgid "The name that will be visible to users."
msgstr "Den Benutzern angezeigter Name."
#: models.py:19 models.py:50 views.py:44 views.py:168
msgid "enabled"
msgstr "aktiviert"
#: models.py:19
msgid ""
"Causes this index to be visible and updated when document data changes."
msgstr "Sorgt dafür, dass der Index sichtbar ist und aktualisiert wird, wenn sich die Inhalte der Dokumente ändern."
#: models.py:41 models.py:47 views.py:104 views.py:135 views.py:161
#: views.py:198 views.py:228 views.py:268
msgid "index"
msgstr "Index"
#: models.py:48
msgid "indexing expression"
msgstr "Indizierungs-Ausdruck"
#: models.py:48
msgid "Enter a python string expression to be evaluated."
msgstr "Geben Sie einen python-String-Ausdruck an, der ausgewertet werden soll."
#: models.py:50
msgid "Causes this node to be visible and updated when document data changes."
msgstr "Sorgt dafür, dass dieser Knoten sichtbar ist und aktualisiert wird, wenn sich die Inhalte der Dokumente ändern."
#: models.py:51
msgid "link documents"
msgstr "Dokumente verknüpfen"
#: models.py:51
msgid ""
"Check this option to have this node act as a container for documents and not"
" as a parent for further nodes."
msgstr "Wählen Sie diese Option, wenn der Knoten als Ordner für Dokumente und nicht als Eltern-Knoten für weitere Kind-Knotenpunkte fungieren soll."
#: models.py:57 models.py:63
msgid "index template node"
msgstr "Index-Vorlagen-Knotenpunkt"
#: models.py:58
msgid "indexes template nodes"
msgstr "Indices-Vorlagen-Knotenpunkte"
#: models.py:64
msgid "value"
msgstr "Wert"
#: models.py:65
msgid "documents"
msgstr "Dokumente"
#: models.py:75
msgid "index instance node"
msgstr "Index-Instanz-Knotenpunkt"
#: models.py:76
msgid "indexes instance nodes"
msgstr "Indices-Instanz-Knotenpunkte"
#: models.py:80
msgid "index instance"
msgstr "Index-Instanz"
#: models.py:81
msgid "document"
msgstr "Dokument"
#: models.py:88
msgid "document rename count"
msgstr "Zähler für Dokument-Umbenennung"
#: models.py:89
msgid "documents rename count"
msgstr "Zähler für Dokumenten-Umbenennung"
#: permissions.py:7
msgid "Indexing"
msgstr "Indizieren"
#: permissions.py:9
msgid "Configure document indexes"
msgstr "Dokument-Indices konfigurieren"
#: permissions.py:10
msgid "Create new document indexes"
msgstr "Neue Dokument-Indices erstellen "
#: permissions.py:11
msgid "Edit document indexes"
msgstr "Dokument-Indices bearbeiten"
#: permissions.py:12
msgid "Delete document indexes"
msgstr "Dokument-Indices löschen"
#: permissions.py:14
msgid "View document indexes"
msgstr "Zeige Dokumenten-Indices"
#: permissions.py:15
msgid "Rebuild document indexes"
msgstr "Dokumenten-Indices neu erstellen"
#: utils.py:19
msgid "document indexes"
msgstr "Dokument-Indices"
#: views.py:71
msgid "Index created successfully."
msgstr "Index erfolgreich angelegt."
#: views.py:95
msgid "Index edited successfully"
msgstr "Index erfolgreich bearbeitet."
#: views.py:101
#, python-format
msgid "edit index: %s"
msgstr "Index bearbeiten: %s"
#: views.py:126
#, python-format
msgid "Index: %s deleted successfully."
msgstr ""
#: views.py:128
#, python-format
msgid "Index: %(index)s delete error: %(error)s"
msgstr ""
#: views.py:140
#, python-format
msgid "Are you sure you with to delete the index: %s?"
msgstr ""
#: views.py:164
#, python-format
msgid "tree template nodes for index: %s"
msgstr ""
#: views.py:167
msgid "level"
msgstr ""
#: views.py:189
msgid "Index template node created successfully."
msgstr ""
#: views.py:195
msgid "create child node"
msgstr ""
#: views.py:216
msgid "Index template node edited successfully"
msgstr ""
#: views.py:222
#, python-format
msgid "edit index template node: %s"
msgstr ""
#: views.py:229 views.py:269 views.py:337
msgid "node"
msgstr ""
#: views.py:251
#, python-format
msgid "Node: %s deleted successfully."
msgstr ""
#: views.py:253
#, python-format
msgid "Node: %(node)s delete error: %(error)s"
msgstr ""
#: views.py:262
#, python-format
msgid "Are you sure you with to delete the index template node: %s?"
msgstr ""
#: views.py:286
msgid "nodes"
msgstr ""
#: views.py:319
#, python-format
msgid "contents for index: %s"
msgstr "Inhalt für Index: %s"
#: views.py:341
msgid "items"
msgstr "Elemente"
#: views.py:366
msgid "Are you sure you wish to rebuild all indexes?"
msgstr "Sind Sie sicher, dass Sie alle Indices neu erstellen möchten?"
#: views.py:367
msgid "On large databases this operation may take some time to execute."
msgstr "Bei großen Datenbanken kann dieser Vorgang einige Zeit in Anspruch nehmen."
#: views.py:373
msgid "Index rebuild completed successfully."
msgstr "Neuaufbau des Index erfolgreich abgeschlossen."
#: views.py:380
#, python-format
msgid "Index rebuild error: %s"
msgstr "Fehler bei Neuaufbau des Index: %s"
#: views.py:402
#, python-format
msgid "indexes containing: %s"
msgstr "Indices enthalten: %s"
#: conf/settings.py:22
msgid ""
"A dictionary that maps the index name and where on the filesystem that index"
" will be mirrored."
msgstr ""
#: templates/indexing_help.html:3
msgid "What are indexes?"
msgstr "Was sind Indices?"
#: templates/indexing_help.html:4
msgid "Indexes group documents into a tree like hierarchical structure."
msgstr "Indices gruppieren Dokumente in eine baumartige, hierarchische Struktur."

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 19:02-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,8 +17,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: __init__.py:31 __init__.py:45 __init__.py:47 models.py:42 views.py:36
#: views.py:280
#: __init__.py:31 __init__.py:45 __init__.py:47 models.py:42 views.py:38
#: views.py:283
msgid "indexes"
msgstr ""
@@ -26,7 +26,7 @@ msgstr ""
msgid "index list"
msgstr ""
#: __init__.py:33 views.py:74
#: __init__.py:33 views.py:77
msgid "create index"
msgstr ""
@@ -62,24 +62,24 @@ msgstr ""
msgid "Indexes"
msgstr ""
#: api.py:71
#: api.py:69
#, python-format
msgid "Maximum suffix (%s) count reached."
msgstr ""
#: api.py:85
#: api.py:83
#, python-format
msgid ""
"Error in document indexing update expression: %(expression)s; %(exception)s"
msgstr ""
#: api.py:96 api.py:111
#: api.py:92 api.py:107
#, python-format
msgid ""
"Error updating document index, expression: %(expression)s; %(exception)s"
msgstr ""
#: api.py:150
#: api.py:149
#, python-format
msgid "Unable to delete document indexing node; %s"
msgstr ""
@@ -116,7 +116,7 @@ msgstr ""
msgid "Available functions: %s"
msgstr ""
#: models.py:17 views.py:40
#: models.py:17 views.py:42
msgid "name"
msgstr ""
@@ -124,7 +124,7 @@ msgstr ""
msgid "Internal name used to reference this index."
msgstr ""
#: models.py:18 views.py:41
#: models.py:18 views.py:43
msgid "title"
msgstr ""
@@ -132,7 +132,7 @@ msgstr ""
msgid "The name that will be visible to users."
msgstr ""
#: models.py:19 models.py:50
#: models.py:19 models.py:50 views.py:44 views.py:168
msgid "enabled"
msgstr ""
@@ -140,8 +140,8 @@ msgstr ""
msgid "Causes this index to be visible and updated when document data changes."
msgstr ""
#: models.py:41 models.py:47 views.py:101 views.py:132 views.py:159
#: views.py:195 views.py:225 views.py:265
#: models.py:41 models.py:47 views.py:104 views.py:135 views.py:161
#: views.py:198 views.py:228 views.py:268
msgid "index"
msgstr ""
@@ -239,110 +239,110 @@ msgstr ""
msgid "document indexes"
msgstr ""
#: views.py:68
#: views.py:71
msgid "Index created successfully."
msgstr ""
#: views.py:92
#: views.py:95
msgid "Index edited successfully"
msgstr ""
#: views.py:98
#: views.py:101
#, python-format
msgid "edit index: %s"
msgstr ""
#: views.py:123
#: views.py:126
#, python-format
msgid "Index: %s deleted successfully."
msgstr ""
#: views.py:125
#: views.py:128
#, python-format
msgid "Index: %(index)s delete error: %(error)s"
msgstr ""
#: views.py:137
#: views.py:140
#, python-format
msgid "Are you sure you with to delete the index: %s?"
msgstr ""
#: views.py:162
#: views.py:164
#, python-format
msgid "tree template nodes for index: %s"
msgstr ""
#: views.py:165
#: views.py:167
msgid "level"
msgstr ""
#: views.py:186
#: views.py:189
msgid "Index template node created successfully."
msgstr ""
#: views.py:192
#: views.py:195
msgid "create child node"
msgstr ""
#: views.py:213
#: views.py:216
msgid "Index template node edited successfully"
msgstr ""
#: views.py:219
#: views.py:222
#, python-format
msgid "edit index template node: %s"
msgstr ""
#: views.py:226 views.py:266 views.py:334
#: views.py:229 views.py:269 views.py:337
msgid "node"
msgstr ""
#: views.py:248
#: views.py:251
#, python-format
msgid "Node: %s deleted successfully."
msgstr ""
#: views.py:250
#: views.py:253
#, python-format
msgid "Node: %(node)s delete error: %(error)s"
msgstr ""
#: views.py:259
#: views.py:262
#, python-format
msgid "Are you sure you with to delete the index template node: %s?"
msgstr ""
#: views.py:283
#: views.py:286
msgid "nodes"
msgstr ""
#: views.py:316
#: views.py:319
#, python-format
msgid "contents for index: %s"
msgstr ""
#: views.py:338
#: views.py:341
msgid "items"
msgstr ""
#: views.py:363
#: views.py:366
msgid "Are you sure you wish to rebuild all indexes?"
msgstr ""
#: views.py:364
#: views.py:367
msgid "On large databases this operation may take some time to execute."
msgstr ""
#: views.py:370
#: views.py:373
msgid "Index rebuild completed successfully."
msgstr ""
#: views.py:375
#: views.py:380
#, python-format
msgid "Index rebuild error: %s"
msgstr ""
#: views.py:397
#: views.py:402
#, python-format
msgid "indexes containing: %s"
msgstr ""

View File

@@ -8,18 +8,18 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2012-02-12 15:20-0400\n"
"POT-Creation-Date: 2012-06-17 18:08-0400\n"
"PO-Revision-Date: 2012-02-12 19:28+0000\n"
"Last-Translator: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/es/)\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:31 __init__.py:45 __init__.py:47 models.py:42 views.py:36
#: views.py:280
#: __init__.py:31 __init__.py:45 __init__.py:47 models.py:42 views.py:38
#: views.py:283
msgid "indexes"
msgstr "índices"
@@ -27,7 +27,7 @@ msgstr "índices"
msgid "index list"
msgstr "lista de indices"
#: __init__.py:33 views.py:74
#: __init__.py:33 views.py:77
msgid "create index"
msgstr "crear índice"
@@ -63,28 +63,24 @@ msgstr "Borra y crea de la nada todos los índices de documentos."
msgid "Indexes"
msgstr "Índices"
#: api.py:71
#: api.py:69
#, python-format
msgid "Maximum suffix (%s) count reached."
msgstr "Cuenta máxima de sufijo (%s) alcanzada."
#: api.py:85
#: api.py:83
#, python-format
msgid ""
"Error in document indexing update expression: %(expression)s; %(exception)s"
msgstr ""
"Error en la expresión de actualización de indexación: %(expression)s; "
"%(exception)s "
msgstr "Error en la expresión de actualización de indexación: %(expression)s; %(exception)s "
#: api.py:96 api.py:111
#: api.py:92 api.py:107
#, python-format
msgid ""
"Error updating document index, expression: %(expression)s; %(exception)s"
msgstr ""
"Error actualizando el indice de documento, expresión: %(expression)s; "
"%(exception)s "
msgstr "Error actualizando el indice de documento, expresión: %(expression)s; %(exception)s "
#: api.py:150
#: api.py:149
#, python-format
msgid "Unable to delete document indexing node; %s"
msgstr "No se puede eliminar el nodo de indexación de documento; %s"
@@ -99,9 +95,7 @@ msgstr "No se puede crear el directorio de indexación; %s"
msgid ""
"Unable to create symbolic link, file exists and could not be deleted: "
"%(filepath)s; %(exc)s"
msgstr ""
"No se puede crear un enlace simbólico, el archivo existe y no puede "
"eliminarse: %(filepath)s; %(exc)s "
msgstr "No se puede crear un enlace simbólico, el archivo existe y no puede eliminarse: %(filepath)s; %(exc)s "
#: filesystem.py:71
#, python-format
@@ -123,7 +117,7 @@ msgstr "No se puede eliminar el directorio de indexación; %s"
msgid "Available functions: %s"
msgstr "Funciones disponibles: %s"
#: models.py:17 views.py:40
#: models.py:17 views.py:42
msgid "name"
msgstr "nombre"
@@ -131,7 +125,7 @@ msgstr "nombre"
msgid "Internal name used to reference this index."
msgstr "Nombre interno que se utiliza para hacer referencia a este índice."
#: models.py:18 views.py:41
#: models.py:18 views.py:43
msgid "title"
msgstr "título"
@@ -139,19 +133,17 @@ msgstr "título"
msgid "The name that will be visible to users."
msgstr "El nombre que será visible para los usuarios."
#: models.py:19 models.py:50
#: models.py:19 models.py:50 views.py:44 views.py:168
msgid "enabled"
msgstr "habilitado"
#: models.py:19
msgid ""
"Causes this index to be visible and updated when document data changes."
msgstr ""
"Hace que este índice sea visible y actualizado cuando los datos de "
"documentos cambien."
msgstr "Hace que este índice sea visible y actualizado cuando los datos de documentos cambien."
#: models.py:41 models.py:47 views.py:101 views.py:132 views.py:159
#: views.py:195 views.py:225 views.py:265
#: models.py:41 models.py:47 views.py:104 views.py:135 views.py:161
#: views.py:198 views.py:228 views.py:268
msgid "index"
msgstr "índice"
@@ -165,9 +157,7 @@ msgstr "Introduzca una expresión de python para ser evaluada."
#: models.py:50
msgid "Causes this node to be visible and updated when document data changes."
msgstr ""
"Causa que este nodo sea visible y actualizado cuando los datos de los "
"documentos son cambiados."
msgstr "Causa que este nodo sea visible y actualizado cuando los datos de los documentos son cambiados."
#: models.py:51
msgid "link documents"
@@ -177,9 +167,7 @@ msgstr "enlace de documentos"
msgid ""
"Check this option to have this node act as a container for documents and not"
" as a parent for further nodes."
msgstr ""
"Marque esta opción para que el nodo actue como un contenedor de documentos y"
" no como un padre para mas nodos secundarios."
msgstr "Marque esta opción para que el nodo actue como un contenedor de documentos y no como un padre para mas nodos secundarios."
#: models.py:57 models.py:63
msgid "index template node"
@@ -253,112 +241,110 @@ msgstr "Generar índices de documentos"
msgid "document indexes"
msgstr "indices de documentos"
#: views.py:68
#: views.py:71
msgid "Index created successfully."
msgstr "Índice creado con exitosamente."
#: views.py:92
#: views.py:95
msgid "Index edited successfully"
msgstr "Índice editado con exitosamente."
#: views.py:98
#: views.py:101
#, python-format
msgid "edit index: %s"
msgstr "editar Índice: %s"
#: views.py:123
#: views.py:126
#, python-format
msgid "Index: %s deleted successfully."
msgstr "Índice: %s eliminado exitosamente."
#: views.py:125
#: views.py:128
#, python-format
msgid "Index: %(index)s delete error: %(error)s"
msgstr "Error al borrar índice: %(index)s, error: %(error)s "
#: views.py:137
#: views.py:140
#, python-format
msgid "Are you sure you with to delete the index: %s?"
msgstr "¿Seguro que desea eliminar el índice: %s?"
#: views.py:162
#: views.py:164
#, python-format
msgid "tree template nodes for index: %s"
msgstr "nodos de la plantilla del árbol del índice: %s"
#: views.py:165
#: views.py:167
msgid "level"
msgstr "nivel"
#: views.py:186
#: views.py:189
msgid "Index template node created successfully."
msgstr "Nodo de plantilla de índice creado exitosamente."
#: views.py:192
#: views.py:195
msgid "create child node"
msgstr "crear nodo hijo"
#: views.py:213
#: views.py:216
msgid "Index template node edited successfully"
msgstr "Nodo de la plantilla de índice editado exitosamente"
#: views.py:219
#: views.py:222
#, python-format
msgid "edit index template node: %s"
msgstr "editar nodo de la plantilla de índice: %s"
#: views.py:226 views.py:266 views.py:334
#: views.py:229 views.py:269 views.py:337
msgid "node"
msgstr "nodo"
#: views.py:248
#: views.py:251
#, python-format
msgid "Node: %s deleted successfully."
msgstr "Nodo: %s eliminado exitosamente."
#: views.py:250
#: views.py:253
#, python-format
msgid "Node: %(node)s delete error: %(error)s"
msgstr "Error de eliminación para nodo: %(node)s, %(error)s "
#: views.py:259
#: views.py:262
#, python-format
msgid "Are you sure you with to delete the index template node: %s?"
msgstr "¿Seguro que desea eliminar el nodo de plantilla de indice: %s?"
#: views.py:283
#: views.py:286
msgid "nodes"
msgstr "nodos"
#: views.py:316
#: views.py:319
#, python-format
msgid "contents for index: %s"
msgstr "contenido del indice: %s"
#: views.py:338
#: views.py:341
msgid "items"
msgstr "artículos"
#: views.py:363
#: views.py:366
msgid "Are you sure you wish to rebuild all indexes?"
msgstr "¿Está seguro que desea reconstruir todos los índices?"
#: views.py:364
#: views.py:367
msgid "On large databases this operation may take some time to execute."
msgstr ""
"En bases de datos de gran tamaño esta operación puede tardar algún tiempo en"
" ejecutarse."
msgstr "En bases de datos de gran tamaño esta operación puede tardar algún tiempo en ejecutarse."
#: views.py:370
#: views.py:373
msgid "Index rebuild completed successfully."
msgstr "Reconstrucción de Índices completada exitosamente."
#: views.py:375
#: views.py:380
#, python-format
msgid "Index rebuild error: %s"
msgstr "Error de reconstrucción de índices: %s"
#: views.py:397
#: views.py:402
#, python-format
msgid "indexes containing: %s"
msgstr "índices que contienen: %s"
@@ -367,9 +353,7 @@ msgstr "índices que contienen: %s"
msgid ""
"A dictionary that maps the index name and where on the filesystem that index"
" will be mirrored."
msgstr ""
"Un diccionario que asigna el nombre del índice y en qué parte del sistema de"
" archivos dicho índice se va a reflejar."
msgstr "Un diccionario que asigna el nombre del índice y en qué parte del sistema de archivos dicho índice se va a reflejar."
#: templates/indexing_help.html:3
msgid "What are indexes?"
@@ -377,7 +361,4 @@ msgstr "¿Que son los índices?"
#: templates/indexing_help.html:4
msgid "Indexes group documents into a tree like hierarchical structure."
msgstr ""
"Los índices agrupan documentos en una estructura jerárquica tipo árbol. "
msgstr "Los índices agrupan documentos en una estructura jerárquica tipo árbol. "

Some files were not shown because too many files have changed in this diff Show More