Merge branch 'development' into feature/ACL_support

This commit is contained in:
Roberto Rosario
2011-12-07 16:09:45 -04:00
81 changed files with 6949 additions and 318 deletions

View File

@@ -4,6 +4,7 @@ source_lang = en
trans.es = apps/converter/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-common]
source_file = apps/common/locale/en/LC_MESSAGES/django.po
@@ -11,6 +12,7 @@ source_lang = en
trans.es = apps/common/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-permissions]
source_file = apps/permissions/locale/en/LC_MESSAGES/django.po
@@ -18,6 +20,7 @@ source_lang = en
trans.es = apps/permissions/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-sources]
source_file = apps/sources/locale/en/LC_MESSAGES/django.po
@@ -25,6 +28,7 @@ source_lang = en
trans.es = apps/sources/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-document_indexing]
source_file = apps/document_indexing/locale/en/LC_MESSAGES/django.po
@@ -32,6 +36,7 @@ source_lang = en
trans.es = apps/document_indexing/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-user_management]
source_file = apps/user_management/locale/en/LC_MESSAGES/django.po
@@ -39,6 +44,7 @@ source_lang = en
trans.es = apps/user_management/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-main]
source_file = apps/main/locale/en/LC_MESSAGES/django.po
@@ -46,6 +52,7 @@ source_lang = en
trans.es = apps/main/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-ocr]
source_file = apps/ocr/locale/en/LC_MESSAGES/django.po
@@ -53,6 +60,7 @@ source_lang = en
trans.es = apps/ocr/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-project_setup]
source_file = apps/project_setup/locale/en/LC_MESSAGES/django.po
@@ -60,6 +68,7 @@ source_lang = en
trans.es = apps/project_setup/locale/es/LC_MESSAGES/django.po
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
[main]
host = https://www.transifex.net
@@ -70,6 +79,7 @@ source_lang = en
trans.es = apps/folders/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-history]
source_file = apps/history/locale/en/LC_MESSAGES/django.po
@@ -77,6 +87,7 @@ source_lang = en
trans.es = apps/history/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-dynamic_search]
source_file = apps/dynamic_search/locale/en/LC_MESSAGES/django.po
@@ -84,6 +95,7 @@ source_lang = en
trans.es = apps/dynamic_search/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-smart_settings]
source_file = apps/smart_settings/locale/en/LC_MESSAGES/django.po
@@ -91,6 +103,7 @@ source_lang = en
trans.es = apps/smart_settings/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-navigation]
source_file = apps/navigation/locale/en/LC_MESSAGES/django.po
@@ -98,6 +111,7 @@ source_lang = en
trans.es = apps/navigation/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-tags]
source_file = apps/tags/locale/en/LC_MESSAGES/django.po
@@ -105,6 +119,7 @@ source_lang = en
trans.es = apps/tags/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-documents]
source_file = apps/documents/locale/en/LC_MESSAGES/django.po
@@ -112,6 +127,7 @@ source_lang = en
trans.es = apps/documents/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-project_tools]
source_file = apps/project_tools/locale/en/LC_MESSAGES/django.po
@@ -119,6 +135,7 @@ source_lang = en
trans.es = apps/project_tools/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-linking]
source_file = apps/linking/locale/en/LC_MESSAGES/django.po
@@ -126,6 +143,7 @@ source_lang = en
trans.es = apps/linking/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-document_comments]
source_file = apps/document_comments/locale/en/LC_MESSAGES/django.po
@@ -133,6 +151,7 @@ source_lang = en
trans.es = apps/document_comments/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-metadata]
source_file = apps/metadata/locale/en/LC_MESSAGES/django.po
@@ -140,6 +159,7 @@ source_lang = en
trans.es = apps/metadata/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-web_theme]
source_file = apps/web_theme/locale/en/LC_MESSAGES/django.po
@@ -147,6 +167,7 @@ source_lang = en
trans.es = apps/web_theme/locale/es/LC_MESSAGES/django.po
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
[mayan-edms.apps-django_gpg]
source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po
@@ -154,3 +175,4 @@ source_lang = en
trans.es = apps/django_gpg/locale/es/LC_MESSAGES/django.po
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

Binary file not shown.

View File

@@ -0,0 +1,333 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# <pierpaolo.baldan@gmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-12-07 18:22+0000\n"
"Last-Translator: pippo64 <pierpaolo.baldan@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:17
msgid "change password"
msgstr "cambia password"
#: __init__.py:18
msgid "user details"
msgstr "dettaglio utente"
#: __init__.py:19
msgid "edit details"
msgstr "modifica dettagli"
#: __init__.py:23 __init__.py:29
msgid "about"
msgstr "a rigurdo"
#: __init__.py:24
msgid "changelog"
msgstr "changelog"
#: __init__.py:25
msgid "license"
msgstr "licenza"
#: forms.py:99
msgid "Selection"
msgstr "Selezione"
#: forms.py:131
msgid "Email"
msgstr "Email"
#: forms.py:142
msgid ""
"Please enter a correct email and password. Note that the password fields is "
"case-sensitive."
msgstr ""
"Inserisci un'indirizzo mail valido e una password. Ricorda che il campo "
"password è case-sensitive"
#: forms.py:144
msgid "This account is inactive."
msgstr "Questo account è inattivo"
#: literals.py:24
msgid "A5"
msgstr "A5"
#: literals.py:25
msgid "A4"
msgstr "A4"
#: literals.py:26
msgid "A3"
msgstr "A3"
#: literals.py:27
msgid "B5"
msgstr "B5"
#: literals.py:28
msgid "B4"
msgstr "B4"
#: literals.py:29
msgid "Letter"
msgstr "Letter"
#: literals.py:30
msgid "Legal"
msgstr "Legal"
#: literals.py:31
msgid "Ledger"
msgstr "Mastro"
#: literals.py:38
msgid "Portrait"
msgstr "Verticale"
#: literals.py:39
msgid "Landscape"
msgstr "Orizontale"
#: utils.py:291
msgid "function found"
msgstr "trovata funzione"
#: utils.py:293 utils.py:295
#, python-format
msgid "class found: %s"
msgstr "classe trovata:%s"
#: views.py:24 templates/password_change_done.html:5
msgid "Your password has been successfully changed."
msgstr "La tua password è stata cambiata con successo"
#: views.py:41
msgid "No action selected."
msgstr "Nessuna azione selezionata"
#: views.py:45
msgid "Must select at least one item."
msgstr "Devi selezionare un item"
#: views.py:86
#, python-format
msgid "%(selection)s added successfully added to %(right_list_title)s."
msgstr "%(selection)s aggiunto con successo a %(right_list_title)s."
#: views.py:89 views.py:106
#, python-format
msgid "Unable to add %(selection)s to %(right_list_title)s."
msgstr "Impossibile aggiungere %(selection)s a %(right_list_title)s."
#: views.py:103
#, python-format
msgid "%(selection)s added successfully removed from %(right_list_title)s."
msgstr ""
"%(selection)s aggiunto correttamente rimosso dal %(right_list_title)s."
#: views.py:121
msgid "Add"
msgstr "Aggiungi"
#: views.py:132
msgid "Remove"
msgstr "Rimuovi"
#: views.py:155
msgid "current user details"
msgstr "dettagli dell'utente corrente"
#: views.py:172
msgid "Current user's details updated."
msgstr "Dettagli dell'utente corrente aggiornati"
#: views.py:181
msgid "edit current user details"
msgstr "modifica i dettagli dell'utente corrente"
#: views.py:207
msgid "Changelog"
msgstr "Changelog"
#: views.py:220
msgid "License"
msgstr "Licenza"
#: widgets.py:58
msgid "None"
msgstr "Nessuno"
#: 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 ""
"Directory temporanea utilizzata a livello di sito per thumbnails, anteprime "
"e file temporanei. Se non viene specificato, ne verrà creata utilizzando "
"tempfile.mkdtemp()"
#: conf/settings.py:65
msgid ""
"Controls the mechanism used to authenticated user. Options are: username, "
"email"
msgstr ""
"Controllo del meccanismo di autenticazione. Le opzioni possibili "
"sono:username,email"
#: templates/403.html:3 templates/403.html.py:7
msgid "Insufficient permissions"
msgstr "Permessi insufficienti"
#: templates/403.html:9
msgid "You don't have enough permissions for this operation."
msgstr "Non hai i permessi per effettuare questa operazione."
#: templates/404.html:3 templates/404.html.py:7
msgid "Page not found"
msgstr "Pagina non trovata"
#: templates/404.html:9
msgid "Sorry, but the requested page could not be found."
msgstr "Scusa ma la pagina richiesta non è disponibile"
#: templates/calculate_form_title.html:11
#, python-format
msgid "Details for %(object_name)s: %(object)s"
msgstr "Dettagli per %(object_name)s: %(object)s"
#: templates/calculate_form_title.html:13
#, python-format
msgid "Details for: %(object)s"
msgstr "Detaglio per: %(object)s"
#: templates/calculate_form_title.html:18
#, python-format
msgid "Edit %(object_name)s:"
msgstr "Modifica %(object_name)s:"
#: templates/calculate_form_title.html:20
msgid "Edit"
msgstr "Modifica"
#: templates/calculate_form_title.html:24
#, python-format
msgid "Create new %(object_name)s"
msgstr "Crea nuovo %(object_name)s"
#: templates/calculate_form_title.html:26
msgid "Create"
msgstr "Crea"
#: templates/generic_assign_remove.html:3
#, python-format
msgid "Assign %(title)s %(object)s"
msgstr "Assigna %(title)s %(object)s"
#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18
msgid "Confirm"
msgstr "Conferma"
#: templates/generic_confirm.html:16
msgid "Confirm delete"
msgstr "Conferma la cancellazione"
#: templates/generic_confirm.html:32
msgid "form icon"
msgstr "icona del modulo"
#: templates/generic_confirm.html:40
#, python-format
msgid "Are you sure you wish to delete %(object_name)s: %(object)s?"
msgstr "Sei sicuro di voler cancellare %(object_name)s: %(object)s?"
#: templates/generic_confirm.html:42
#, python-format
msgid "Are you sure you wish to delete: %(object)s?"
msgstr "Sei sicuro di volr cancellare: %(object)s?"
#: templates/generic_confirm.html:50
msgid "Yes"
msgstr "Si"
#: templates/generic_confirm.html:54
msgid "No"
msgstr "No"
#: templates/generic_form_instance.html:37
#: templates/generic_form_subtemplate.html:52
msgid "required"
msgstr "richiesto"
#: templates/generic_form_subtemplate.html:76
#: templates/generic_form_subtemplate.html:78
#: templates/generic_list_horizontal_subtemplate.html:51
#: templates/generic_list_horizontal_subtemplate.html:178
#: templates/generic_list_subtemplate.html:52
#: templates/generic_list_subtemplate.html:178
msgid "Save"
msgstr "Salva"
#: templates/generic_form_subtemplate.html:76
#: templates/generic_form_subtemplate.html:78
#: templates/generic_list_horizontal_subtemplate.html:51
#: templates/generic_list_horizontal_subtemplate.html:178
#: templates/generic_list_subtemplate.html:52
#: templates/generic_list_subtemplate.html:178
msgid "Submit"
msgstr "Sottometti"
#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6
#, python-format
msgid "List of %(stripped_title)s"
msgstr "Lista di %(stripped_title)s"
#: 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 ""
"Lista di %(title)s (%(start)s - %(end)s fuori %(total)s) (Page "
"%(page_number)s of %(total_pages)s)"
#: templates/generic_list_horizontal_subtemplate.html:25
#: templates/generic_list_subtemplate.html:26
#, python-format
msgid "List of %(title)s (%(total)s)"
msgstr "Lista di %(title)s (%(total)s)"
#: templates/generic_list_subtemplate.html:72
msgid "Identifier"
msgstr "Identificatore"
#: templates/generic_list_subtemplate.html:152
#, python-format
msgid "There are no %(stripped_title)s"
msgstr "Non ci sono %(stripped_title)s"
#: templates/login.html:5
msgid "Login"
msgstr "Login"
#: templates/password_change_done.html:3 templates/password_change_form.html:3
#: templates/password_change_form.html:5
msgid "Password change"
msgstr "Cambia password"

View File

@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-11-22 21:01+0000\n"
"PO-Revision-Date: 2011-12-06 06:17+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/es/)\n"
"MIME-Version: 1.0\n"
@@ -557,11 +557,11 @@ msgstr ""
#: literals.py:205 literals.py:206
msgid "Photo CD"
msgstr ""
msgstr "Photo CD"
#: literals.py:207
msgid "Page Control Language"
msgstr ""
msgstr "Page Control Language"
#: literals.py:208 literals.py:221
msgid "Apple Macintosh QuickDraw/PICT"
@@ -577,11 +577,11 @@ msgstr ""
#: literals.py:211
msgid "Portable Document Format"
msgstr ""
msgstr "Formato portatil de documento"
#: literals.py:212
msgid "Portable Document Archive Format"
msgstr ""
msgstr "Format portatil de archivo de documento"
#: literals.py:213
msgid "Pentax Electronic File"

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -16,6 +16,8 @@ PERMISSION_KEY_VIEW = {'namespace': 'django_gpg', 'name': 'key_view', 'label': _
PERMISSION_KEY_DELETE = {'namespace': 'django_gpg', 'name': 'key_delete', 'label': _(u'Delete keys')}
PERMISSION_KEYSERVER_QUERY = {'namespace': 'django_gpg', 'name': 'keyserver_query', 'label': _(u'Query keyservers')}
PERMISSION_KEY_RECEIVE = {'namespace': 'django_gpg', 'name': 'key_receive', 'label': _(u'Import key from keyservers')}
PERMISSION_SIGNATURE_UPLOAD = {'namespace': 'django_gpg', 'name': 'signature_upload', 'label': _(u'Upload detached signatures')}
PERMISSION_SIGNATURE_DOWNLOAD = {'namespace': 'django_gpg', 'name': 'key_receive', 'label': _(u'Download detached signatures')}
# Permission setup
set_namespace_title('django_gpg', _(u'Signatures'))
@@ -24,23 +26,39 @@ register_permission(PERMISSION_KEY_VIEW)
register_permission(PERMISSION_KEY_DELETE)
register_permission(PERMISSION_KEYSERVER_QUERY)
register_permission(PERMISSION_KEY_RECEIVE)
register_permission(PERMISSION_SIGNATURE_UPLOAD)
register_permission(PERMISSION_SIGNATURE_DOWNLOAD)
def has_embedded_signature(context):
return context['object'].signature_state
def doesnt_have_detached_signature(context):
return context['object'].has_detached_signature() == False
# Setup views
private_keys = {'text': _(u'private keys'), 'view': 'key_private_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]}
public_keys = {'text': _(u'public keys'), 'view': 'key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]}
key_delete = {'text': _(u'delete'), 'view': 'key_delete', 'args': ['object.fingerprint', 'object.type'], 'famfam': 'key_delete', 'permissions': [PERMISSION_KEY_DELETE]}
key_query = {'text': _(u'Query keyservers'), 'view': 'key_query', 'famfam': 'zoom', 'permissions': [PERMISSION_KEYSERVER_QUERY]}
key_receive = {'text': _(u'Import'), 'view': 'key_receive', 'args': 'object.keyid', 'famfam': 'key_add', 'keep_query': True, 'permissions': [PERMISSION_KEY_RECEIVE]}
key_query = {'text': _(u'query keyservers'), 'view': 'key_query', 'famfam': 'zoom', 'permissions': [PERMISSION_KEYSERVER_QUERY]}
key_receive = {'text': _(u'import'), 'view': 'key_receive', 'args': 'object.keyid', 'famfam': 'key_add', 'keep_query': True, 'permissions': [PERMISSION_KEY_RECEIVE]}
document_signature_upload = {'text': _(u'upload signature'), 'view': 'document_signature_upload', 'args': 'object.pk', 'famfam': 'pencil_add', 'permissions': [PERMISSION_SIGNATURE_UPLOAD], 'conditional_disable': has_embedded_signature}
document_signature_download = {'text': _(u'download signature'), 'view': 'document_signature_download', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_SIGNATURE_DOWNLOAD], 'conditional_disable': doesnt_have_detached_signature}
key_setup = {'text': _(u'key management'), 'view': 'key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]}
# Document views
document_verify = {'text': _(u'signatures'), 'view': 'document_verify', 'args': 'object.pk', 'famfam': 'text_signature', 'permissions': [PERMISSION_DOCUMENT_VERIFY]}
register_links(Document, [document_verify], menu_name='form_header')
register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar')
register_links(['document_verify', 'document_signature_upload', 'document_signature_download'], [document_signature_upload, document_signature_download], menu_name='sidebar')
#register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar')
register_links(['key_delete', 'key_public_list', 'key_query'], [public_keys, key_query], menu_name='sidebar')
register_links(Key, [key_delete])
register_links(KeyServerKey, [key_receive])
register_setup(private_keys)
register_setup(public_keys)
register_setup(key_setup)

View File

@@ -2,6 +2,8 @@ import types
from StringIO import StringIO
from pickle import dumps
import logging
import tempfile
import os
from django.core.files.base import File
from django.utils.translation import ugettext_lazy as _
@@ -164,7 +166,7 @@ class GPG(object):
self.gpg = gnupg.GPG(**kwargs)
def verify_w_retry(self, file_input):
def verify_w_retry(self, file_input, detached_signature=None):
if isinstance(file_input, types.StringTypes):
input_descriptor = open(file_input, 'rb')
elif isinstance(file_input, types.FileType) or isinstance(file_input, File):
@@ -175,12 +177,12 @@ class GPG(object):
raise ValueError('Invalid file_input argument type')
try:
verify = self.verify_file(input_descriptor)
verify = self.verify_file(input_descriptor, detached_signature)
if verify.status == 'no public key':
# Try to fetch the public key from the keyservers
try:
self.receive_key(verify.key_id)
return self.verify_w_retry(file_input)
return self.verify_w_retry(file_input, detached_signature)
except KeyFetchingError:
return verify
else:
@@ -188,7 +190,7 @@ class GPG(object):
except IOError:
return False
def verify_file(self, file_input):
def verify_file(self, file_input, detached_signature=None):
"""
Verify the signature of a file.
"""
@@ -199,6 +201,16 @@ class GPG(object):
else:
raise ValueError('Invalid file_input argument type')
if detached_signature:
# Save the original data and invert the argument order
# Signature first, file second
file_descriptor, filename = tempfile.mkstemp(prefix='django_gpg')
file_data = file_input.read()
file_input.close()
os.write(file_descriptor, file_data)
os.close(file_descriptor)
verify = self.gpg.verify_file(detached_signature, data_filename=filename)
else:
verify = self.gpg.verify_file(descriptor)
descriptor.close()

View File

@@ -11,3 +11,9 @@ class KeySearchForm(forms.Form):
label=_(u'Term'),
help_text=_(u'Name, e-mail, key ID or key fingerprint to look for.')
)
class DetachedSignatureForm(forms.Form):
file = forms.FileField(
label=_(u'Signature file'),
)

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-12-05 13:40-0400\n"
"POT-Creation-Date: 2011-12-06 02:06-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"
@@ -29,7 +29,7 @@ msgstr ""
msgid "Delete keys"
msgstr ""
#: __init__.py:17 __init__.py:32
#: __init__.py:17
msgid "Query keyservers"
msgstr ""
@@ -37,75 +37,99 @@ msgstr ""
msgid "Import key from keyservers"
msgstr ""
#: __init__.py:21
#: __init__.py:19
msgid "Upload detached signatures"
msgstr ""
#: __init__.py:20
msgid "Download detached signatures"
msgstr ""
#: __init__.py:23
msgid "Signatures"
msgstr ""
#: __init__.py:29 views.py:65
#: __init__.py:39 views.py:67
msgid "private keys"
msgstr ""
#: __init__.py:30 views.py:68
#: __init__.py:40 views.py:70
msgid "public keys"
msgstr ""
#: __init__.py:31
#: __init__.py:41
msgid "delete"
msgstr ""
#: __init__.py:33
msgid "Import"
#: __init__.py:42
msgid "query keyservers"
msgstr ""
#: __init__.py:36
#: __init__.py:43
msgid "import"
msgstr ""
#: __init__.py:44
msgid "upload signature"
msgstr ""
#: __init__.py:45
msgid "download signature"
msgstr ""
#: __init__.py:46
msgid "key management"
msgstr ""
#: __init__.py:49
msgid "signatures"
msgstr ""
#: api.py:20
#: api.py:22
msgid "Public"
msgstr ""
#: api.py:21
#: api.py:23
msgid "Secret"
msgstr ""
#: api.py:29 api.py:34
#: api.py:31 api.py:36
msgid "RSA"
msgstr ""
#: api.py:30
#: api.py:32
msgid "DSA"
msgstr ""
#: api.py:35
#: api.py:37
msgid "Elgamal"
msgstr ""
#: api.py:49
#: api.py:51
msgid "Bad signature."
msgstr ""
#: api.py:53
#: api.py:55
msgid "Document not signed or invalid signature."
msgstr ""
#: api.py:57
#: api.py:59
msgid "Signature error."
msgstr ""
#: api.py:61
#: api.py:63
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:65
#: api.py:67
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:69
#: api.py:71
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:142
#: api.py:144
msgid "unknown"
msgstr ""
@@ -117,43 +141,47 @@ msgstr ""
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
#: views.py:43
#: forms.py:18
msgid "Signature file"
msgstr ""
#: views.py:45
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:46
#: views.py:48
#, python-format
msgid "Unable to import key id: %s"
msgstr ""
#: views.py:50
#: views.py:52
msgid "Import key"
msgstr ""
#: views.py:51
#: views.py:53
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr ""
#: views.py:76
#: views.py:78
msgid "Key ID"
msgstr ""
#: views.py:80
#: views.py:82
msgid "Owner"
msgstr ""
#: views.py:100
#: views.py:102
#, python-format
msgid "Key: %s, deleted successfully."
msgstr ""
#: views.py:107
#: views.py:109
msgid "Delete key"
msgstr ""
#: views.py:109
#: views.py:111
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -161,47 +189,47 @@ msgid ""
"well."
msgstr ""
#: views.py:127
#: views.py:129
msgid "Query key server"
msgstr ""
#: views.py:140
#: views.py:142
msgid "results"
msgstr ""
#: views.py:145
#: views.py:147
msgid "ID"
msgstr ""
#: views.py:149
#: views.py:151
msgid "type"
msgstr ""
#: views.py:153
#: views.py:155
msgid "creation date"
msgstr ""
#: views.py:157
#: views.py:159
msgid "disabled"
msgstr ""
#: views.py:161
#: views.py:163
msgid "expiration date"
msgstr ""
#: views.py:165
#: views.py:167
msgid "expired"
msgstr ""
#: views.py:169
#: views.py:171
msgid "length"
msgstr ""
#: views.py:173
#: views.py:175
msgid "revoked"
msgstr ""
#: views.py:178
#: views.py:180
msgid "Identifies"
msgstr ""
@@ -248,6 +276,15 @@ msgstr ""
msgid "signature properties for: %s"
msgstr ""
#: views.py:250
msgid "Detached signature uploaded successfully."
msgstr ""
#: views.py:259
#, python-format
msgid "Upload detached signature for: %s"
msgstr ""
#: conf/settings.py:13
msgid "List of keyservers to be queried for unknown keys."
msgstr ""

View File

@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2011-12-05 13:40-0400\n"
"PO-Revision-Date: 2011-12-05 17:52+0000\n"
"POT-Creation-Date: 2011-12-06 02:06-0400\n"
"PO-Revision-Date: 2011-12-06 06:14+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/es/)\n"
"MIME-Version: 1.0\n"
@@ -30,7 +30,7 @@ msgstr "Ver llaves"
msgid "Delete keys"
msgstr "Borrar llaves"
#: __init__.py:17 __init__.py:32
#: __init__.py:17
msgid "Query keyservers"
msgstr "Hacer búsquedas en servidores de llaves"
@@ -38,77 +38,103 @@ msgstr "Hacer búsquedas en servidores de llaves"
msgid "Import key from keyservers"
msgstr "Importar llaves de los servidores de llaves"
#: __init__.py:21
#: __init__.py:19
msgid "Upload detached signatures"
msgstr "Subir una firma a parte"
#: __init__.py:20
msgid "Download detached signatures"
msgstr "Descargar la fima"
#: __init__.py:23
msgid "Signatures"
msgstr "Firmas"
#: __init__.py:29 views.py:65
#: __init__.py:39 views.py:67
msgid "private keys"
msgstr "llaves privadas"
#: __init__.py:30 views.py:68
#: __init__.py:40 views.py:70
msgid "public keys"
msgstr "llaves públicas"
#: __init__.py:31
#: __init__.py:41
msgid "delete"
msgstr "borrar"
#: __init__.py:33
msgid "Import"
msgstr "Importar"
#: __init__.py:42
msgid "query keyservers"
msgstr "consultar servidor de llaves"
#: __init__.py:36
#: __init__.py:43
msgid "import"
msgstr "importar"
#: __init__.py:44
msgid "upload signature"
msgstr "subir firma"
#: __init__.py:45
msgid "download signature"
msgstr "descargar firma"
#: __init__.py:46
msgid "key management"
msgstr "manejo de llaves"
#: __init__.py:49
msgid "signatures"
msgstr "firmas"
#: api.py:20
#: api.py:22
msgid "Public"
msgstr ""
msgstr "Pública"
#: api.py:21
#: api.py:23
msgid "Secret"
msgstr ""
msgstr "Secreta"
#: api.py:29 api.py:34
#: api.py:31 api.py:36
msgid "RSA"
msgstr "RSA"
#: api.py:30
#: api.py:32
msgid "DSA"
msgstr "DSA"
#: api.py:35
#: api.py:37
msgid "Elgamal"
msgstr ""
msgstr "Elgamal"
#: api.py:49
#: api.py:51
msgid "Bad signature."
msgstr ""
msgstr "Firma invalida."
#: api.py:53
#: api.py:55
msgid "Document not signed or invalid signature."
msgstr ""
msgstr "Documento no firmado o firma invalida."
#: api.py:57
#: api.py:59
msgid "Signature error."
msgstr ""
msgstr "Error de firma."
#: api.py:61
#: api.py:63
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."
#: api.py:65
#: api.py:67
msgid "Document is signed, and signature is good."
msgstr ""
msgstr "El document ha sido firmado y la firma esta es buen estado."
#: api.py:69
#: api.py:71
msgid "Document is signed with a valid signature."
msgstr ""
msgstr "El document ha sido firmado y la firma ha sido validada."
#: api.py:142
#: api.py:144
msgid "unknown"
msgstr ""
msgstr "desconocida"
#: forms.py:11
msgid "Term"
@@ -117,140 +143,160 @@ msgstr "Término"
#: forms.py:12
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."
#: views.py:43
#: forms.py:18
msgid "Signature file"
msgstr "Archivo de firma"
#: views.py:45
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
msgstr "Llave: %s, importada exitosamente."
#: views.py:46
#: views.py:48
#, python-format
msgid "Unable to import key id: %s"
msgstr ""
msgstr "No se pudo importa la llave: %s"
#: views.py:50
#: views.py:52
msgid "Import key"
msgstr ""
msgstr "Importar llave"
#: views.py:51
#: views.py:53
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr "¿Esta seguro que desea importar la llave: %s?"
#: views.py:76
#: views.py:78
msgid "Key ID"
msgstr ""
msgstr "Identificador de llave"
#: views.py:80
#: views.py:82
msgid "Owner"
msgstr "Dueño"
#: views.py:100
#: views.py:102
#, python-format
msgid "Key: %s, deleted successfully."
msgstr "Llave: %s, borrada exitosamente."
#: views.py:107
#: views.py:109
msgid "Delete key"
msgstr "Borrar llave"
#: views.py:109
#: views.py:111
#, 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."
#: views.py:127
#: views.py:129
msgid "Query key server"
msgstr ""
msgstr "Consultar servidor de llaves"
#: views.py:140
#: views.py:142
msgid "results"
msgstr "resultados"
#: views.py:145
#: views.py:147
msgid "ID"
msgstr ""
msgstr "ID"
#: views.py:149
#: views.py:151
msgid "type"
msgstr "tipo"
#: views.py:153
#: views.py:155
msgid "creation date"
msgstr "fecha de creación"
#: views.py:157
#: views.py:159
msgid "disabled"
msgstr ""
msgstr "desactivada"
#: views.py:161
#: views.py:163
msgid "expiration date"
msgstr ""
msgstr "fecha de expiración"
#: views.py:165
#: views.py:167
msgid "expired"
msgstr ""
msgstr "expirada"
#: views.py:169
#: views.py:171
msgid "length"
msgstr ""
msgstr "tamaño"
#: views.py:173
#: views.py:175
msgid "revoked"
msgstr ""
msgstr "revocada"
#: views.py:178
#: views.py:180
msgid "Identifies"
msgstr ""
msgstr "Identidades"
#: views.py:205
#, python-format
msgid "Signature status: %(widget)s %(text)s"
msgstr ""
msgstr "Estado de la firma: %(widget)s %(text)s"
#: views.py:212
msgid "embedded"
msgstr ""
msgstr "integrada"
#: views.py:214
msgid "detached"
msgstr ""
msgstr "a parte"
#: views.py:219
#, python-format
msgid "Signature ID: %s"
msgstr ""
msgstr "ID de la firma: %s"
#: views.py:220
#, python-format
msgid "Signature type: %s"
msgstr ""
msgstr "Tipo de firma: %s"
#: views.py:221
#, python-format
msgid "Key ID: %s"
msgstr ""
msgstr "ID de la llave: %s"
#: views.py:222
#, python-format
msgid "Timestamp: %s"
msgstr ""
msgstr "Fecha y hora: %s"
#: views.py:223
#, python-format
msgid "Signee: %s"
msgstr ""
msgstr "Firmantes: %s"
#: views.py:228
#, python-format
msgid "signature properties for: %s"
msgstr ""
msgstr "propiedades de firma para: %s"
#: views.py:250
msgid "Detached signature uploaded successfully."
msgstr "El archivo de firma fue subido exitosamente."
#: views.py:259
#, python-format
msgid "Upload detached signature for: %s"
msgstr "Subir firma a parte para: %s"
#: conf/settings.py:13
msgid "List of keyservers to be queried for unknown keys."
msgstr ""
"Lista de servidores de llaves a ser utilizados para buscar llaves "
"desconocidas."

Binary file not shown.

View File

@@ -0,0 +1,292 @@
# 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: 2011-12-06 02:06-0400\n"
"PO-Revision-Date: 2011-12-06 06:07+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14
msgid "Verify document signatures"
msgstr ""
#: __init__.py:15
msgid "View keys"
msgstr ""
#: __init__.py:16
msgid "Delete keys"
msgstr ""
#: __init__.py:17
msgid "Query keyservers"
msgstr ""
#: __init__.py:18
msgid "Import key from keyservers"
msgstr ""
#: __init__.py:19
msgid "Upload detached signatures"
msgstr ""
#: __init__.py:20
msgid "Download detached signatures"
msgstr ""
#: __init__.py:23
msgid "Signatures"
msgstr ""
#: __init__.py:39 views.py:67
msgid "private keys"
msgstr ""
#: __init__.py:40 views.py:70
msgid "public keys"
msgstr ""
#: __init__.py:41
msgid "delete"
msgstr ""
#: __init__.py:42
msgid "query keyservers"
msgstr ""
#: __init__.py:43
msgid "import"
msgstr ""
#: __init__.py:44
msgid "upload signature"
msgstr ""
#: __init__.py:45
msgid "download signature"
msgstr ""
#: __init__.py:46
msgid "key management"
msgstr ""
#: __init__.py:49
msgid "signatures"
msgstr ""
#: api.py:22
msgid "Public"
msgstr ""
#: api.py:23
msgid "Secret"
msgstr ""
#: api.py:31 api.py:36
msgid "RSA"
msgstr ""
#: api.py:32
msgid "DSA"
msgstr ""
#: api.py:37
msgid "Elgamal"
msgstr ""
#: api.py:51
msgid "Bad signature."
msgstr ""
#: api.py:55
msgid "Document not signed or invalid signature."
msgstr ""
#: api.py:59
msgid "Signature error."
msgstr ""
#: api.py:63
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:67
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:71
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:144
msgid "unknown"
msgstr ""
#: forms.py:11
msgid "Term"
msgstr ""
#: forms.py:12
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
#: forms.py:18
msgid "Signature file"
msgstr ""
#: views.py:45
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:48
#, python-format
msgid "Unable to import key id: %s"
msgstr ""
#: views.py:52
msgid "Import key"
msgstr ""
#: views.py:53
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr ""
#: views.py:78
msgid "Key ID"
msgstr ""
#: views.py:82
msgid "Owner"
msgstr ""
#: views.py:102
#, python-format
msgid "Key: %s, deleted successfully."
msgstr ""
#: views.py:109
msgid "Delete key"
msgstr ""
#: views.py:111
#, 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 ""
#: views.py:129
msgid "Query key server"
msgstr ""
#: views.py:142
msgid "results"
msgstr ""
#: views.py:147
msgid "ID"
msgstr ""
#: views.py:151
msgid "type"
msgstr ""
#: views.py:155
msgid "creation date"
msgstr ""
#: views.py:159
msgid "disabled"
msgstr ""
#: views.py:163
msgid "expiration date"
msgstr ""
#: views.py:167
msgid "expired"
msgstr ""
#: views.py:171
msgid "length"
msgstr ""
#: views.py:175
msgid "revoked"
msgstr ""
#: views.py:180
msgid "Identifies"
msgstr ""
#: views.py:205
#, python-format
msgid "Signature status: %(widget)s %(text)s"
msgstr ""
#: views.py:212
msgid "embedded"
msgstr ""
#: views.py:214
msgid "detached"
msgstr ""
#: views.py:219
#, python-format
msgid "Signature ID: %s"
msgstr ""
#: views.py:220
#, python-format
msgid "Signature type: %s"
msgstr ""
#: views.py:221
#, python-format
msgid "Key ID: %s"
msgstr ""
#: views.py:222
#, python-format
msgid "Timestamp: %s"
msgstr ""
#: views.py:223
#, python-format
msgid "Signee: %s"
msgstr ""
#: views.py:228
#, python-format
msgid "signature properties for: %s"
msgstr ""
#: views.py:250
msgid "Detached signature uploaded successfully."
msgstr ""
#: views.py:259
#, python-format
msgid "Upload detached signature for: %s"
msgstr ""
#: conf/settings.py:13
msgid "List of keyservers to be queried for unknown keys."
msgstr ""

View File

@@ -6,15 +6,16 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2011-12-05 13:40-0400\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-12-06 02:06-0400\n"
"PO-Revision-Date: 2011-12-05 17:43+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/team/pt/)\n"
"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/"
"team/pt/)\n"
"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
@@ -29,7 +30,7 @@ msgstr ""
msgid "Delete keys"
msgstr ""
#: __init__.py:17 __init__.py:32
#: __init__.py:17
msgid "Query keyservers"
msgstr ""
@@ -37,75 +38,99 @@ msgstr ""
msgid "Import key from keyservers"
msgstr ""
#: __init__.py:21
#: __init__.py:19
msgid "Upload detached signatures"
msgstr ""
#: __init__.py:20
msgid "Download detached signatures"
msgstr ""
#: __init__.py:23
msgid "Signatures"
msgstr ""
#: __init__.py:29 views.py:65
#: __init__.py:39 views.py:67
msgid "private keys"
msgstr ""
#: __init__.py:30 views.py:68
#: __init__.py:40 views.py:70
msgid "public keys"
msgstr ""
#: __init__.py:31
#: __init__.py:41
msgid "delete"
msgstr ""
#: __init__.py:33
msgid "Import"
#: __init__.py:42
msgid "query keyservers"
msgstr ""
#: __init__.py:36
#: __init__.py:43
msgid "import"
msgstr ""
#: __init__.py:44
msgid "upload signature"
msgstr ""
#: __init__.py:45
msgid "download signature"
msgstr ""
#: __init__.py:46
msgid "key management"
msgstr ""
#: __init__.py:49
msgid "signatures"
msgstr ""
#: api.py:20
#: api.py:22
msgid "Public"
msgstr ""
#: api.py:21
#: api.py:23
msgid "Secret"
msgstr ""
#: api.py:29 api.py:34
#: api.py:31 api.py:36
msgid "RSA"
msgstr ""
#: api.py:30
#: api.py:32
msgid "DSA"
msgstr ""
#: api.py:35
#: api.py:37
msgid "Elgamal"
msgstr ""
#: api.py:49
#: api.py:51
msgid "Bad signature."
msgstr ""
#: api.py:53
#: api.py:55
msgid "Document not signed or invalid signature."
msgstr ""
#: api.py:57
#: api.py:59
msgid "Signature error."
msgstr ""
#: api.py:61
#: api.py:63
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:65
#: api.py:67
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:69
#: api.py:71
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:142
#: api.py:144
msgid "unknown"
msgstr ""
@@ -117,43 +142,47 @@ msgstr ""
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
#: views.py:43
#: forms.py:18
msgid "Signature file"
msgstr ""
#: views.py:45
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:46
#: views.py:48
#, python-format
msgid "Unable to import key id: %s"
msgstr ""
#: views.py:50
#: views.py:52
msgid "Import key"
msgstr ""
#: views.py:51
#: views.py:53
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr ""
#: views.py:76
#: views.py:78
msgid "Key ID"
msgstr ""
#: views.py:80
#: views.py:82
msgid "Owner"
msgstr ""
#: views.py:100
#: views.py:102
#, python-format
msgid "Key: %s, deleted successfully."
msgstr ""
#: views.py:107
#: views.py:109
msgid "Delete key"
msgstr ""
#: views.py:109
#: views.py:111
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -161,47 +190,47 @@ msgid ""
"well."
msgstr ""
#: views.py:127
#: views.py:129
msgid "Query key server"
msgstr ""
#: views.py:140
#: views.py:142
msgid "results"
msgstr ""
#: views.py:145
#: views.py:147
msgid "ID"
msgstr ""
#: views.py:149
#: views.py:151
msgid "type"
msgstr ""
#: views.py:153
#: views.py:155
msgid "creation date"
msgstr ""
#: views.py:157
#: views.py:159
msgid "disabled"
msgstr ""
#: views.py:161
#: views.py:163
msgid "expiration date"
msgstr ""
#: views.py:165
#: views.py:167
msgid "expired"
msgstr ""
#: views.py:169
#: views.py:171
msgid "length"
msgstr ""
#: views.py:173
#: views.py:175
msgid "revoked"
msgstr ""
#: views.py:178
#: views.py:180
msgid "Identifies"
msgstr ""
@@ -248,8 +277,15 @@ msgstr ""
msgid "signature properties for: %s"
msgstr ""
#: views.py:250
msgid "Detached signature uploaded successfully."
msgstr ""
#: views.py:259
#, python-format
msgid "Upload detached signature for: %s"
msgstr ""
#: conf/settings.py:13
msgid "List of keyservers to be queried for unknown keys."
msgstr ""

View File

@@ -6,16 +6,18 @@
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n"
"POT-Creation-Date: 2011-12-05 13:40-0400\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-12-06 02:06-0400\n"
"PO-Revision-Date: 2011-12-05 17:43+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/ru/)\n"
"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/"
"ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"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
msgid "Verify document signatures"
@@ -29,7 +31,7 @@ msgstr ""
msgid "Delete keys"
msgstr ""
#: __init__.py:17 __init__.py:32
#: __init__.py:17
msgid "Query keyservers"
msgstr ""
@@ -37,75 +39,99 @@ msgstr ""
msgid "Import key from keyservers"
msgstr ""
#: __init__.py:21
#: __init__.py:19
msgid "Upload detached signatures"
msgstr ""
#: __init__.py:20
msgid "Download detached signatures"
msgstr ""
#: __init__.py:23
msgid "Signatures"
msgstr ""
#: __init__.py:29 views.py:65
#: __init__.py:39 views.py:67
msgid "private keys"
msgstr ""
#: __init__.py:30 views.py:68
#: __init__.py:40 views.py:70
msgid "public keys"
msgstr ""
#: __init__.py:31
#: __init__.py:41
msgid "delete"
msgstr ""
#: __init__.py:33
msgid "Import"
#: __init__.py:42
msgid "query keyservers"
msgstr ""
#: __init__.py:36
#: __init__.py:43
msgid "import"
msgstr ""
#: __init__.py:44
msgid "upload signature"
msgstr ""
#: __init__.py:45
msgid "download signature"
msgstr ""
#: __init__.py:46
msgid "key management"
msgstr ""
#: __init__.py:49
msgid "signatures"
msgstr ""
#: api.py:20
#: api.py:22
msgid "Public"
msgstr ""
#: api.py:21
#: api.py:23
msgid "Secret"
msgstr ""
#: api.py:29 api.py:34
#: api.py:31 api.py:36
msgid "RSA"
msgstr ""
#: api.py:30
#: api.py:32
msgid "DSA"
msgstr ""
#: api.py:35
#: api.py:37
msgid "Elgamal"
msgstr ""
#: api.py:49
#: api.py:51
msgid "Bad signature."
msgstr ""
#: api.py:53
#: api.py:55
msgid "Document not signed or invalid signature."
msgstr ""
#: api.py:57
#: api.py:59
msgid "Signature error."
msgstr ""
#: api.py:61
#: api.py:63
msgid "Document is signed but no public key is available for verification."
msgstr ""
#: api.py:65
#: api.py:67
msgid "Document is signed, and signature is good."
msgstr ""
#: api.py:69
#: api.py:71
msgid "Document is signed with a valid signature."
msgstr ""
#: api.py:142
#: api.py:144
msgid "unknown"
msgstr ""
@@ -117,43 +143,47 @@ msgstr ""
msgid "Name, e-mail, key ID or key fingerprint to look for."
msgstr ""
#: views.py:43
#: forms.py:18
msgid "Signature file"
msgstr ""
#: views.py:45
#, python-format
msgid "Key: %s, imported successfully."
msgstr ""
#: views.py:46
#: views.py:48
#, python-format
msgid "Unable to import key id: %s"
msgstr ""
#: views.py:50
#: views.py:52
msgid "Import key"
msgstr ""
#: views.py:51
#: views.py:53
#, python-format
msgid "Are you sure you wish to import key id: %s?"
msgstr ""
#: views.py:76
#: views.py:78
msgid "Key ID"
msgstr ""
#: views.py:80
#: views.py:82
msgid "Owner"
msgstr ""
#: views.py:100
#: views.py:102
#, python-format
msgid "Key: %s, deleted successfully."
msgstr ""
#: views.py:107
#: views.py:109
msgid "Delete key"
msgstr ""
#: views.py:109
#: views.py:111
#, python-format
msgid ""
"Are you sure you wish to delete key: %s? If you try to delete a public key "
@@ -161,47 +191,47 @@ msgid ""
"well."
msgstr ""
#: views.py:127
#: views.py:129
msgid "Query key server"
msgstr ""
#: views.py:140
#: views.py:142
msgid "results"
msgstr ""
#: views.py:145
#: views.py:147
msgid "ID"
msgstr ""
#: views.py:149
#: views.py:151
msgid "type"
msgstr ""
#: views.py:153
#: views.py:155
msgid "creation date"
msgstr ""
#: views.py:157
#: views.py:159
msgid "disabled"
msgstr ""
#: views.py:161
#: views.py:163
msgid "expiration date"
msgstr ""
#: views.py:165
#: views.py:167
msgid "expired"
msgstr ""
#: views.py:169
#: views.py:171
msgid "length"
msgstr ""
#: views.py:173
#: views.py:175
msgid "revoked"
msgstr ""
#: views.py:178
#: views.py:180
msgid "Identifies"
msgstr ""
@@ -248,8 +278,15 @@ msgstr ""
msgid "signature properties for: %s"
msgstr ""
#: views.py:250
msgid "Detached signature uploaded successfully."
msgstr ""
#: views.py:259
#, python-format
msgid "Upload detached signature for: %s"
msgstr ""
#: conf/settings.py:13
msgid "List of keyservers to be queried for unknown keys."
msgstr ""

View File

@@ -5,7 +5,8 @@ urlpatterns = patterns('django_gpg.views',
url(r'^list/private/$', 'key_list', {'secret': True}, 'key_private_list'),
url(r'^list/public/$', 'key_list', {'secret': False}, 'key_public_list'),
url(r'^verify/(?P<document_pk>\d+)/$', 'document_verify', (), 'document_verify'),
url(r'^upload/signature/(?P<document_pk>\d+)/$', 'document_signature_upload', (), 'document_signature_upload'),
url(r'^download/signature/(?P<document_pk>\d+)/$', 'document_signature_download', (), 'document_signature_download'),
url(r'^query/$', 'key_query', (), 'key_query'),
url(r'^receive/(?P<key_id>.+)/$', 'key_receive', (), 'key_receive'),
)

View File

@@ -15,14 +15,17 @@ from documents.models import Document, RecentDocument
from permissions.api import check_permissions
from common.utils import pretty_size, parse_range, urlquote, \
return_diff, encapsulate
from filetransfers.api import serve_file
from django_gpg.api import Key, SIGNATURE_STATES
from django_gpg.runtime import gpg
from django_gpg.exceptions import GPGVerificationError, KeyFetchingError
from django_gpg.exceptions import (GPGVerificationError, KeyFetchingError,
KeyImportError)
from django_gpg import (PERMISSION_DOCUMENT_VERIFY, PERMISSION_KEY_VIEW,
PERMISSION_KEY_DELETE, PERMISSION_KEYSERVER_QUERY,
PERMISSION_KEY_RECEIVE)
from django_gpg.forms import KeySearchForm
PERMISSION_KEY_RECEIVE, PERMISSION_SIGNATURE_UPLOAD,
PERMISSION_SIGNATURE_DOWNLOAD)
from django_gpg.forms import KeySearchForm, DetachedSignatureForm
logger = logging.getLogger(__name__)
@@ -42,7 +45,7 @@ def key_receive(request, key_id):
key = gpg.import_key(keys_dict[key_id].key)
messages.success(request, _(u'Key: %s, imported successfully.') % key)
return HttpResponseRedirect(next)
except (KeyFetchingError, KeyError, TypeError):
except (KeyImportError, KeyError, TypeError):
messages.error(request, _(u'Unable to import key id: %s') % key_id)
return HttpResponseRedirect(previous)
@@ -193,10 +196,8 @@ def document_verify(request, document_pk):
document = get_object_or_404(Document, pk=document_pk)
RecentDocument.objects.add_document_for_user(request.user, document)
try:
signature = gpg.verify_w_retry(document.open(raw=True))
except GPGVerificationError:
signature = None
signature = document.verify_signature()
signature_state = SIGNATURE_STATES.get(getattr(signature, 'status', None))
@@ -230,3 +231,56 @@ def document_verify(request, document_pk):
'document': document,
'paragraphs': paragraphs,
}, context_instance=RequestContext(request))
def document_signature_upload(request, document_pk):
check_permissions(request.user, [PERMISSION_SIGNATURE_UPLOAD])
document = get_object_or_404(Document, pk=document_pk)
RecentDocument.objects.add_document_for_user(request.user, document)
post_action_redirect = None
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':
form = DetachedSignatureForm(request.POST, request.FILES)
if form.is_valid():
try:
document.add_detached_signature(request.FILES['file'])
messages.success(request, _(u'Detached signature uploaded successfully.'))
return HttpResponseRedirect(next)
except Exception, msg:
messages.error(request, msg)
return HttpResponseRedirect(previous)
else:
form = DetachedSignatureForm()
return render_to_response('generic_form.html', {
'title': _(u'Upload detached signature for: %s') % document,
'form_icon': 'key_delete.png',
'next': next,
'form': form,
'previous': previous,
'object': document,
}, context_instance=RequestContext(request))
def document_signature_download(request, document_pk):
check_permissions(request.user, [PERMISSION_SIGNATURE_DOWNLOAD])
document = get_object_or_404(Document, pk=document_pk)
try:
if document.has_detached_signature():
signature = document.detached_signature()
return serve_file(
request,
signature,
save_as=u'"%s.sig"' % document.filename,
content_type=u'application/octet-stream'
)
except Exception, e:
messages.error(request, e)
return HttpResponseRedirect(request.META['HTTP_REFERER'])
return HttpResponseRedirect(request.META['HTTP_REFERER'])

Binary file not shown.

View File

@@ -0,0 +1,102 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:33+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:15
msgid "Create new comments"
msgstr ""
#: __init__.py:16
msgid "Delete comments"
msgstr ""
#: __init__.py:17
msgid "Edit comments"
msgstr ""
#: __init__.py:18
msgid "View comments"
msgstr ""
#: __init__.py:20
msgid "Comments"
msgstr ""
#: __init__.py:26 __init__.py:27
msgid "delete"
msgstr ""
#: __init__.py:28
msgid "add comment"
msgstr ""
#: __init__.py:29 utils.py:14
msgid "comments"
msgstr ""
#: __init__.py:33
msgid "date"
msgstr ""
#: __init__.py:37
msgid "user"
msgstr ""
#: __init__.py:41
msgid "comment"
msgstr ""
#: views.py:27
msgid "Must provide at least one comment."
msgstr ""
#: views.py:37
#, python-format
msgid "Comment \"%s\" deleted successfully."
msgstr ""
#: views.py:39
#, python-format
msgid "Error deleting comment \"%(comment)s\": %(error)s"
msgstr ""
#: views.py:54
#, python-format
msgid "Are you sure you wish to delete the comment: %s?"
msgstr ""
#: views.py:56
#, python-format
msgid "Are you sure you wish to delete the comments: %s?"
msgstr ""
#: views.py:86
msgid "Comment added successfully."
msgstr ""
#: views.py:93
#, python-format
msgid "Add comment to document: %s"
msgstr ""
#: views.py:109
#, python-format
msgid "comments: %s"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,205 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:42+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:12
msgid "View document indexes"
msgstr ""
#: __init__.py:13
msgid "Rebuild document indexes"
msgstr ""
#: __init__.py:15
msgid "Indexing"
msgstr ""
#: __init__.py:19
msgid "index list"
msgstr ""
#: __init__.py:20
msgid "go up one level"
msgstr ""
#: __init__.py:21 __init__.py:23 models.py:26
msgid "indexes"
msgstr ""
#: __init__.py:25
msgid "rebuild indexes"
msgstr ""
#: __init__.py:25
msgid "Deletes and creates from scratch all the document indexes."
msgstr ""
#: __init__.py:27
msgid "Indexes"
msgstr ""
#: api.py:83
msgid "root"
msgstr ""
#: api.py:139
#, python-format
msgid "Maximum suffix (%s) count reached."
msgstr ""
#: api.py:175
#, python-format
msgid ""
"Error in document indexing update expression: %(expression)s; %(exception)s"
msgstr ""
#: api.py:178
#, python-format
msgid ""
"Error updating document index, expression: %(expression)s; %(exception)s"
msgstr ""
#: api.py:209
#, python-format
msgid "Unable to delete document indexing node; %s"
msgstr ""
#: filesystem.py:34
#, python-format
msgid "Unable to create indexing directory; %s"
msgstr ""
#: filesystem.py:52
#, python-format
msgid ""
"Unable to create symbolic link, file exists and could not be deleted: "
"%(filepath)s; %(exc)s"
msgstr ""
#: filesystem.py:54
#, python-format
msgid "Unable to create symbolic link: %(filepath)s; %(exc)s"
msgstr ""
#: filesystem.py:71
#, python-format
msgid "Unable to delete document symbolic link; %s"
msgstr ""
#: filesystem.py:83
#, python-format
msgid "Unable to delete indexing directory; %s"
msgstr ""
#: models.py:11
#, python-format
msgid "Available functions: %s"
msgstr ""
#: models.py:16
msgid "indexing expression"
msgstr ""
#: models.py:16
msgid "Enter a python string expression to be evaluated."
msgstr ""
#: models.py:18
msgid "enabled"
msgstr ""
#: models.py:19
msgid "link documents"
msgstr ""
#: models.py:25 models.py:31 views.py:56
msgid "index"
msgstr ""
#: models.py:32
msgid "value"
msgstr ""
#: models.py:33
msgid "documents"
msgstr ""
#: models.py:46 models.py:51
msgid "index instance"
msgstr ""
#: models.py:47
msgid "indexes instances"
msgstr ""
#: models.py:52
msgid "document"
msgstr ""
#: models.py:59
msgid "document rename count"
msgstr ""
#: models.py:60
msgid "documents rename count"
msgstr ""
#: utils.py:19
msgid "document indexes"
msgstr ""
#: views.py:38
#, python-format
msgid "contents for index: %s"
msgstr ""
#: views.py:60
msgid "items"
msgstr ""
#: views.py:82
msgid "Are you sure you wish to rebuild all indexes?"
msgstr ""
#: views.py:83
msgid "On large databases this operation may take some time to execute."
msgstr ""
#: views.py:89
msgid "Index rebuild completed successfully."
msgstr ""
#: views.py:94
#, python-format
msgid "Index rebuild error: %s"
msgstr ""
#: views.py:109
#, python-format
msgid "indexes containing: %s"
msgstr ""
#: templates/indexing_help.html:3
msgid "What are indexes?"
msgstr ""
#: templates/indexing_help.html:4
msgid "Indexes group documents into a tree like hierarchical structure."
msgstr ""

View File

@@ -235,6 +235,7 @@ class DocumentForm_edit(DocumentForm):
self.fields.pop('release_level')
self.fields.pop('version_update')
self.fields.pop('comment')
self.fields.pop('use_file_name')
class DocumentPropertiesForm(DetailForm):

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,157 @@
# encoding: 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 'DocumentVersion.signature_file'
db.add_column('documents_documentversion', 'signature_file', self.gf('django.db.models.fields.files.FileField')(max_length=100, null=True, blank=True), keep_default=False)
def backwards(self, orm):
# Deleting field 'DocumentVersion.signature_file'
db.delete_column('documents_documentversion', 'signature_file')
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'})
},
'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', [], {'db_index': 'True', '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.documentpage': {
'Meta': {'ordering': "['page_number']", 'object_name': 'DocumentPage'},
'content': ('django.db.models.fields.TextField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
'document_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentVersion']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'page_label': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
'page_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'})
},
'documents.documentpagetransformation': {
'Meta': {'ordering': "('order',)", 'object_name': 'DocumentPageTransformation'},
'arguments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'document_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentPage']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
'transformation': ('django.db.models.fields.CharField', [], {'max_length': '128'})
},
'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'})
},
'documents.documenttypefilename': {
'Meta': {'ordering': "['filename']", 'object_name': 'DocumentTypeFilename'},
'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentType']"}),
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'filename': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
'documents.documentversion': {
'Meta': {'unique_together': "(('document', 'major', 'minor', 'micro', 'release_level', 'serial'),)", 'object_name': 'DocumentVersion'},
'checksum': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'comment': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']"}),
'encoding': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64'}),
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'filename': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '255', 'db_index': 'True'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'major': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
'micro': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'mimetype': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64'}),
'minor': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'release_level': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}),
'serial': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}),
'signature_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}),
'signature_state': ('django.db.models.fields.CharField', [], {'max_length': '16', 'null': 'True', 'blank': 'True'}),
'timestamp': ('django.db.models.fields.DateTimeField', [], {})
},
'documents.recentdocument': {
'Meta': {'ordering': "('-datetime_accessed',)", 'object_name': 'RecentDocument'},
'datetime_accessed': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}),
'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']"}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
},
'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', 'db_index': 'True'})
},
'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 = ['documents']

View File

@@ -3,10 +3,14 @@ import tempfile
import hashlib
from ast import literal_eval
import base64
from StringIO import StringIO
import datetime
import logging
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
@@ -172,12 +176,10 @@ class Document(models.Model):
def add_as_recent_document_for_user(self, user):
RecentDocument.objects.add_document_for_user(user, self)
# TODO: investigate if Document's save method calls all of it
# DocumentVersion's delete methods
#def delete(self, *args, **kwargs):
# super(Document, self).delete(*args, **kwargs)
# for version in self.documentversion_set.all():
# version.file.storage.delete(version.file.path)
def delete(self, *args, **kwargs):
for version in self.versions.all():
version.delete()
return super(Document, self).delete(*args, **kwargs)
@property
def size(self):
@@ -287,6 +289,18 @@ class Document(models.Model):
filename = property(_get_filename, _set_filename)
def add_detached_signature(self, *args, **kwargs):
return self.latest_version.add_detached_signature(*args, **kwargs)
def has_detached_signature(self):
return self.latest_version.has_detached_signature()
def detached_signature(self):
return self.latest_version.detached_signature()
def verify_signature(self):
return self.latest_version.verify_signature()
class DocumentVersion(models.Model):
'''
@@ -316,6 +330,7 @@ class DocumentVersion(models.Model):
filename = models.CharField(max_length=255, default=u'', editable=False, db_index=True)
checksum = models.TextField(blank=True, null=True, verbose_name=_(u'checksum'), editable=False)
signature_state = models.CharField(blank=True, null=True, max_length=16, verbose_name=_(u'signature state'), editable=False)
signature_file = models.FileField(blank=True, null=True, upload_to=get_filename_from_uuid, storage=STORAGE_BACKEND(), verbose_name=_(u'signature file'), editable=False)
class Meta:
unique_together = ('document', 'major', 'minor', 'micro', 'release_level', 'serial')
@@ -455,7 +470,7 @@ class DocumentVersion(models.Model):
def update_signed_state(self, save=True):
if self.exists():
try:
self.signature_state = gpg.verify(self.open()).status
self.signature_state = gpg.verify_file(self.open()).status
# TODO: give use choice for auto public key fetch?
# OR maybe new config option
except GPGVerificationError:
@@ -480,8 +495,8 @@ class DocumentVersion(models.Model):
self.save()
def delete(self, *args, **kwargs):
super(DocumentVersion, self).delete(*args, **kwargs)
return self.file.storage.delete(self.file.path)
self.file.storage.delete(self.file.path)
return super(DocumentVersion, self).delete(*args, **kwargs)
def exists(self):
'''
@@ -531,6 +546,34 @@ class DocumentVersion(models.Model):
else:
return None
def add_detached_signature(self, detached_signature):
if not self.signature_state:
self.signature_file = detached_signature
self.save()
else:
raise Exception('document already has an embedded signature')
def has_detached_signature(self):
if self.signature_file:
return self.signature_file.storage.exists(self.signature_file.path)
else:
return False
def detached_signature(self):
return self.signature_file.storage.open(self.signature_file.path)
def verify_signature(self):
try:
if self.has_detached_signature():
logger.debug('has detached signature')
signature = gpg.verify_w_retry(self.open(), self.detached_signature())
else:
signature = gpg.verify_w_retry(self.open(raw=True))
except GPGVerificationError:
signature = None
return signature
class DocumentTypeFilename(models.Model):
'''

View File

@@ -3,7 +3,7 @@ from django.utils.translation import ugettext_lazy as _
from common.utils import pretty_size, pretty_size_10
from documents.conf.settings import STORAGE_BACKEND
from documents.models import Document, DocumentType, DocumentPage
from documents.models import Document, DocumentType, DocumentPage, DocumentVersion
from django.db.models import Avg, Count, Min, Max
@@ -54,9 +54,9 @@ def get_statistics():
paragraphs.extend(
[
_(u'Document pages in database: %d') % DocumentPage.objects.only('pk',).count(),
_(u'Minimum amount of pages per document: %(page_count__min)d') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Min('page_count')),
_(u'Maximum amount of pages per document: %(page_count__max)d') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Max('page_count')),
_(u'Average amount of pages per document: %(page_count__avg)f') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Avg('page_count')),
_(u'Minimum amount of pages per document: %(page_count__min)d') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Min('page_count')),
_(u'Maximum amount of pages per document: %(page_count__max)d') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Max('page_count')),
_(u'Average amount of pages per document: %(page_count__avg)f') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Avg('page_count')),
]
)
#[(day_count['date_added'].strftime('%Y-%m-%d'), day_count['id__count']) for day_count in Document.objects.values('date_added').annotate(Count("id"))]

View File

@@ -198,7 +198,7 @@ def document_delete(request, document_id=None, document_id_list=None):
document.delete()
#create_history(HISTORY_DOCUMENT_DELETED, data={'user': request.user, 'document': document})
messages.success(request, _(u'Document: %s deleted successfully.') % document)
messages.success(request, _(u'Document deleted successfully.'))
except Exception, e:
messages.error(request, _(u'Document: %(document)s delete error: %(error)s') % {
'document': document, 'error': e

Binary file not shown.

View File

@@ -0,0 +1,116 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:42+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:5
msgid "search"
msgstr ""
#: __init__.py:6 views.py:72
msgid "advanced search"
msgstr ""
#: __init__.py:7
msgid "search again"
msgstr ""
#: forms.py:8
msgid "Search terms"
msgstr ""
#: models.py:20
msgid "user"
msgstr ""
#: models.py:21
msgid "query"
msgstr ""
#: models.py:22
msgid "datetime created"
msgstr ""
#: models.py:23
msgid "hits"
msgstr ""
#: models.py:61
msgid "recent search"
msgstr ""
#: models.py:62
msgid "recent searches"
msgstr ""
#: views.py:33
#, python-format
msgid "results, (showing only %(shown_result_count)s out of %(result_count)s)"
msgstr ""
#: views.py:37
msgid "results"
msgstr ""
#: views.py:56
#, python-format
msgid "Search error: %s"
msgstr ""
#: views.py:60
msgid "type"
msgstr ""
#: views.py:76 views.py:86 views.py:88 templatetags/search_tags.py:19
#: templatetags/search_tags.py:20
msgid "Search"
msgstr ""
#: conf/settings.py:12
msgid "Maximum amount search hits to fetch and display."
msgstr ""
#: conf/settings.py:13
msgid "Maximum number of search queries to remember per user."
msgstr ""
#: templates/search_help.html:3
msgid "Help"
msgstr ""
#: templates/search_help.html:4
#, python-format
msgid ""
"Enter the desired search keywords separated by space. Only the top "
"%(search_results_limit)s results will be available."
msgstr ""
#: templates/search_results.html:3
msgid "Search results"
msgstr ""
#: templates/search_results.html:19
#, python-format
msgid "Elapsed time: %(time_delta)s seconds"
msgstr ""
#: templatetags/search_tags.py:33
#, python-format
msgid "recent searches (maximum of %d)"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,212 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:55+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:10
msgid "folder list"
msgstr ""
#: __init__.py:11 views.py:53
msgid "create folder"
msgstr ""
#: __init__.py:12
msgid "edit"
msgstr ""
#: __init__.py:13
msgid "delete"
msgstr ""
#: __init__.py:14
msgid "remove from folder"
msgstr ""
#: __init__.py:15
msgid "folder documents"
msgstr ""
#: __init__.py:16
msgid "add to a folder"
msgstr ""
#: __init__.py:17 __init__.py:25 models.py:31 views.py:21
msgid "folders"
msgstr ""
#: forms.py:20
msgid "Existing folders"
msgstr ""
#: forms.py:22
msgid "New folder"
msgstr ""
#: models.py:11
msgid "title"
msgstr ""
#: models.py:12
msgid "user"
msgstr ""
#: models.py:13
msgid "datetime created"
msgstr ""
#: models.py:30 models.py:35 views.py:82 views.py:109 views.py:134
msgid "folder"
msgstr ""
#: models.py:36
msgid "document"
msgstr ""
#: models.py:42 views.py:257
msgid "folder document"
msgstr ""
#: models.py:43
msgid "folders documents"
msgstr ""
#: views.py:24
msgid "created"
msgstr ""
#: views.py:25
msgid "documents"
msgstr ""
#: views.py:45 views.py:152
msgid "Folder created successfully"
msgstr ""
#: views.py:48 views.py:154 views.py:188
#, python-format
msgid "A folder named: %s, already exists."
msgstr ""
#: views.py:71
msgid "Folder edited successfully"
msgstr ""
#: views.py:74
#, python-format
msgid "Error editing folder; %s"
msgstr ""
#: views.py:79
#, python-format
msgid "edit folder: %s"
msgstr ""
#: views.py:101
#, python-format
msgid "Folder: %s deleted successfully."
msgstr ""
#: views.py:103
#, python-format
msgid "Folder: %(folder)s delete error: %(error)s"
msgstr ""
#: views.py:114
#, python-format
msgid "Are you sure you with to delete the folder: %s?"
msgstr ""
#: views.py:131
#, python-format
msgid "documents in folder: %s"
msgstr ""
#: views.py:157 views.py:191
msgid "Must specify a new folder or an existing one."
msgstr ""
#: views.py:162 views.py:196
#, python-format
msgid "Document: %(document)s added to folder: %(folder)s successfully."
msgstr ""
#: views.py:165 views.py:199
#, python-format
msgid "Document: %(document)s is already in folder: %(folder)s."
msgstr ""
#: views.py:186
#, python-format
msgid "Folder \"%s\" created successfully"
msgstr ""
#: views.py:207
#, python-format
msgid "add document \"%s\" to a folder"
msgstr ""
#: views.py:223
#, python-format
msgid "folders containing: %s"
msgstr ""
#: views.py:239
msgid "Must provide at least one folder document."
msgstr ""
#: views.py:249
#, python-format
msgid "Document: %s removed successfully."
msgstr ""
#: views.py:251
#, python-format
msgid "Document: %(document)s delete error: %(error)s"
msgstr ""
#: views.py:265
#, python-format
msgid ""
"Are you sure you wish to remove the document: %(document)s from the folder "
"\"%(folder)s\"?"
msgstr ""
#: views.py:268
#, python-format
msgid ""
"Are you sure you wish to remove the documents: %(documents)s from the folder"
" \"%(folder)s\"?"
msgstr ""
#: templates/folders_help.html:3
msgid "What are folders?"
msgstr ""
#: templates/folders_help.html:4
msgid ""
"These folders can also be described as user folders. They are a way to let "
"individual users create their own document organization methods. Folders "
"created by one user and the documents contained by them don't affect any "
"other user folders or documents."
msgstr ""
#: templatetags/folder_tags.py:17
msgid "Add document to a folder"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,106 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:56+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:6
msgid "Access the history app"
msgstr ""
#: __init__.py:8
msgid "History"
msgstr ""
#: __init__.py:12 models.py:69
msgid "history"
msgstr ""
#: models.py:16
msgid "namespace"
msgstr ""
#: models.py:17
msgid "name"
msgstr ""
#: models.py:25 models.py:34
msgid "history type"
msgstr ""
#: models.py:26
msgid "history types"
msgstr ""
#: models.py:30
msgid "date time"
msgstr ""
#: models.py:35
msgid "dictionary"
msgstr ""
#: models.py:70
msgid "histories"
msgstr ""
#: views.py:23
msgid "history events"
msgstr ""
#: views.py:26 views.py:60
msgid "date and time"
msgstr ""
#: views.py:30
msgid "object"
msgstr ""
#: views.py:34 views.py:64
msgid "summary"
msgstr ""
#: views.py:56
#, python-format
msgid "history events for: %s"
msgstr ""
#: views.py:81
msgid "Date"
msgstr ""
#: views.py:82
msgid "Time"
msgstr ""
#: views.py:83
msgid "Object"
msgstr ""
#: views.py:84
msgid "Event type"
msgstr ""
#: views.py:85
msgid "Event details"
msgstr ""
#: views.py:89
#, python-format
msgid "details for: %s"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,331 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:11
msgid "View existing smart links"
msgstr ""
#: __init__.py:12
msgid "Create new smart links"
msgstr ""
#: __init__.py:13
msgid "Delete smart links"
msgstr ""
#: __init__.py:14
msgid "Edit smart links"
msgstr ""
#: __init__.py:16
msgid "Smart links"
msgstr ""
#: __init__.py:22
msgid "smart links actions"
msgstr ""
#: __init__.py:23 __init__.py:25 models.py:21 views.py:105
msgid "smart links"
msgstr ""
#: __init__.py:26
msgid "smart links list"
msgstr ""
#: __init__.py:27
msgid "create new smart link"
msgstr ""
#: __init__.py:28 __init__.py:33
msgid "edit"
msgstr ""
#: __init__.py:29 __init__.py:34
msgid "delete"
msgstr ""
#: __init__.py:31
msgid "conditions"
msgstr ""
#: __init__.py:32
msgid "create condition"
msgstr ""
#: forms.py:48
msgid "Pages"
msgstr ""
#: forms.py:54
msgid "Select"
msgstr ""
#: forms.py:61
msgid "Click on the image for full size view of the first page."
msgstr ""
#: literals.py:7
msgid "and"
msgstr ""
#: literals.py:8
msgid "or"
msgstr ""
#: literals.py:12
msgid "is equal to"
msgstr ""
#: literals.py:13
msgid "is equal to (case insensitive)"
msgstr ""
#: literals.py:14
msgid "contains"
msgstr ""
#: literals.py:15
msgid "contains (case insensitive)"
msgstr ""
#: literals.py:16
msgid "is in"
msgstr ""
#: literals.py:17
msgid "is greater than"
msgstr ""
#: literals.py:18
msgid "is greater than or equal to"
msgstr ""
#: literals.py:19
msgid "is less than"
msgstr ""
#: literals.py:20
msgid "is less than or equal to"
msgstr ""
#: literals.py:21
msgid "starts with"
msgstr ""
#: literals.py:22
msgid "starts with (case insensitive)"
msgstr ""
#: literals.py:23
msgid "ends with"
msgstr ""
#: literals.py:24
msgid "ends with (case insensitive)"
msgstr ""
#: literals.py:25
msgid "is in regular expression"
msgstr ""
#: literals.py:26
msgid "is in regular expression (case insensitive)"
msgstr ""
#: models.py:10
msgid "title"
msgstr ""
#: models.py:11 views.py:108
msgid "dynamic title"
msgstr ""
#: models.py:11 models.py:29
msgid ""
"This expression will be evaluated against the current selected document. "
"The document metadata is available as variables `metadata` and document "
"properties under the variable `document`."
msgstr ""
#: models.py:12 models.py:31 views.py:109 views.py:196
msgid "enabled"
msgstr ""
#: models.py:20 models.py:25 views.py:256 views.py:287
msgid "smart link"
msgstr ""
#: models.py:26
msgid "The inclusion is ignored for the first item."
msgstr ""
#: models.py:27
msgid "foreign document data"
msgstr ""
#: models.py:27
msgid ""
"This represents the metadata of all other documents. Available objects: "
"`document.<attribute>` and `metadata.<metadata_type_name>`."
msgstr ""
#: models.py:29
msgid "expression"
msgstr ""
#: models.py:30
msgid "negated"
msgstr ""
#: models.py:30
msgid "Inverts the logic of the operator."
msgstr ""
#: models.py:34
msgid "not"
msgstr ""
#: models.py:37
msgid "link condition"
msgstr ""
#: models.py:38
msgid "link conditions"
msgstr ""
#: views.py:32
msgid "No action selected."
msgstr ""
#: views.py:47
#, python-format
msgid "documents in smart link: %(group)s"
msgstr ""
#: views.py:65
#, python-format
msgid "Smart link query error: %s"
msgstr ""
#: views.py:76
#, python-format
msgid "smart links (%s)"
msgstr ""
#: views.py:90
msgid "There no defined smart links for the current document."
msgstr ""
#: views.py:124
#, python-format
msgid "Smart link: %s created successfully."
msgstr ""
#: views.py:131
msgid "Create new smart link"
msgstr ""
#: views.py:144
#, python-format
msgid "Smart link: %s edited successfully."
msgstr ""
#: views.py:153
#, python-format
msgid "Edit smart link: %s"
msgstr ""
#: views.py:168
#, python-format
msgid "Smart link: %s deleted successfully."
msgstr ""
#: views.py:170
#, python-format
msgid "Error deleting smart link: %(smart_link)s; %(error)s."
msgstr ""
#: views.py:180
#, python-format
msgid "Are you sure you wish to delete smart link: %s?"
msgstr ""
#: views.py:193
#, python-format
msgid "conditions for smart link: %s"
msgstr ""
#: views.py:216
#, python-format
msgid "Smart link condition: \"%s\" created successfully."
msgstr ""
#: views.py:223
#, python-format
msgid "Add new conditions to smart link: \"%s\""
msgstr ""
#: views.py:243
#, python-format
msgid "Smart link condition: \"%s\" edited successfully."
msgstr ""
#: views.py:250
msgid "Edit smart link condition"
msgstr ""
#: views.py:257 views.py:288
msgid "condition"
msgstr ""
#: views.py:274
#, python-format
msgid "Smart link condition: \"%s\" deleted successfully."
msgstr ""
#: views.py:276
#, python-format
msgid ""
"Error deleting smart link condition: %(smart_link_condition)s; %(error)s."
msgstr ""
#: views.py:290
#, python-format
msgid "Are you sure you wish to delete smart link condition: \"%s\"?"
msgstr ""
#: conf/settings.py:11
msgid "Show smart link that don't return any documents."
msgstr ""
#: templates/smart_links_help.html:3
msgid "What are smart links?"
msgstr ""
#: templates/smart_links_help.html:4
msgid ""
"Smart links are a set of conditional statements that are used to query the "
"database using the current document the user is accessing as the data "
"source, the results of these queries are a list of documents that relate in "
"some manner to the document being displayed and allow users the ability to "
"jump to and from linked documents very easily."
msgstr ""

View File

@@ -18,10 +18,10 @@ __status__ = 'Production'
__version_info__ = {
'major': 0,
'minor': 10,
'micro': 0,
'releaselevel': 'hotfix',
'serial': 2
'minor': 11,
'micro': 1,
'releaselevel': 'final',
'serial': 0
}
def is_superuser(context):

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-22 11:26-0400\n"
"POT-Creation-Date: 2011-12-06 03:26-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,31 +17,31 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: __init__.py:15
#: __init__.py:31
msgid "maintenance"
msgstr ""
#: __init__.py:16
#: __init__.py:32
msgid "statistics"
msgstr ""
#: __init__.py:17
#: __init__.py:33
msgid "diagnostics"
msgstr ""
#: __init__.py:18
#: __init__.py:34
msgid "sentry"
msgstr ""
#: __init__.py:19
#: __init__.py:35
msgid "admin site"
msgstr ""
#: __init__.py:30
#: __init__.py:38
msgid "home"
msgstr ""
#: __init__.py:32
#: __init__.py:40
msgid "search"
msgstr ""
@@ -130,6 +130,10 @@ msgstr ""
msgid "Other available actions"
msgstr ""
#: templates/home.html:8
msgid "Django based open source document management system"
msgstr ""
#: templates/project_description.html:6
msgid ""
"Open source, Django based electronic document manager with custom metadata, "

View File

@@ -8,42 +8,42 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-11-04 00:56+0000\n"
"Last-Translator: rosarior <roberto.rosario.gonzalez@gmail.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
"mayan-edms/team/es/)\n"
"Language: es\n"
"POT-Creation-Date: 2011-12-06 03:26-0400\n"
"PO-Revision-Date: 2011-12-06 03:27\n"
"Last-Translator: Administrador <admin@admin.com>\n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/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"
"X-Translated-Using: django-rosetta 0.6.2\n"
#: __init__.py:15
#: __init__.py:31
msgid "maintenance"
msgstr "mantenimiento"
#: __init__.py:16
#: __init__.py:32
msgid "statistics"
msgstr "estadísticas"
#: __init__.py:17
#: __init__.py:33
msgid "diagnostics"
msgstr "diagnósticos"
#: __init__.py:18
#: __init__.py:34
msgid "sentry"
msgstr "sentry"
#: __init__.py:19
#: __init__.py:35
msgid "admin site"
msgstr "sitio administrativo"
#: __init__.py:30
#: __init__.py:38
msgid "home"
msgstr "inicio"
#: __init__.py:32
#: __init__.py:40
msgid "search"
msgstr "búsqueda"
@@ -61,11 +61,11 @@ msgstr "Diagnósticos"
#: conf/settings.py:12
msgid ""
"Controls whether the search functionality is provided by a sidebar widget or "
"by a menu entry."
"Controls whether the search functionality is provided by a sidebar "
"widget or by a menu entry."
msgstr ""
"Controla si la funcionalidad de búsqueda es proporcionada por una barra "
"lateral o por una entrada de menú."
"Controla si la funcionalidad de búsqueda es proporcionada por una "
"barra lateral o por una entrada de menú."
#: templates/about.html:5
msgid "About this program"
@@ -134,10 +134,15 @@ msgstr "Acciones"
msgid "Other available actions"
msgstr "Otras acciones disponibles"
#: templates/home.html:8
msgid "Django based open source document management system"
msgstr "Gestor de documentos de código abierto, basado en Django."
#: templates/project_description.html:6
msgid ""
"Open source, Django based electronic document manager with custom metadata, "
"indexing, tagging, file serving integration and OCR capabilities"
"Open source, Django based electronic document manager with custom "
"metadata, indexing, tagging, file serving integration and OCR "
"capabilities"
msgstr ""
"Gestor documental de código abierto, basado en Django con metadatos "
"personaliables, indexación, etiquedado de documentos, integración de "

Binary file not shown.

View File

@@ -0,0 +1,143 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:15
msgid "maintenance"
msgstr ""
#: __init__.py:16
msgid "statistics"
msgstr ""
#: __init__.py:17
msgid "diagnostics"
msgstr ""
#: __init__.py:18
msgid "sentry"
msgstr ""
#: __init__.py:19
msgid "admin site"
msgstr ""
#: __init__.py:30
msgid "home"
msgstr ""
#: __init__.py:32
msgid "search"
msgstr ""
#: views.py:41
msgid "maintenance menu"
msgstr ""
#: views.py:53
msgid "Statistics"
msgstr ""
#: views.py:61
msgid "Diagnostics"
msgstr ""
#: conf/settings.py:12
msgid ""
"Controls whether the search functionality is provided by a sidebar widget or"
" by a menu entry."
msgstr ""
#: templates/about.html:5
msgid "About this program"
msgstr ""
#: templates/about.html:9 templates/verbose_login.html:4
msgid "Version"
msgstr ""
#: templates/base.html:28
msgid "(DEBUG)"
msgstr ""
#: templates/base.html:183
msgid "User"
msgstr ""
#: templates/base.html:185
msgid "Anonymous"
msgstr ""
#: templates/base.html:188
msgid "User details"
msgstr ""
#: templates/base.html:205
msgid "Login"
msgstr ""
#: templates/base.html:205
msgid "Logout"
msgstr ""
#: templates/base.html:285
msgid "Secondary menu"
msgstr ""
#: templates/base.html:302
#, python-format
msgid "Actions for %(name)s: %(navigation_object)s"
msgstr ""
#: templates/base.html:304 templates/base.html.py:336
#, python-format
msgid "Actions for: %(navigation_object)s"
msgstr ""
#: templates/base.html:307
msgid "Available actions"
msgstr ""
#: templates/base.html:319 templates/base.html.py:351
msgid "Related actions"
msgstr ""
#: templates/base.html:334
#, python-format
msgid "Actions for %(object_name)s: %(navigation_object)s"
msgstr ""
#: templates/base.html:339
msgid "Actions"
msgstr ""
#: templates/base.html:364
msgid "Other available actions"
msgstr ""
#: templates/project_description.html:6
msgid ""
"Open source, Django based electronic document manager with custom metadata, "
"indexing, tagging, file serving integration and OCR capabilities"
msgstr ""
#: templates/project_description.html:15
msgid "Released under the GPL V3 License"
msgstr ""

View File

@@ -5,6 +5,7 @@
<div class="content tc">
<h1>{% project_name %}</h1>
<img src="{{ STATIC_URL }}images/1068504_92921456.jpg" />
<h2>{% trans 'Django based open source document management system' %}</h2><hr>
</div>
{% endblock %}
{% block footer %}

Binary file not shown.

View File

@@ -0,0 +1,452 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:56+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:12
msgid "Edit a document's metadata"
msgstr ""
#: __init__.py:13
msgid "Add metadata to a document"
msgstr ""
#: __init__.py:14
msgid "Remove metadata from a document"
msgstr ""
#: __init__.py:15
msgid "View metadata from a document"
msgstr ""
#: __init__.py:17
msgid "Edit metadata types"
msgstr ""
#: __init__.py:18
msgid "Create new metadata types"
msgstr ""
#: __init__.py:19
msgid "Delete metadata types"
msgstr ""
#: __init__.py:20
msgid "View metadata types"
msgstr ""
#: __init__.py:22
msgid "Edit metadata sets"
msgstr ""
#: __init__.py:23
msgid "Create new metadata sets"
msgstr ""
#: __init__.py:24
msgid "Delete metadata sets"
msgstr ""
#: __init__.py:25
msgid "View metadata sets"
msgstr ""
#: __init__.py:27 forms.py:94
msgid "Metadata"
msgstr ""
#: __init__.py:33
msgid "Metadata setup"
msgstr ""
#: __init__.py:44 __init__.py:46
msgid "edit metadata"
msgstr ""
#: __init__.py:45
msgid "metadata"
msgstr ""
#: __init__.py:47 __init__.py:48
msgid "add metadata"
msgstr ""
#: __init__.py:49 __init__.py:50
msgid "remove metadata"
msgstr ""
#: __init__.py:52 models.py:33 views.py:294
msgid "metadata types"
msgstr ""
#: __init__.py:53 __init__.py:58
msgid "edit"
msgstr ""
#: __init__.py:54 __init__.py:59
msgid "delete"
msgstr ""
#: __init__.py:55 __init__.py:60
msgid "create new"
msgstr ""
#: __init__.py:57 views.py:394
msgid "metadata sets"
msgstr ""
#: __init__.py:62 models.py:92
msgid "default metadata"
msgstr ""
#: classes.py:12
#, python-format
msgid "'metadata' object has no attribute '%s'"
msgstr ""
#: forms.py:28
msgid "required"
msgstr ""
#: forms.py:54
msgid "id"
msgstr ""
#: forms.py:55
msgid "Name"
msgstr ""
#: forms.py:57
msgid "Value"
msgstr ""
#: forms.py:58
msgid "Update"
msgstr ""
#: forms.py:64
msgid "Metadata type"
msgstr ""
#: forms.py:68
msgid "Remove"
msgstr ""
#: forms.py:86
msgid "Metadata sets"
msgstr ""
#: models.py:9
#, python-format
msgid " Available models: %s"
msgstr ""
#: models.py:10
#, python-format
msgid " Available functions: %s"
msgstr ""
#: models.py:17
msgid "name"
msgstr ""
#: models.py:17
msgid "Do not use python reserved words, or spaces."
msgstr ""
#: models.py:18 models.py:40
msgid "title"
msgstr ""
#: models.py:20
msgid "default"
msgstr ""
#: models.py:21
#, python-format
msgid "Enter a string to be evaluated.%s"
msgstr ""
#: models.py:23
msgid "lookup"
msgstr ""
#: models.py:24
#, python-format
msgid ""
"Enter a string to be evaluated. Example: [user.get_full_name() for user in "
"User.objects.all()].%s"
msgstr ""
#: models.py:32 models.py:57 views.py:331 views.py:376
msgid "metadata type"
msgstr ""
#: models.py:47 models.py:48 models.py:56 views.py:446 views.py:491
msgid "metadata set"
msgstr ""
#: models.py:64
msgid "metadata set item"
msgstr ""
#: models.py:65
msgid "metadata set items"
msgstr ""
#: models.py:73
msgid "document"
msgstr ""
#: models.py:74
msgid "type"
msgstr ""
#: models.py:75 views.py:283
msgid "value"
msgstr ""
#: models.py:81 models.py:82
msgid "document metadata"
msgstr ""
#: models.py:90 views.py:559
msgid "document type"
msgstr ""
#: models.py:91
msgid "default metadata sets"
msgstr ""
#: models.py:98
msgid "document type defaults"
msgstr ""
#: models.py:99
msgid "document types defaults"
msgstr ""
#: views.py:38 views.py:193
msgid "The selected document doesn't have any metadata."
msgstr ""
#: views.py:43 views.py:131 views.py:199
msgid "Must provide at least one document."
msgstr ""
#: views.py:78 views.py:234
#, python-format
msgid "Error deleting document indexes; %s"
msgstr ""
#: views.py:90
#, python-format
msgid "Error editing metadata for document %(document)s; %(error)s."
msgstr ""
#: views.py:93
#, python-format
msgid "Metadata for document %s edited successfully."
msgstr ""
#: views.py:98 views.py:251
#, python-format
msgid "Error updating document indexes; %s"
msgstr ""
#: views.py:100 views.py:253
msgid "Document indexes updated successfully."
msgstr ""
#: views.py:111
#, python-format
msgid "Edit metadata for document: %s"
msgstr ""
#: views.py:113
#, python-format
msgid "Edit metadata for documents: %s"
msgstr ""
#: views.py:148
#, python-format
msgid ""
"Metadata type: %(metadata_type)s successfully added to document "
"%(document)s."
msgstr ""
#: views.py:151
#, python-format
msgid ""
"Metadata type: %(metadata_type)s already present in document %(document)s."
msgstr ""
#: views.py:175
#, python-format
msgid "Add metadata type to document: %s"
msgstr ""
#: views.py:177
#, python-format
msgid "Add metadata type to documents: %s"
msgstr ""
#: views.py:242
#, python-format
msgid ""
"Successfully remove metadata type: %(metadata_type)s from document: "
"%(document)s."
msgstr ""
#: views.py:245
#, python-format
msgid ""
"Error removing metadata type: %(metadata_type)s from document: %(document)s."
msgstr ""
#: views.py:264
#, python-format
msgid "Remove metadata types from document: %s"
msgstr ""
#: views.py:266
#, python-format
msgid "Remove metadata types from documents: %s"
msgstr ""
#: views.py:281
#, python-format
msgid "metadata for: %s"
msgstr ""
#: views.py:298
msgid "internal name"
msgstr ""
#: views.py:319
msgid "Metadata type edited successfully"
msgstr ""
#: views.py:322
#, python-format
msgid "Error editing metadata type; %s"
msgstr ""
#: views.py:328
#, python-format
msgid "edit metadata type: %s"
msgstr ""
#: views.py:343
msgid "Metadata type created successfully"
msgstr ""
#: views.py:349
msgid "create metadata type"
msgstr ""
#: views.py:368
#, python-format
msgid "Metadata type: %s deleted successfully."
msgstr ""
#: views.py:370
#, python-format
msgid "Metadata type: %(metadata_type)s delete error: %(error)s"
msgstr ""
#: views.py:381
#, python-format
msgid "Are you sure you wish to delete the metadata type: %s?"
msgstr ""
#: views.py:398
msgid "members"
msgstr ""
#: views.py:442
#, python-format
msgid "non members of metadata set: %s"
msgstr ""
#: views.py:443
#, python-format
msgid "members of metadata set: %s"
msgstr ""
#: views.py:458
msgid "Metadata set created successfully"
msgstr ""
#: views.py:464
msgid "create metadata set"
msgstr ""
#: views.py:483
#, python-format
msgid "Metadata set: %s deleted successfully."
msgstr ""
#: views.py:485
#, python-format
msgid "Metadata set: %(metadata_set)s delete error: %(error)s"
msgstr ""
#: views.py:496
#, python-format
msgid "Are you sure you wish to delete the metadata set: %s?"
msgstr ""
#: views.py:554
#, python-format
msgid "non members of document type: %s"
msgstr ""
#: views.py:555
#, python-format
msgid "members of document type: %s"
msgstr ""
#: templates/metadata_set_help.html:3
msgid "What are metadata sets?"
msgstr ""
#: templates/metadata_set_help.html:4
msgid ""
"A metadata set is a group of one or more metadata types. Metadata sets are "
"useful when creating new documents; selecing a metadata set automatically "
"attaches it's member metadata types to said document."
msgstr ""
#: templates/metadata_type_help.html:3
msgid "What are metadata types?"
msgstr ""
#: templates/metadata_type_help.html:4
msgid ""
"A metadata type defines the characteristics of a value of some kind that can"
" be attached to a document. Examples of metadata types are: a client name, "
"a date, or a project to which several documents belong. A metadata type's "
"name is the internal identifier with which it can be referenced to by other "
"modules such as the indexing module, the title is the value that is shown to"
" the users, the default value is the value an instance of this metadata type"
" will have initially, and the lookup value turns an instance of a metadata "
"of this type into a choice list which options are the result of the lookup's"
" code execution."
msgstr ""

View File

@@ -481,11 +481,12 @@ def setup_metadata_set_delete(request, metadata_set_id):
try:
metadata_set.delete()
messages.success(request, _(u'Metadata set: %s deleted successfully.') % metadata_set)
return HttpResponseRedirect(post_action_redirect)
except Exception, e:
messages.error(request, _(u'Metadata set: %(metadata_set)s delete error: %(error)s') % {
'metadata_set': metadata_set, 'error': e})
return HttpResponseRedirect(previous)
return HttpResponseRedirect(next)
context = {
'object_name': _(u'metadata set'),

Binary file not shown.

View File

@@ -0,0 +1,32 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: forms.py:14
msgid "Multi item action"
msgstr ""
#: widgets.py:28
msgid "icon"
msgstr ""
#: templatetags/navigation_tags.py:275
msgid "Selected item actions:"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,448 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:28
msgid "Submit document for OCR"
msgstr ""
#: __init__.py:29
msgid "Delete document for OCR queue"
msgstr ""
#: __init__.py:30
msgid "Can enable/disable an OCR queue"
msgstr ""
#: __init__.py:31
msgid "Can execute an OCR clean up on all document pages"
msgstr ""
#: __init__.py:32
msgid "Can edit an OCR queue properties"
msgstr ""
#: __init__.py:34 __init__.py:56 __init__.py:74
msgid "OCR"
msgstr ""
#: __init__.py:40
msgid "OCR Setup"
msgstr ""
#: __init__.py:44
msgid "submit to OCR queue"
msgstr ""
#: __init__.py:45 __init__.py:46
msgid "re-queue"
msgstr ""
#: __init__.py:47 __init__.py:48 __init__.py:63
msgid "delete"
msgstr ""
#: __init__.py:50
msgid "stop queue"
msgstr ""
#: __init__.py:51
msgid "activate queue"
msgstr ""
#: __init__.py:53
msgid "clean up pages content"
msgstr ""
#: __init__.py:53
msgid ""
"Runs a language filter to remove common OCR mistakes from document pages "
"content."
msgstr ""
#: __init__.py:55
msgid "queue document list"
msgstr ""
#: __init__.py:58 views.py:316
msgid "active tasks"
msgstr ""
#: __init__.py:60
msgid "transformations"
msgstr ""
#: __init__.py:61
msgid "add transformation"
msgstr ""
#: __init__.py:62
msgid "edit"
msgstr ""
#: __init__.py:82
msgid "Default"
msgstr ""
#: __init__.py:104
msgid "Checks the OCR queue for pending documents."
msgstr ""
#: api.py:119
msgid "Text from OCR"
msgstr ""
#: literals.py:8
msgid "stopped"
msgstr ""
#: literals.py:9
msgid "active"
msgstr ""
#: literals.py:18
msgid "pending"
msgstr ""
#: literals.py:19
msgid "processing"
msgstr ""
#: literals.py:20
msgid "error"
msgstr ""
#: models.py:22
msgid "name"
msgstr ""
#: models.py:23
msgid "label"
msgstr ""
#: models.py:27 models.py:47
msgid "state"
msgstr ""
#: models.py:32 models.py:40 views.py:44 views.py:337 views.py:378
#: views.py:408 views.py:444
msgid "document queue"
msgstr ""
#: models.py:33
msgid "document queues"
msgstr ""
#: models.py:41
msgid "document"
msgstr ""
#: models.py:42
msgid "date time submitted"
msgstr ""
#: models.py:43
msgid "delay ocr"
msgstr ""
#: models.py:48
msgid "result"
msgstr ""
#: models.py:49
msgid "node name"
msgstr ""
#: models.py:53
msgid "queue document"
msgstr ""
#: models.py:54
msgid "queue documents"
msgstr ""
#: models.py:63 views.py:48
msgid "Missing document."
msgstr ""
#: models.py:67
msgid "Enter a valid value."
msgstr ""
#: models.py:95 views.py:341
msgid "order"
msgstr ""
#: models.py:96 views.py:342 views.py:379 views.py:409
msgid "transformation"
msgstr ""
#: models.py:97 views.py:343
msgid "arguments"
msgstr ""
#: models.py:97
#, python-format
msgid "Use dictionaries to indentify arguments, example: %s"
msgstr ""
#: models.py:107
msgid "document queue transformation"
msgstr ""
#: models.py:108
msgid "document queue transformations"
msgstr ""
#: statistics.py:8
#, python-format
msgid "Document queues: %d"
msgstr ""
#: statistics.py:9
#, python-format
msgid "Queued documents: %d"
msgstr ""
#: statistics.py:13
msgid "OCR statistics"
msgstr ""
#: views.py:41
#, python-format
msgid "documents in queue: %s"
msgstr ""
#: views.py:49
msgid "thumbnail"
msgstr ""
#: views.py:62
msgid "document queue properties"
msgstr ""
#: views.py:63
#, python-format
msgid "Current state: %s"
msgstr ""
#: views.py:79 views.py:154
msgid "Must provide at least one queue document."
msgstr ""
#: views.py:89
#, python-format
msgid "Document: %s is being processed and can't be deleted."
msgstr ""
#: views.py:92
#, python-format
msgid "Queue document: %(document)s deleted successfully."
msgstr ""
#: views.py:96
#, python-format
msgid "Error deleting document: %(document)s; %(error)s"
msgstr ""
#: views.py:109
#, python-format
msgid "Are you sure you wish to delete queue document: %s?"
msgstr ""
#: views.py:111
#, python-format
msgid "Are you sure you wish to delete queue documents: %s?"
msgstr ""
#: views.py:134
#, python-format
msgid "Document: %(document)s was added to the OCR queue: %(queue)s."
msgstr ""
#: views.py:137
#, python-format
msgid "Document: %(document)s is already queued."
msgstr ""
#: views.py:165
#, python-format
msgid "Document: %s is already being processed and can't be re-queded."
msgstr ""
#: views.py:173
#, python-format
msgid "Document: %(document)s was re-queued to the OCR queue: %(queue)s"
msgstr ""
#: views.py:176
#, python-format
msgid "Document id#: %d, no longer exists."
msgstr ""
#: views.py:189
#, python-format
msgid "Are you sure you wish to re-queue document: %s?"
msgstr ""
#: views.py:191
#, python-format
msgid "Are you sure you wish to re-queue documents: %s?"
msgstr ""
#: views.py:209
#, python-format
msgid "Document queue: %s, already stopped."
msgstr ""
#: views.py:215
#, python-format
msgid "Document queue: %s, stopped successfully."
msgstr ""
#: views.py:221
#, python-format
msgid "Are you sure you wish to disable document queue: %s"
msgstr ""
#: views.py:236
#, python-format
msgid "Document queue: %s, already active."
msgstr ""
#: views.py:242
#, python-format
msgid "Document queue: %s, activated successfully."
msgstr ""
#: views.py:248
#, python-format
msgid "Are you sure you wish to activate document queue: %s"
msgstr ""
#: views.py:265
msgid "Are you sure you wish to clean up all the pages content?"
msgstr ""
#: views.py:266
msgid "On large databases this operation may take some time to execute."
msgstr ""
#: views.py:272
msgid "Document pages content clean up complete."
msgstr ""
#: views.py:274
#, python-format
msgid "Document pages content clean up error: %s"
msgstr ""
#: views.py:320
msgid "node"
msgstr ""
#: views.py:321
msgid "task id"
msgstr ""
#: views.py:322
msgid "task name"
msgstr ""
#: views.py:323
msgid "related object"
msgstr ""
#: views.py:335
#, python-format
msgid "transformations for: %s"
msgstr ""
#: views.py:365
msgid "Queue transformation edited successfully"
msgstr ""
#: views.py:368
#, python-format
msgid "Error editing queue transformation; %s"
msgstr ""
#: views.py:373
#, python-format
msgid "Edit transformation: %s"
msgstr ""
#: views.py:396
msgid "Queue transformation deleted successfully."
msgstr ""
#: views.py:398
#, python-format
msgid "Error deleting queue transformation; %(error)s"
msgstr ""
#: views.py:411
#, python-format
msgid ""
"Are you sure you wish to delete queue transformation \"%(transformation)s\""
msgstr ""
#: views.py:434
msgid "Queue transformation created successfully"
msgstr ""
#: views.py:437
#, python-format
msgid "Error creating queue transformation; %s"
msgstr ""
#: views.py:446
#, python-format
msgid "Create new transformation for queue: %s"
msgstr ""
#: conf/settings.py:13
msgid ""
"Amount of seconds to delay OCR of documents to allow for the node's storage "
"replication overhead."
msgstr ""
#: conf/settings.py:14
msgid "Maximum amount of concurrent document OCRs a node can perform."
msgstr ""
#: conf/settings.py:15
msgid "Automatically queue newly created documents for OCR."
msgstr ""
#: conf/settings.py:17
msgid ""
"URI in the form: \"memcached://127.0.0.1:11211/\" to specify a cache backend"
" to use for locking. Multiple hosts can be specified separated by a "
"semicolon."
msgstr ""
#: conf/settings.py:18
msgid "File path to unpaper program."
msgstr ""
#: parsers/__init__.py:23
msgid "Text extracted from PDF"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,194 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:12
msgid "View roles"
msgstr ""
#: __init__.py:13
msgid "Edit roles"
msgstr ""
#: __init__.py:14
msgid "Create roles"
msgstr ""
#: __init__.py:15
msgid "Delete roles"
msgstr ""
#: __init__.py:16
msgid "Grant permissions"
msgstr ""
#: __init__.py:17
msgid "Revoke permissions"
msgstr ""
#: __init__.py:19 models.py:87 views.py:38
msgid "roles"
msgstr ""
#: __init__.py:20
msgid "create new role"
msgstr ""
#: __init__.py:21
msgid "edit"
msgstr ""
#: __init__.py:22
msgid "members"
msgstr ""
#: __init__.py:23
msgid "role permissions"
msgstr ""
#: __init__.py:24
msgid "delete"
msgstr ""
#: __init__.py:26
msgid "grant"
msgstr ""
#: __init__.py:27
msgid "revoke"
msgstr ""
#: api.py:22
msgid "Permissions"
msgstr ""
#: api.py:55
msgid "Insufficient permissions."
msgstr ""
#: models.py:11 views.py:58
msgid "namespace"
msgstr ""
#: models.py:12 views.py:59
msgid "name"
msgstr ""
#: models.py:13 models.py:82
msgid "label"
msgstr ""
#: models.py:20 models.py:65 views.py:145 views.py:204
msgid "permission"
msgstr ""
#: models.py:21 views.py:55 views.py:147 views.py:206
msgid "permissions"
msgstr ""
#: models.py:73
msgid "permission holder"
msgstr ""
#: models.py:74
msgid "permission holders"
msgstr ""
#: models.py:86 models.py:104 views.py:74 views.py:91 views.py:115
#: views.py:282
msgid "role"
msgstr ""
#: models.py:115
msgid "role member"
msgstr ""
#: models.py:116
msgid "role members"
msgstr ""
#: views.py:61
msgid "has permission"
msgstr ""
#: views.py:142 views.py:201
msgid " and "
msgstr ""
#: views.py:142 views.py:201
#, python-format
msgid "%(permissions)s to %(requester)s"
msgstr ""
#: views.py:152
#, python-format
msgid "Permission \"%(permission)s\" granted to: %(requester)s."
msgstr ""
#: views.py:155
#, python-format
msgid "%(requester)s, already had the permission \"%(permission)s\" granted."
msgstr ""
#: views.py:167
#, python-format
msgid ""
"Are you sure you wish to grant the %(permissions_label)s %(title_suffix)s?"
msgstr ""
#: views.py:211
#, python-format
msgid "Permission \"%(permission)s\" revoked from: %(requester)s."
msgstr ""
#: views.py:214
#, python-format
msgid "%(requester)s, doesn't have the permission \"%(permission)s\" granted."
msgstr ""
#: views.py:226
#, python-format
msgid ""
"Are you sure you wish to revoke the %(permissions_label)s %(title_suffix)s?"
msgstr ""
#: views.py:278
#, python-format
msgid "non members of role: %s"
msgstr ""
#: views.py:279
#, python-format
msgid "members of role: %s"
msgstr ""
#: widgets.py:16
msgid "Revoke"
msgstr ""
#: widgets.py:21
msgid "Grant"
msgstr ""
#: conf/settings.py:10
msgid ""
"A list of existing roles that are automatically assigned to newly created "
"users"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,28 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:42+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:6
msgid "setup"
msgstr ""
#: views.py:13
msgid "setup items"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,24 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:7 views.py:13
msgid "tools"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,36 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:8 views.py:26
msgid "settings"
msgstr ""
#: views.py:31
msgid "name"
msgstr ""
#: views.py:32
msgid "default"
msgstr ""
#: views.py:33
msgid "value"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,462 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:14
msgid "View existing document sources"
msgstr ""
#: __init__.py:15
msgid "Edit document sources"
msgstr ""
#: __init__.py:16
msgid "Delete document sources"
msgstr ""
#: __init__.py:17
msgid "Create new document sources"
msgstr ""
#: __init__.py:19
msgid "Sources setup"
msgstr ""
#: __init__.py:25
msgid "preview"
msgstr ""
#: __init__.py:26 __init__.py:34 __init__.py:40
msgid "delete"
msgstr ""
#: __init__.py:28
msgid "sources"
msgstr ""
#: __init__.py:29 literals.py:53 models.py:159
msgid "web forms"
msgstr ""
#: __init__.py:30 models.py:130
msgid "staging folders"
msgstr ""
#: __init__.py:31 models.py:194
msgid "watch folders"
msgstr ""
#: __init__.py:33 __init__.py:39
msgid "edit"
msgstr ""
#: __init__.py:35
msgid "add new source"
msgstr ""
#: __init__.py:37
msgid "transformations"
msgstr ""
#: __init__.py:38
msgid "add transformation"
msgstr ""
#: __init__.py:42
msgid "Document sources"
msgstr ""
#: __init__.py:69 widgets.py:39
msgid "thumbnail"
msgstr ""
#: forms.py:32 forms.py:55
msgid "Expand compressed files"
msgstr ""
#: forms.py:33 forms.py:56
msgid "Upload a compressed file's contained files as individual documents"
msgstr ""
#: forms.py:41
msgid "Staging file"
msgstr ""
#: literals.py:8 literals.py:13
msgid "Always"
msgstr ""
#: literals.py:9 literals.py:14
msgid "Never"
msgstr ""
#: literals.py:15
msgid "Ask user"
msgstr ""
#: literals.py:30
msgid "Disk"
msgstr ""
#: literals.py:31
msgid "Database"
msgstr ""
#: literals.py:32
msgid "Drive"
msgstr ""
#: literals.py:33
msgid "Network drive"
msgstr ""
#: literals.py:34
msgid "User drive"
msgstr ""
#: literals.py:35
msgid "Envelope"
msgstr ""
#: literals.py:36
msgid "Folder"
msgstr ""
#: literals.py:37
msgid "World"
msgstr ""
#: literals.py:38
msgid "Printer"
msgstr ""
#: literals.py:39
msgid "Empty printer"
msgstr ""
#: literals.py:47 models.py:158
msgid "web form"
msgstr ""
#: literals.py:48
msgid "server staging folder"
msgstr ""
#: literals.py:49
msgid "server watch folder"
msgstr ""
#: literals.py:54
msgid "server staging folders"
msgstr ""
#: literals.py:55
msgid "server watch folders"
msgstr ""
#: models.py:29
msgid "title"
msgstr ""
#: models.py:30
msgid "enabled"
msgstr ""
#: models.py:31
msgid "whitelist"
msgstr ""
#: models.py:32
msgid "blacklist"
msgstr ""
#: models.py:98
msgid "icon"
msgstr ""
#: models.py:98
msgid "An icon to visually distinguish this source."
msgstr ""
#: models.py:114 models.py:166
msgid "folder path"
msgstr ""
#: models.py:114 models.py:166
msgid "Server side filesystem path."
msgstr ""
#: models.py:115
msgid "preview width"
msgstr ""
#: models.py:115
msgid "Width value to be passed to the converter backend."
msgstr ""
#: models.py:116
msgid "preview height"
msgstr ""
#: models.py:116
msgid "Height value to be passed to the converter backend."
msgstr ""
#: models.py:117 models.py:154 models.py:167
msgid "uncompress"
msgstr ""
#: models.py:117 models.py:154 models.py:167
msgid "Whether to expand or not compressed archives."
msgstr ""
#: models.py:118 models.py:168
msgid "delete after upload"
msgstr ""
#: models.py:118 models.py:168
msgid "Delete the file after is has been successfully uploaded."
msgstr ""
#: models.py:129
msgid "staging folder"
msgstr ""
#: models.py:169
msgid "interval"
msgstr ""
#: models.py:169
msgid ""
"Inverval in seconds where the watch folder path is checked for new "
"documents."
msgstr ""
#: models.py:193
msgid "watch folder"
msgstr ""
#: models.py:198
msgid "Enter a valid value."
msgstr ""
#: models.py:226 views.py:487
msgid "order"
msgstr ""
#: models.py:227 views.py:488 views.py:525 views.py:555
msgid "transformation"
msgstr ""
#: models.py:228 views.py:489
msgid "arguments"
msgstr ""
#: models.py:228
#, python-format
msgid "Use dictionaries to indentify arguments, example: %s"
msgstr ""
#: models.py:239
msgid "document source transformation"
msgstr ""
#: models.py:240
msgid "document source transformations"
msgstr ""
#: staging.py:42
#, python-format
msgid "Unable get list of staging files: %s"
msgstr ""
#: staging.py:127
#, python-format
msgid "Unable to upload staging file: %s"
msgstr ""
#: staging.py:137
#, python-format
msgid "Unable to delete staging file: %s"
msgstr ""
#: utils.py:40
msgid "Whitelist Blacklist validation error."
msgstr ""
#: views.py:80
msgid "here"
msgstr ""
#: views.py:85
msgid "Upload sources"
msgstr ""
#: views.py:87
msgid ""
"No interactive document sources have been defined or none have been enabled."
msgstr ""
#: views.py:88
#, python-format
msgid "Click %(setup_link)s to add or enable some document sources."
msgstr ""
#: views.py:136
msgid "Document uploaded successfully."
msgstr ""
#: views.py:152
#, python-format
msgid "upload a local document from source: %s"
msgstr ""
#: views.py:182
#, python-format
msgid "Staging file: %s, uploaded successfully."
msgstr ""
#: views.py:187
#, python-format
msgid "Staging file: %s, deleted successfully."
msgstr ""
#: views.py:209
#, python-format
msgid "upload a document from staging source: %s"
msgstr ""
#: views.py:215
msgid "files in staging path"
msgstr ""
#: views.py:229
msgid "Current metadata"
msgstr ""
#: views.py:265 views.py:284
#, python-format
msgid "Staging file transformation error: %(error)s"
msgstr ""
#: views.py:307
msgid "Staging file delete successfully."
msgstr ""
#: views.py:309
#, python-format
msgid "Staging file delete error; %s."
msgstr ""
#: views.py:368
msgid "Source edited successfully"
msgstr ""
#: views.py:371
#, python-format
msgid "Error editing source; %s"
msgstr ""
#: views.py:376
#, python-format
msgid "edit source: %s"
msgstr ""
#: views.py:381 views.py:421 views.py:483 views.py:524 views.py:554
#: views.py:597
msgid "source"
msgstr ""
#: views.py:410
#, python-format
msgid "Source \"%s\" deleted successfully."
msgstr ""
#: views.py:412
#, python-format
msgid "Error deleting source \"%(source)s\": %(error)s"
msgstr ""
#: views.py:419
#, python-format
msgid "Are you sure you wish to delete the source: %s?"
msgstr ""
#: views.py:451
msgid "Source created successfully"
msgstr ""
#: views.py:454
#, python-format
msgid "Error creating source; %s"
msgstr ""
#: views.py:459
#, python-format
msgid "Create new source of type: %s"
msgstr ""
#: views.py:481
#, python-format
msgid "transformations for: %s"
msgstr ""
#: views.py:511
msgid "Source transformation edited successfully"
msgstr ""
#: views.py:514
#, python-format
msgid "Error editing source transformation; %s"
msgstr ""
#: views.py:519
#, python-format
msgid "Edit transformation: %s"
msgstr ""
#: views.py:542
msgid "Source transformation deleted successfully."
msgstr ""
#: views.py:544
#, python-format
msgid "Error deleting source transformation; %(error)s"
msgstr ""
#: views.py:557
#, python-format
msgid ""
"Are you sure you wish to delete source transformation \"%(transformation)s\""
msgstr ""
#: views.py:587
msgid "Source transformation created successfully"
msgstr ""
#: views.py:590
#, python-format
msgid "Error creating source transformation; %s"
msgstr ""
#: views.py:599
#, python-format
msgid "Create new transformation for source: %s"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,267 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:41+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:13
msgid "Create new tags"
msgstr ""
#: __init__.py:14
msgid "Attach exising tags"
msgstr ""
#: __init__.py:15
msgid "Remove tags from documents"
msgstr ""
#: __init__.py:16
msgid "Delete global tags"
msgstr ""
#: __init__.py:17
msgid "Edit global tags"
msgstr ""
#: __init__.py:18
msgid "View a document's tags"
msgstr ""
#: __init__.py:20
msgid "Tags"
msgstr ""
#: __init__.py:28
msgid "tag list"
msgstr ""
#: __init__.py:29
msgid "create new tag"
msgstr ""
#: __init__.py:30
msgid "attach tag"
msgstr ""
#: __init__.py:31 __init__.py:32
msgid "remove"
msgstr ""
#: __init__.py:33 __init__.py:58 utils.py:14 views.py:144
msgid "tags"
msgstr ""
#: __init__.py:34 __init__.py:37
msgid "delete"
msgstr ""
#: __init__.py:35
msgid "edit"
msgstr ""
#: __init__.py:36
msgid "tagged documents"
msgstr ""
#: __init__.py:41 models.py:46
msgid "color"
msgstr ""
#: __init__.py:45
msgid "color name"
msgstr ""
#: forms.py:14
msgid "New tag"
msgstr ""
#: forms.py:15 forms.py:24
msgid "Color"
msgstr ""
#: forms.py:16
msgid "Existing tags"
msgstr ""
#: forms.py:23
msgid "Name"
msgstr ""
#: models.py:18
msgid "Blue"
msgstr ""
#: models.py:19
msgid "Cyan"
msgstr ""
#: models.py:20
msgid "Coral"
msgstr ""
#: models.py:21
msgid "Green-Yellow"
msgstr ""
#: models.py:22
msgid "Khaki"
msgstr ""
#: models.py:23
msgid "LightGrey"
msgstr ""
#: models.py:24
msgid "Magenta"
msgstr ""
#: models.py:25
msgid "Red"
msgstr ""
#: models.py:26
msgid "Orange"
msgstr ""
#: models.py:27
msgid "Yellow"
msgstr ""
#: models.py:45 views.py:185 views.py:233 views.py:248
msgid "tag"
msgstr ""
#: models.py:49
msgid "tag properties"
msgstr ""
#: models.py:50
msgid "tags properties"
msgstr ""
#: views.py:33
msgid "Tag already exists."
msgstr ""
#: views.py:40
msgid "Tag created succesfully."
msgstr ""
#: views.py:46
msgid "create tag"
msgstr ""
#: views.py:73 views.py:112
msgid "Must choose either a new tag or an existing one."
msgstr ""
#: views.py:77 views.py:116
#, python-format
msgid "Document is already tagged as \"%s\""
msgstr ""
#: views.py:86
#, python-format
msgid "Tag \"%s\" added successfully."
msgstr ""
#: views.py:124
#, python-format
msgid "Tag \"%s\" added and attached successfully."
msgstr ""
#: views.py:126
#, python-format
msgid "Tag \"%s\" attached successfully."
msgstr ""
#: views.py:133
#, python-format
msgid "attach tag to: %s"
msgstr ""
#: views.py:149
msgid "tagged items"
msgstr ""
#: views.py:166 views.py:280
msgid "Must provide at least one tag."
msgstr ""
#: views.py:176
#, python-format
msgid "Tag \"%s\" deleted successfully."
msgstr ""
#: views.py:178 views.py:294
#, python-format
msgid "Error deleting tag \"%(tag)s\": %(error)s"
msgstr ""
#: views.py:193
#, python-format
msgid "Are you sure you wish to delete the tag: %s?"
msgstr ""
#: views.py:194 views.py:197
msgid "Will be removed from all documents."
msgstr ""
#: views.py:196
#, python-format
msgid "Are you sure you wish to delete the tags: %s?"
msgstr ""
#: views.py:221
msgid "Tag updated succesfully."
msgstr ""
#: views.py:230
#, python-format
msgid "edit tag: %s"
msgstr ""
#: views.py:245
#, python-format
msgid "documents with the tag \"%s\""
msgstr ""
#: views.py:258
#, python-format
msgid "tags for: %s"
msgstr ""
#: views.py:292
#, python-format
msgid "Tag \"%s\" removed successfully."
msgstr ""
#: views.py:308
#, python-format
msgid "Are you sure you wish to remove the tag: %s?"
msgstr ""
#: views.py:310
#, python-format
msgid "Are you sure you wish to remove the tags: %s?"
msgstr ""
#: templatetags/tags_tags.py:17
msgid "Add tag to document"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,254 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-09-30 04:55+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:8
msgid "Create new users"
msgstr ""
#: __init__.py:9
msgid "Edit existing users"
msgstr ""
#: __init__.py:10
msgid "View existing users"
msgstr ""
#: __init__.py:11
msgid "Delete existing users"
msgstr ""
#: __init__.py:13
msgid "Create new groups"
msgstr ""
#: __init__.py:14
msgid "Edit existing groups"
msgstr ""
#: __init__.py:15
msgid "View existing groups"
msgstr ""
#: __init__.py:16
msgid "Delete existing groups"
msgstr ""
#: __init__.py:18
msgid "User management"
msgstr ""
#: __init__.py:28
msgid "user list"
msgstr ""
#: __init__.py:29 views.py:31
msgid "users"
msgstr ""
#: __init__.py:30 __init__.py:39
msgid "edit"
msgstr ""
#: __init__.py:31 views.py:92
msgid "create new user"
msgstr ""
#: __init__.py:32 __init__.py:33 __init__.py:41 __init__.py:42
msgid "delete"
msgstr ""
#: __init__.py:34 __init__.py:35
msgid "reset password"
msgstr ""
#: __init__.py:37
msgid "group list"
msgstr ""
#: __init__.py:38 views.py:222
msgid "groups"
msgstr ""
#: __init__.py:40 views.py:270
msgid "create new group"
msgstr ""
#: __init__.py:43 views.py:226
msgid "members"
msgstr ""
#: forms.py:13
msgid "New password"
msgstr ""
#: forms.py:14
msgid "Confirm password"
msgstr ""
#: views.py:35
msgid "full name"
msgstr ""
#: views.py:39
msgid "email"
msgstr ""
#: views.py:43
msgid "active"
msgstr ""
#: views.py:58
msgid ""
"Super user and staff user editing is not allowed, use the admin interface "
"for these cases."
msgstr ""
#: views.py:65
#, python-format
msgid "User \"%s\" updated successfully."
msgstr ""
#: views.py:71
#, python-format
msgid "edit user: %s"
msgstr ""
#: views.py:74 views.py:130 views.py:193
msgid "user"
msgstr ""
#: views.py:86
#, python-format
msgid "User \"%s\" created successfully."
msgstr ""
#: views.py:108 views.py:162
msgid "Must provide at least one user."
msgstr ""
#: views.py:118
msgid ""
"Super user and staff user deleting is not allowed, use the admin interface "
"for these cases."
msgstr ""
#: views.py:121
#, python-format
msgid "User \"%s\" deleted successfully."
msgstr ""
#: views.py:123
#, python-format
msgid "Error deleting user \"%(user)s\": %(error)s"
msgstr ""
#: views.py:138
#, python-format
msgid "Are you sure you wish to delete the user: %s?"
msgstr ""
#: views.py:140
#, python-format
msgid "Are you sure you wish to delete the users: %s?"
msgstr ""
#: views.py:173
msgid "Passwords do not match, try again."
msgstr ""
#: views.py:178
msgid ""
"Super user and staff user password reseting is not allowed, use the admin "
"interface for these cases."
msgstr ""
#: views.py:182
#, python-format
msgid "Successfull password reset for user: %s."
msgstr ""
#: views.py:184
#, python-format
msgid "Error reseting password for user \"%(user)s\": %(error)s"
msgstr ""
#: views.py:200
#, python-format
msgid "Reseting password for user: %s"
msgstr ""
#: views.py:202
#, python-format
msgid "Reseting password for users: %s"
msgstr ""
#: views.py:243
#, python-format
msgid "Group \"%s\" updated successfully."
msgstr ""
#: views.py:249
#, python-format
msgid "edit group: %s"
msgstr ""
#: views.py:252 views.py:305 views.py:350
msgid "group"
msgstr ""
#: views.py:264
#, python-format
msgid "Group \"%s\" created successfully."
msgstr ""
#: views.py:286
msgid "Must provide at least one group."
msgstr ""
#: views.py:296
#, python-format
msgid "Group \"%s\" deleted successfully."
msgstr ""
#: views.py:298
#, python-format
msgid "Error deleting group \"%(group)s\": %(error)s"
msgstr ""
#: views.py:313
#, python-format
msgid "Are you sure you wish to delete the group: %s?"
msgstr ""
#: views.py:315
#, python-format
msgid "Are you sure you wish to delete the groups: %s?"
msgstr ""
#: views.py:345
#, python-format
msgid "non members of group: %s"
msgstr ""
#: views.py:346
#, python-format
msgid "members of group: %s"
msgstr ""

Binary file not shown.

View File

@@ -0,0 +1,76 @@
# 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: 2011-11-22 11:26-0400\n"
"PO-Revision-Date: 2011-11-03 21:42+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: conf/settings.py:10
msgid ""
"CSS theme to apply, options are: amro, bec, bec-green, blue, default, djime-"
"cerulean, drastic-dark, kathleene, olive, orange, red, reidb-greenish and "
"warehouse."
msgstr ""
#: conf/settings.py:12
msgid "Display extra information in the login screen."
msgstr ""
#: templates/web_theme_base.html:101
msgid "dismiss all notifications"
msgstr ""
#: templates/web_theme_base.html:101
msgid "close all"
msgstr ""
#: templates/web_theme_base.html:102
msgid "dismiss this notification"
msgstr ""
#: templates/web_theme_base.html:102
msgid "close"
msgstr ""
#: templates/web_theme_login.html:12 templates/web_theme_login.html.py:33
msgid "Login"
msgstr ""
#: templates/web_theme_login.html:17
msgid "You are already logged in"
msgstr ""
#: templates/web_theme_login.html:20
msgid "Redirecting you to the website entry point in 5 seconds."
msgstr ""
#: templates/web_theme_login.html:23
#, python-format
msgid ""
"Or click <a href=\"%(LOGIN_REDIRECT_URL)s\">here</a> if redirection doesn't "
"work."
msgstr ""
#: templates/pagination/pagination.html:6
#: templates/pagination/pagination.html:8
msgid "Previous"
msgstr ""
#: templates/pagination/pagination.html:26
#: templates/pagination/pagination.html:28
msgid "Next"
msgstr ""

View File

@@ -1,19 +1,22 @@
2011-12-2
---------
* Added migrations and model updated to support document versions
2011-12-1
---------
* OCR queue processing improvements
* Office documents handling improvements
* Text extraction support for office documents
* RTF text documents are now handled as office documents
Version 0.11
------------
* Support for signed documents verification added, embedded and detached
signatures are supported. When verifying a document Mayan EDMS will
try to fetch the public key from the list of keyservers provided in the
configuration option SIGNATURES_KEYSERVERS (which defaults to
'pool.sks-keyservers.net'). A public key management view has been added
to the setup menu as well as a key query and fetching view to manually
import keys from a keyserver.
* Added support for document versions. Users can upload unlimited amount
of versions for a document using a very flexible document version numbering
system, users can also revert to a previous document version.
* OCR queue processing improvements.
* Office documents handling improvements.
* Text extraction support for office documents.
* RTF text documents are now handled as office documents.
* Added a view to delete the document image cache, useful when switching
converter backends or doing diagnostics
2011-11-30
----------
* Added South to the requirements
converter backends or doing diagnostics.
* Added South to the requirements.
* Merged documents' filename and extension database fiels into a single
filename field, filename are store as uploaded not manipulation is done
Users with existing data must install South and run the appropiate
@@ -22,16 +25,11 @@
$ ./manager syncdb
$ ./manage.py migrate documents 0001 --fake
$ ./manage.py migrate documents
* Added new office document mimetype
* application/vnd.ms-office
* Fixed documents not saving the file encoding
2011-11-28
----------
* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to IHLeanne for finding this one
* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to
IHLeanne for finding this one
Version 0.10.1
@@ -42,6 +40,9 @@ Version 0.10.1
to upgrade
* django-compressor is now disabled by default, users must explicitly
enable it adding COMPRESS_ENABLED=True to their settings_local.py file
Version 0.10
------------

View File

@@ -48,10 +48,10 @@ copyright = u'2011, Roberto Rosario'
# built documents.
#
# The short X.Y version.
version = '0.10.1'
version = '0.11.1'
# The full version, including alpha/beta/rc tags.
release = '0.10'
release = '0.11.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.

View File

@@ -38,6 +38,10 @@ Suggestions
Translations
------------
* Portuguese
* Emerson Soares (http://emersonsoares.com)
* Renata Oliveira (https://twitter.com/#!/rnataoliveira)
* Russian
* Сергей Глита [Sergey Glita] (s.v.glita@gmail.com)
* Italian
* Pierpaolo Baldan

View File

@@ -112,3 +112,13 @@ Credits
* http://pypi.python.org/pypi/django-taggit
* Image 392336_7079 (stock exchange)
* djangorestframework
* South
* python-gnupg
* python-hkp

View File

@@ -2,6 +2,23 @@
Features
========
* Document versioning.
* Store many versions of the same document, download or revert to a previous version.
* Electronic signature verification.
* Check the authenticity of documents by verifying their embedded cryptographic signatures or upload detached signatures for document signed after they were stored.
* Collaboration tools.
* Discuss documents, comment on new version of a document.
* Office document format support.
* Word processing files? Spreadsheets? Sresentations? They are supported too.
* User defined metadata fields and meta data sets.
* Metadata fields can be grouped into sets per technical, legal or structural requirements such as the `Dublin core`_
@@ -27,18 +44,28 @@ Features
* Local file or server side file uploads.
* Batch upload many documents with the same metadata.
* Clone a document's metadata for speedier uploads and eliminate repetitive data entry.
* Previews for a great deal of image formats, including PDF.
* **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments.
* Full text searching.
* Document can be searched by their text content, their metadata or any other file attribute such as name, extension, etc.
* Configurable document grouping.
* Automatic linking of documents based on metadata values or document properties.
* Permissions and roles support.
* Roles support.
* User can created many different roles and are not limited to the traditional limited admin, operator, guest paradigm.
* Users can created an unlimited amount of different roles and are not restricted to the traditional admin, operator, guest paradigm.
* Fine grained permissions system.
* There is a permission for every atomic operation performed by users.
* Multi page document support.
@@ -55,7 +82,19 @@ Features
.. _Django: https://www.djangoproject.com/
* Multilingual OCR support.
* *As supported by the OCR engine tesseract.
* Duplicated document search.
* Plugable storage backends (File based and GridFS included).
* Very easy to convert other 3rd party such as the ones available for Amazon EC2.
* Color coded tagging.
* Labeled and color coded tags that are intituitive.
* Staging folders to receive scanned documents directly from network attached scanners.
* Preview scanned files even before uploading them.

View File

@@ -43,7 +43,6 @@ Contents
settings
updates
development
technical
contributors
credits
faq

View File

@@ -23,6 +23,7 @@ Executables:
* ``tesseract-ocr`` - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
* ``unpaper`` - post-processing scanned and photocopied book pages
* ``gpg`` - The GNU Privacy Guard
Optional requirements
=====================

View File

@@ -88,6 +88,8 @@ Documents
Default: ``image_cache`` (relative to the installation path)
The path where the visual representations of the documents are stored for fast display.
Converter
---------
@@ -128,19 +130,32 @@ Converter
Graphics conversion backend to use. Options are: ``converter.backends.imagemagick``,
``converter.backends.graphicsmagick`` and ``converter.backends.python``.
Suggested options: ``-limit files 1 -limit memory 1GB -limit map 2GB -density 200``
.. data:: CONVERTER_UNOCONV_PATH
Default: ``/usr/bin/unoconv``
Path to the unoconv program.
Grouping
---------
.. data:: GROUPING_SHOW_EMPTY_GROUPS
.. data:: CONVERTER_UNOCONV_USE_PIPE
Default: ``True``
Use alternate method of connection to LibreOffice using a pipe, it is slower but less prone to segmentation faults.
Linking
-------
.. data:: LINKING_SHOW_EMPTY_SMART_LINKS
Default: ``True``
Show smart links even when they don't return any documents.
Storage
-------
@@ -224,7 +239,7 @@ OCR
.. data:: OCR_REPLICATION_DELAY
Default: ``10``
Default: ``0``
Amount of seconds to delay OCR of documents to allow for the node's
storage replication overhead.
@@ -384,3 +399,13 @@ User management
Default: ``[]``
A list of existing roles that are automatically assigned to newly created users
Signatures
----------
.. data:: SIGNATURES_KEYSERVERS
Default: ``['pool.sks-keyservers.net']``
List of keyservers to be queried for unknown keys.

View File

@@ -7,108 +7,130 @@ cd $BASE/apps/common
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/converter
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/documents
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/document_comments
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/document_indexing
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/dynamic_search
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/folders
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/history
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/linking
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/main
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/metadata
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/navigation
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/ocr
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/permissions
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/project_setup
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/project_tools
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/smart_settings
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/sources
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/tags
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/user_management
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/web_theme
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it
cd $BASE/apps/django_gpg
$COMPILEMESSAGES -l pt
$COMPILEMESSAGES -l ru
$COMPILEMESSAGES -l es
$COMPILEMESSAGES -l it

View File

@@ -8,129 +8,151 @@ $MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/converter
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/documents
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/document_comments
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/document_indexing
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/dynamic_search
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/folders
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/history
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/linking
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/main
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/metadata
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/navigation
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/ocr
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/permissions
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/project_setup
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/project_tools
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/smart_settings
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/sources
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/tags
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/user_management
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/web_theme
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it
cd $BASE/apps/django_gpg
$MAKEMESSAGES -l en
$MAKEMESSAGES -l pt
$MAKEMESSAGES -l ru
$MAKEMESSAGES -l es
$MAKEMESSAGES -l it

View File

@@ -53,6 +53,7 @@ LANGUAGES = (
('es', ugettext('Spanish')),
('pt', ugettext('Portuguese')),
('ru', ugettext('Russian')),
('it', ugettext('Italian')),
)
SITE_ID = 1
@@ -189,6 +190,8 @@ STATICFILES_FINDERS = (
COMPRESS_PARSER = 'compressor.parser.HtmlParser'
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter']
COMPRESS_ENABLED=False
#===== User configuration options ===============
#--------- Pagination ------------------
#PAGINATION_DEFAULT_PAGINATION = 10