Compare commits
1 Commits
developmen
...
feature/ex
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6063aa5cd8 |
38
.gitignore
vendored
38
.gitignore
vendored
@@ -3,28 +3,26 @@
|
||||
*.pyo
|
||||
*.sqlite
|
||||
*.sqlite3
|
||||
*egg-info*
|
||||
.coverage
|
||||
.coverage.tox*
|
||||
.idea/
|
||||
.tox/
|
||||
.vagrant
|
||||
_build/
|
||||
/build/
|
||||
coverage.xml
|
||||
document_storage/
|
||||
gpg_home/
|
||||
htmlcov/
|
||||
mayan/media/
|
||||
mayan/media/document_cache/
|
||||
mayan/settings/local.py
|
||||
mayan/error.log
|
||||
settings_local.py
|
||||
static_collected/
|
||||
/celerybeat-schedule
|
||||
/fabfile_install
|
||||
/dist/
|
||||
document_storage/
|
||||
/misc/mayan.geany
|
||||
mayan/media/document_cache/
|
||||
build/
|
||||
_build/
|
||||
gpg_home/
|
||||
/mayan/media/static/
|
||||
/venv/
|
||||
/whoosh_index/
|
||||
/fabfile_install
|
||||
/venv/
|
||||
.coverage
|
||||
/dist/
|
||||
.idea/
|
||||
static_collected/
|
||||
*egg-info*
|
||||
mayan/settings/local.py
|
||||
.vagrant
|
||||
.tox/
|
||||
coverage.xml
|
||||
.coverage.tox*
|
||||
htmlcov/
|
||||
|
||||
@@ -8,7 +8,7 @@ before_script:
|
||||
- update-locale LANG=en_US.UTF-8
|
||||
- export LC_ALL=en_US.UTF-8
|
||||
- apt-get update -qq
|
||||
- apt-get install -qq curl graphviz python-dev python-pip gcc gnupg1 tesseract-ocr tesseract-ocr-deu ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
||||
- apt-get install -qq curl python-dev python-pip gcc gnupg1 tesseract-ocr tesseract-ocr-deu ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
||||
variables:
|
||||
POSTGRES_DB: "mayan_edms"
|
||||
POSTGRES_PASSWORD: "postgres"
|
||||
@@ -21,8 +21,8 @@ test:mysql:
|
||||
- pip install mysql-python
|
||||
- apt-get install -qq mysql-client
|
||||
- mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD" -e "set global character_set_server=utf8mb4;"
|
||||
- coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
|
||||
- codecov
|
||||
- coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_mysql --nomigrations
|
||||
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
tags:
|
||||
- mysql
|
||||
test:postgres:
|
||||
@@ -30,12 +30,12 @@ test:postgres:
|
||||
- apt-get install -qq libpq-dev
|
||||
- pip install -r requirements/testing.txt
|
||||
- pip install psycopg2
|
||||
- coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
|
||||
- codecov
|
||||
- coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci.db_postgres --nomigrations
|
||||
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
tags:
|
||||
- postgres
|
||||
test:sqlite:
|
||||
script:
|
||||
- pip install -r requirements/testing.txt
|
||||
- coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.gitlab-ci --nomigrations
|
||||
- codecov
|
||||
- coverage run manage.py runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations
|
||||
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
|
||||
|
||||
10
.travis.yml
10
.travis.yml
@@ -1,5 +1,3 @@
|
||||
dist: trusty
|
||||
sudo: required
|
||||
language: python
|
||||
python:
|
||||
- 2.7
|
||||
@@ -10,7 +8,7 @@ env:
|
||||
- DB=sqlite
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get install -qq python-dev python-pip gcc tesseract-ocr tesseract-ocr-deu ghostscript libjpeg-dev libpng-dev libtiff-dev poppler-utils libreoffice
|
||||
- sudo apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper ghostscript libjpeg-dev libpng-dev poppler-utils libreoffice
|
||||
install:
|
||||
- "pip install -r requirements/testing.txt"
|
||||
- if [[ $DB == mysql ]]; then pip install -q mysql-python; fi
|
||||
@@ -19,9 +17,9 @@ before_script:
|
||||
- mysql -e 'create database mayan_edms;'
|
||||
- psql -c 'create database mayan_edms;' -U postgres
|
||||
script:
|
||||
- if [[ $DB == mysql ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi
|
||||
- if [[ $DB == postgres ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi
|
||||
- if [[ $DB == sqlite ]]; then coverage run manage.py test --mayan-apps --settings=mayan.settings.testing.base --nomigrations; fi
|
||||
- if [[ $DB == mysql ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_mysql --nomigrations; fi
|
||||
- if [[ $DB == postgres ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.travis.db_postgres --nomigrations; fi
|
||||
- if [[ $DB == sqlite ]]; then coverage run manage.py runtests --settings=mayan.settings.testing.base --nomigrations; fi
|
||||
after_success:
|
||||
- coveralls
|
||||
branches:
|
||||
|
||||
40
.tx/config
40
.tx/config
@@ -19,12 +19,6 @@ source_lang = en
|
||||
source_file = mayan/apps/authentication/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.cabinets-2-0]
|
||||
file_filter = mayan/apps/cabinets/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/cabinets/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.checkouts-2-0]
|
||||
file_filter = mayan/apps/checkouts/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -67,12 +61,6 @@ source_lang = en
|
||||
source_file = mayan/apps/document_indexing/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_parsing-2-0]
|
||||
file_filter = mayan/apps/document_parsing/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/document_parsing/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.document_signatures-2-0]
|
||||
file_filter = mayan/apps/document_signatures/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -97,6 +85,18 @@ source_lang = en
|
||||
source_file = mayan/apps/events/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.folders-2-0]
|
||||
file_filter = mayan/apps/folders/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/folders/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.installation-2-0]
|
||||
file_filter = mayan/apps/installation/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/installation/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.linking-2-0]
|
||||
file_filter = mayan/apps/linking/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -127,6 +127,12 @@ source_lang = en
|
||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.mirroring-2-0]
|
||||
file_filter = mayan/apps/mirroring/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/mirroring/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.motd-2-0]
|
||||
file_filter = mayan/apps/motd/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
@@ -164,9 +170,9 @@ source_file = mayan/apps/sources/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.statistics-2-0]
|
||||
file_filter = mayan/apps/mayan_statistics/locale/<lang>/LC_MESSAGES/django.po
|
||||
file_filter = mayan/apps/statistics/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/mayan_statistics/locale/en/LC_MESSAGES/django.po
|
||||
source_file = mayan/apps/statistics/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.storage-2-0]
|
||||
@@ -181,12 +187,6 @@ source_lang = en
|
||||
source_file = mayan/apps/tags/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.task_manager-2-0]
|
||||
file_filter = mayan/apps/task_manager/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
source_file = mayan/apps/task_manager/locale/en/LC_MESSAGES/django.po
|
||||
type = PO
|
||||
|
||||
[mayan-edms.user_management-2-0]
|
||||
file_filter = mayan/apps/user_management/locale/<lang>/LC_MESSAGES/django.po
|
||||
source_lang = en
|
||||
|
||||
@@ -17,7 +17,7 @@ same properties that can trigger the issue and upload that file instead.
|
||||
- Add steps that trigger the issue in a **repeatable manner**.
|
||||
- **Screenshots** go a long way in helping understand problems.
|
||||
- The issue must be related to the code only, do not open issues for problems
|
||||
with deployments, webservers, cloud providers, etc.
|
||||
with webservers, cloud providers, etc.
|
||||
- Do not open issues asking for **support or consulting**.
|
||||
|
||||
Code
|
||||
@@ -40,19 +40,7 @@ following branches:
|
||||
are unstable and should not be used in production.
|
||||
|
||||
1. Start making your changes in your own separate branch.
|
||||
1. Write a test which shows that the bug was fixed or that the feature works as
|
||||
expected.
|
||||
1. Sign your work. Your signature certifies your submission according to the
|
||||
articles of the [Developer Certificate of Origin](https://gitlab.com/mayan-edms/mayan-edms/blob/master/DCO).
|
||||
The sign-off should be in the form:
|
||||
|
||||
````
|
||||
Signed-off-by: John Doe <john.doe@example.com>
|
||||
````
|
||||
|
||||
You must use your real name and email, pseudonyms or anonymous contributions
|
||||
are not allowed. If you set your user.name and user.email git configs, you can
|
||||
sign your commit automatically with git commit -s.
|
||||
1. Write a test which shows that the bug was fixed or that the feature works as expected.
|
||||
1. Submit a merge request for your changes.
|
||||
|
||||
Feature requests
|
||||
@@ -76,3 +64,8 @@ Code style
|
||||
----------
|
||||
- Refer to the [Development](http://mayan.readthedocs.io/en/latest/topics/development.html)
|
||||
chapter for information and examples of the code style.
|
||||
|
||||
License
|
||||
-------
|
||||
By contributing your code, you agree to license your contribution under the
|
||||
terms of the project's license.
|
||||
|
||||
36
DCO
36
DCO
@@ -1,36 +0,0 @@
|
||||
Developer Certificate of Origin
|
||||
Version 1.1
|
||||
|
||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||
660 York Street, Suite 102,
|
||||
San Francisco, CA 94110 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
257
HISTORY.rst
257
HISTORY.rst
@@ -1,206 +1,4 @@
|
||||
3.0 (2017-XX-XX)
|
||||
================
|
||||
- Add support for notifications. GitLab #262.
|
||||
- Add quota support. GitLab #284.
|
||||
|
||||
2.7.2 (2017-09-06)
|
||||
==================
|
||||
- Fix new mailer creation view. GitLab issue #431.
|
||||
Thanks to Robert Schöftner (@robert.schoeftner) for the
|
||||
report and the solution.
|
||||
- Consolidate intial document created event and the first
|
||||
document properties edited events. Preserve the user that
|
||||
initially creates the document. GitLab issue #433. Thanks
|
||||
to Jesaja Everling (@jeverling) for the report.
|
||||
- Sort the list of root cabinets. Thanks to Thomas Plotkowiak
|
||||
for the request.
|
||||
- Sort the list of a document's cabinets.
|
||||
- Display a document's cabinet list in italics. GitLab issue #435.
|
||||
Thanks to LeVon Smoker for the request.
|
||||
- Install mock by default to allow easier testing of deployed
|
||||
instances.
|
||||
|
||||
2.7.1 (2017-09-03)
|
||||
==================
|
||||
- Support unicode in URL querystring. GitLab issue #423.
|
||||
Thanks to Gustavo Teixeira (@gsteixei) for the find.
|
||||
- Import errors during initialization are only ignored
|
||||
if they are cause by a missing local.py. Thanks to
|
||||
MacRobb Simpson for the report and solution.
|
||||
- Make sure the local.py created used unicode for strings
|
||||
by default. GitLab issue #424. Thanks to Gustavo Teixeira
|
||||
(@gsteixei) for the find.
|
||||
|
||||
2.7 (2017-08-30)
|
||||
================
|
||||
- Add workaround for PDF with IndirectObject as the
|
||||
rotation value. GitHub #261.
|
||||
- Add ACL list link with icon and use it for the document facet menu.
|
||||
- Fix mailing app permissions labels.
|
||||
- Add ACLs link and ACLs permissions to the mailer profile model.
|
||||
- Improve mailer URL regex.
|
||||
- Add ordering support to the SourceColumn class. GitLab issue #417.
|
||||
- Shows the cabinets in the document list. GitLab #417 @corneliusludmann
|
||||
- Add workaround for pycountry versions without the bibliographical key.
|
||||
GitHub issue #250.
|
||||
- Skip UUID migration on Oracle backends. GitHub issue #251.
|
||||
- Allow changing the output format, DPI of the pdftoppm command, and
|
||||
the output format of the converter via the CONVERTER_GRAPHICS_BACKEND_CONFIG
|
||||
setting. GitHub issues #256 #257 GitLab issue #416.
|
||||
- Add support for workflow triggers.
|
||||
- Add support for workflow actions.
|
||||
- Add support for rendering workflows.
|
||||
- Add support for unbinding sub menus.
|
||||
- Fix mailing profile test view.
|
||||
- Disregard the last 3 dots that mark the end of the YAML document.
|
||||
- Add support for multiple dashboards.
|
||||
- Add support for removing dashboard widgets.
|
||||
- Convert document version view to item list view.
|
||||
- Add support for browsing individual document versions.
|
||||
- Add support for dropdown menus to the item list view template.
|
||||
- Add support for preserving the file extenstion when downloading a document
|
||||
version. GitLab #415.
|
||||
- Split OCR app into OCR and parsing.
|
||||
- Remove Folders app.
|
||||
- Use the literal 'System' instead of the target name when
|
||||
the action user in unknown.
|
||||
- Remove the view to submit all document for OCR.
|
||||
- When changing document types, don't delete the old metadata that is
|
||||
also found in the new document type. GitLab issue #421.
|
||||
- Add tag attach and tag remove events.
|
||||
- Change the permission needed to attach and remove tags.
|
||||
- Add HTTP POST workflow state action.
|
||||
- Add access control grant workflow state action.
|
||||
- Beta Python 3 support.
|
||||
|
||||
2.6.4 (2017-07-26)
|
||||
==================
|
||||
- Add missing replacements of reverse to resolve_url.
|
||||
|
||||
2.6.3 (2017-07-25)
|
||||
==================
|
||||
- Add makefile target to launch a PostgreSQL container.
|
||||
- Use resolve_url instead of redirect to resolve the post login URL.
|
||||
- Make the intialsetup and performupgrade management tasks work
|
||||
with signals to allow customization from 3rd party apps.
|
||||
- PEP8 cleanups.
|
||||
- Add tag_ids keyword argument to the Source.handle_upload
|
||||
model method. GitLab issue #413.
|
||||
- Add overflow wrapping so wrap long titles in Firefox too.
|
||||
- Makes Roles searchable. GitLab issue #402.
|
||||
- Add line numbers to the debug and production loggers.
|
||||
Add date and time to the production logger.
|
||||
- Add support for generating setup.py from a template. GitLab
|
||||
#149 #200.
|
||||
- Add fade in animation to document images.
|
||||
|
||||
2.6.2 (2017-07-19)
|
||||
==================
|
||||
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
|
||||
- Fix document page zoom.
|
||||
- Add support to run tests against a MySQL, Postgres or Oracle container.
|
||||
- Improve tag widget customization by moving the markup to its own template.
|
||||
- Fix document page widget appearance in the document page list view.
|
||||
- Make document version order deterministic.
|
||||
- Allow total page number instrospection of encrypted PDF with non ASCII user properties. GitLab issue #411.
|
||||
- Oracle database compatibility update in the cabinets app. GitHub #258.
|
||||
|
||||
2.6.1 (2017-07-18)
|
||||
==================
|
||||
- Fix issue when editing or removing metadata from multiple documents.
|
||||
|
||||
2.6 (2017-07-18)
|
||||
================
|
||||
- Fix HTML mark up in window title. GitLab #397.
|
||||
- Add support for emailing documents to a recipient list. GitLab #396.
|
||||
- Backport metadata widget changes from @Macrobb. GitLab #377.
|
||||
- Make users and group searchable.
|
||||
- Add support for logging errors during in production mode.
|
||||
Add COMMON_PRODUCTION_ERROR_LOG_PATH to control path of log file.
|
||||
Defaults to mayan/error.log.
|
||||
- Add support logging request exceptions.
|
||||
- Add document list item view.
|
||||
- Sort setting by namespace label and by global name second.
|
||||
- Sort indexes by label.
|
||||
- Fix cabinets permission and access control checking.
|
||||
- The permission to add or remove documents to cabinets now applies to documents too.
|
||||
- Equalize dashboard widgets heights.
|
||||
- Switch the order of the DEFAULT_AUTHENTICATION_CLASSES of DRF. GitLab #400.
|
||||
- Backport document's version list view permission.
|
||||
- Improve code to unbind menu entries.
|
||||
- Renamed the document type permission namespace from "Document setup" to "Document types".
|
||||
- Add support for granting the document type edit, document type delete, and document type view
|
||||
permissions to individual document type instances.
|
||||
- Improved tests by testing for accesses.
|
||||
- Increase the size of the mailing profile label field to 128 characters.
|
||||
|
||||
2.5.2 (2017-07-08)
|
||||
==================
|
||||
- Improve new document creation signal handling.
|
||||
Fixes issue with duplicate scanning at upload.
|
||||
|
||||
2.5.1 (2017-07-08)
|
||||
==================
|
||||
- Update release target due to changes in PyPI.
|
||||
|
||||
2.5 (2017-07-07)
|
||||
================
|
||||
- Add view to download a document's OCR text. GitLab #215
|
||||
- Add user configurable mailer. GitLab #286.
|
||||
- Use Toasts library for screen messages.
|
||||
- Reduce verbosity of some debug messages.
|
||||
- Add new lineart transformation.
|
||||
- Fix SANE source resolution field.
|
||||
- About and Profile menu reorganization.
|
||||
- PDF compatibility improvements.
|
||||
- Office document coversion improvements.
|
||||
- New metadata type setup UI.
|
||||
- Duplicated document scan support.
|
||||
- "Remember me" login support.
|
||||
- Forgotten password restore via email.
|
||||
- Document cache disabling.
|
||||
- Translation improvements.
|
||||
- Image loading improvements.
|
||||
- Lower Javascript memory utilization.
|
||||
- HTML reponsive layout improvements.
|
||||
- Make document deletion a background task.
|
||||
- Unicode handling improvements.
|
||||
- Python3 compatilibyt improvements.
|
||||
- New screen messages using Toastr.
|
||||
|
||||
2.4 (2017-06-23)
|
||||
================
|
||||
- Add Django-mathfilters.
|
||||
- Improve render of documents with no pages.
|
||||
- Add SANE scanner document source.
|
||||
- Added PDF orientation detection. GitLab issue #387.
|
||||
- Fix repeated permission list API URL. GitLab issue #389.
|
||||
- Fix role creation API endpoint not returning id. GitLab issue #390.
|
||||
- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344.
|
||||
- Add support for updating configuration options from environment variables.
|
||||
- Add purgelocks management command. GitLab issue #221.
|
||||
- Fix index rebuilding for multi value first levels. GitLab issue #391.
|
||||
- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting. GitLab issue #217.
|
||||
- Add background task manager app. GitLab issue #132.
|
||||
- Add link to show a document's OCR errors. GitLab issue #291.
|
||||
|
||||
2.3 (2017-06-08)
|
||||
================
|
||||
- Allow for bigger indexing expression templates.
|
||||
- Auto select checkbox when updating metadata values. GitLab issue #371.
|
||||
- Added support for passing the options allow-other and allow-root to the
|
||||
FUSE index mirror. GitLab issue #385
|
||||
- Add support for check for the latest released version of Mayan from the
|
||||
About menu.
|
||||
- Support for rebuilding specific indexes. GitLab issue #372.
|
||||
- Rewrite document indexing code to be faster and use less locking.
|
||||
- Use a predefined file path for the file lock.
|
||||
- Catch documents with not document version when displaying their thumbnails.
|
||||
- Document page navigation fix when using Mayan as a sub URL app.
|
||||
- Add support for indexing on workflow state changes.
|
||||
- Add search model list API endpoint.
|
||||
|
||||
2.2 (2017-04-26)
|
||||
2.2 (2016-XX-XX)
|
||||
================
|
||||
- Remove the installation app (GitLab #301).
|
||||
- Add support for document page search
|
||||
@@ -210,66 +8,17 @@
|
||||
- Improve upgrade instructions
|
||||
- New image caching pipeline
|
||||
- New drop down menus for the documents, folders and tags app as well as for
|
||||
the user links.
|
||||
the user links
|
||||
- New Dashboard view
|
||||
- Moved licenses to their own module in every app
|
||||
- Update project to work with Django 1.10.4.
|
||||
- Tags are alphabetically ordered by label (GitLab #342).
|
||||
- Stop loading theme fonts from the web (GitLab #343).
|
||||
- Add support for attaching multiple tags (GitLab #307).
|
||||
- Integrate the Cabinets app.
|
||||
|
||||
2.1.11 (2017-03-14)
|
||||
===================
|
||||
- Added a quick rename serializer to the document type API serializer.
|
||||
- Added per document type, workflow list API view.
|
||||
- Mayan EDMS was adopted a version 1.1 of the Linux Foundation Developer Certificate of Origin.
|
||||
- Added the detail url of a permission in the permission serializer.
|
||||
- Added endpoints for the ACL app API.
|
||||
- Implemented document workflows transition ACLs. GitLab issue #321.
|
||||
- Add document comments API endpoints. GitHub issue #249.
|
||||
- Add support for overriding the Celery class.
|
||||
- Changed the document upload view in source app to not use the HTTP referer
|
||||
URL blindly, but instead recompose the URL using known view name. Needed
|
||||
when integrating Mayan EDMS into other app via using iframes.
|
||||
- Addes size field to the document version serializer.
|
||||
- Removed the serializer from the deleted document restore API endpoint.
|
||||
- Added support for adding or editing document types to smart links via the
|
||||
API.
|
||||
|
||||
2.1.10 (2017-02-13)
|
||||
===================
|
||||
- Update Makefile to use twine for releases.
|
||||
- Add Makefile target to make test releases.
|
||||
|
||||
2.1.9 (2017-02-13)
|
||||
==================
|
||||
- Update make file to Workaround long standing pypa wheel bug #99
|
||||
|
||||
2.1.8 (2017-02-12)
|
||||
==================
|
||||
- Fixes in the trashed document API endpoints.
|
||||
- Improved tags API PUT and PATCH endpoints.
|
||||
- Bulk document adding when creating and editing tags.
|
||||
- The version of django-mptt is preserved in case mayan-cabinets is installed.
|
||||
- Add Django GPG API endpoints for singing keys.
|
||||
- Add API endpoints for the document states (workflows) app.
|
||||
- Add API endpoints for the messsage of the day (MOTD) app.
|
||||
- Add Smart link API endpoints.
|
||||
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
|
||||
- Close GitLab issue #310 "Metadata's lookup with chinese messages when new document"
|
||||
|
||||
2.1.7 (2017-02-01)
|
||||
==================
|
||||
- Improved user management API endpoints.
|
||||
- Improved permissions API endpoints.
|
||||
- Improvements in the API tests of a few apps.
|
||||
- Addition Content type list API view to the common app.
|
||||
- Add API endpoints to the events app.
|
||||
- Enable the parser and validation fields of the metadata serializer.
|
||||
|
||||
2.1.6 (2016-11-23)
|
||||
==================
|
||||
=================
|
||||
- Fix variable name typo in the rotation transformation class.
|
||||
- Update translations
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
include README.md LICENSE HISTORY.rst mayan/LICENSE
|
||||
recursive-include mayan/apps *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 *.gif *.eot *.svg *.doc *.pdf *.tiff *.sig *.asc *.gpg *.zip
|
||||
include README.rst LICENSE HISTORY.rst
|
||||
recursive-include mayan *.txt *.html *.css *.ico *.png *.jpg *.js *.po *.mo *.ttf *.woff *.woff2 LICENSE
|
||||
global-exclude mayan/settings/local.py mayan/settings/travis/* mayan/media/*
|
||||
|
||||
238
Makefile
238
Makefile
@@ -6,17 +6,9 @@ help:
|
||||
@echo "clean-build - Remove build artifacts."
|
||||
@echo "clean-pyc - Remove Python artifacts."
|
||||
@echo "clean - Remove Python and build artifacts."
|
||||
@echo "generate_setup - Create and updated setup.py"
|
||||
|
||||
@echo "test MODULE=<python module name> - Run tests for a single App, module or test class."
|
||||
@echo "test-all - Run all tests."
|
||||
@echo "test MODULE=<python module name> - Run tests for a single app, module or test class."
|
||||
@echo "test-with-postgres-all - Run all tests against a Postgres database container."
|
||||
@echo "test-postgres MODULE=<python module name> - Run tests for a single app, module or test class against a Postgres database container."
|
||||
@echo "test-with-mysql-all - Run all tests against a MySQL database container."
|
||||
@echo "test-mysql MODULE=<python module name> - Run tests for a single app, module or test class against a MySQL database container."
|
||||
@echo "test-with-oracle-all - Run all tests against a Oracle database container."
|
||||
@echo "test-oracle MODULE=<python module name> - Run tests for a single app, module or test class against a Oracle database container."
|
||||
|
||||
@echo "docs_serve - Run the livehtml documentation generator."
|
||||
|
||||
@echo "translations_make - Refresh all translation files."
|
||||
@@ -31,27 +23,11 @@ help:
|
||||
@echo "sdist - Build the source distribution package."
|
||||
@echo "wheel - Build the wheel distribution package."
|
||||
@echo "release - Package (sdist and wheel) and upload a release."
|
||||
@echo "test_release - Package (sdist and wheel) and upload to the PyPI test server."
|
||||
@echo "release_test_via_docker_ubuntu - Package (sdist and wheel) and upload to the PyPI test server using an Ubuntu Docker builder."
|
||||
@echo "release_test_via_docker_alpine - Package (sdist and wheel) and upload to the PyPI test server using an Alpine Docker builder."
|
||||
@echo "release_via_docker_ubuntu - Package (sdist and wheel) and upload to PyPI using an Ubuntu Docker builder."
|
||||
@echo "release_via_docker_alpine - Package (sdist and wheel) and upload to PyPI using an Alpine Docker builder."
|
||||
@echo "test_sdist_via_docker_ubuntu - Make an sdist packange and test it using an Ubuntu Docker container."
|
||||
@echo "test_wheel_via_docker_ubuntu - Make a wheel package and test it using an Ubuntu Docker container."
|
||||
|
||||
@echo "runserver - Run the development server."
|
||||
@echo "runserver_plus - Run the Django extension's development server."
|
||||
@echo "shell_plus - Run the shell_plus command."
|
||||
|
||||
@echo "docker_services_on - Launch and initialize production-like services using Docker (Postgres and Redis)."
|
||||
@echo "docker_services_off - Stop and delete the Docker production-like services."
|
||||
@echo "docker_services_frontend - Launch a front end instance that uses the production-like services."
|
||||
@echo "docker_services_worker - Launch a worker instance that uses the production-like services."
|
||||
@echo "docker_service_mysql_on - Launch and initialize a MySQL Docker container."
|
||||
@echo "docker_service_mysql_off - Stop and delete the MySQL Docker container."
|
||||
@echo "docker_service_postgres_on - Launch and initialize a PostgreSQL Docker container."
|
||||
@echo "docker_service_postgres_off - Stop and delete the PostgreSQL Docker container."
|
||||
|
||||
@echo "safety_check - Run a package safety check."
|
||||
|
||||
|
||||
@@ -76,63 +52,8 @@ test:
|
||||
./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations
|
||||
|
||||
test-all:
|
||||
./manage.py test --mayan-apps --settings=mayan.settings.testing --nomigrations
|
||||
./manage.py runtests --settings=mayan.settings.testing --nomigrations
|
||||
|
||||
test-launch-postgres:
|
||||
@docker rm -f test-postgres || true
|
||||
@docker volume rm test-postgres || true
|
||||
docker run -d --name test-postgres -p 5432:5432 -v test-postgres:/var/lib/postgresql/data healthcheck/postgres
|
||||
sudo apt-get install -qq libpq-dev
|
||||
pip install psycopg2
|
||||
while ! docker inspect --format='{{json .State.Health}}' test-postgres|grep 'Status":"healthy"'; do sleep 1; done
|
||||
|
||||
test-with-postgres: test-launch-postgres
|
||||
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_postgres --nomigrations
|
||||
@docker rm -f test-postgres || true
|
||||
@docker volume rm test-postgres || true
|
||||
|
||||
test-with-postgres-all: test-launch-postgres
|
||||
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_postgres --nomigrations
|
||||
@docker rm -f test-postgres || true
|
||||
@docker volume rm test-postgres || true
|
||||
|
||||
test-launch-mysql:
|
||||
@docker rm -f test-mysql || true
|
||||
@docker volume rm test-mysql || true
|
||||
docker run -d --name test-mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan -v test-mysql:/var/lib/mysql healthcheck/mysql
|
||||
sudo apt-get install -qq libmysqlclient-dev mysql-client
|
||||
pip install mysql-python
|
||||
while ! docker inspect --format='{{json .State.Health}}' test-mysql|grep 'Status":"healthy"'; do sleep 1; done
|
||||
mysql -h 127.0.0.1 -P 3306 -uroot -e "set global character_set_server=utf8mb4;"
|
||||
|
||||
test-with-mysql: test-launch-mysql
|
||||
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_mysql --nomigrations
|
||||
@docker rm -f test-mysql || true
|
||||
@docker volume rm test-mysql || true
|
||||
|
||||
test-with-mysql-all: test-launch-mysql
|
||||
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_mysql --nomigrations
|
||||
@docker rm -f test-mysql || true
|
||||
@docker volume rm test-mysql || true
|
||||
|
||||
test-launch-oracle:
|
||||
@docker rm -f test-oracle || true
|
||||
@docker volume rm test-oracle || true
|
||||
docker run -d --name test-oracle -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true -v test-oracle:/u01/app/oracle wnameless/oracle-xe-11g
|
||||
# https://gist.github.com/kimus/10012910
|
||||
pip install cx_Oracle
|
||||
while ! nc -z 127.0.0.1 49161; do sleep 1; done
|
||||
sleep 10
|
||||
|
||||
test-with-oracle: test-launch-oracle
|
||||
./manage.py test $(MODULE) --settings=mayan.settings.testing.docker.db_oracle --nomigrations
|
||||
@docker rm -f test-oracle || true
|
||||
@docker volume rm test-oracle || true
|
||||
|
||||
test-with-oracle-all: test-launch-oracle
|
||||
./manage.py test --mayan-apps --settings=mayan.settings.testing.docker.db_oracle --nomigrations
|
||||
@docker rm -f test-oracle || true
|
||||
@docker volume rm test-oracle || true
|
||||
|
||||
# Documentation
|
||||
|
||||
@@ -152,7 +73,7 @@ translations_push:
|
||||
tx push -s
|
||||
|
||||
translations_pull:
|
||||
tx pull -f
|
||||
tx pull
|
||||
|
||||
|
||||
# Requirements
|
||||
@@ -166,175 +87,36 @@ requirements_docs:
|
||||
requirements_testing:
|
||||
pip install -r requirements/testing.txt
|
||||
|
||||
generate_setup:
|
||||
@./generate_setup.py
|
||||
@echo "Complete."
|
||||
|
||||
# Releases
|
||||
|
||||
|
||||
test_release: clean wheel
|
||||
twine upload dist/* -r testpypi
|
||||
@echo "Test with: pip install -i https://testpypi.python.org/pypi mayan-edms"
|
||||
|
||||
release: clean wheel
|
||||
twine upload dist/* -r pypi
|
||||
release: clean
|
||||
python setup.py sdist bdist_wheel upload
|
||||
|
||||
sdist: clean
|
||||
python setup.py sdist
|
||||
ls -l dist
|
||||
|
||||
wheel: clean sdist
|
||||
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
|
||||
wheel: clean
|
||||
python setup.py bdist_wheel
|
||||
ls -l dist
|
||||
|
||||
release_test_via_docker_ubuntu:
|
||||
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
cp -r /host_source/* . && \
|
||||
apt-get update && \
|
||||
apt-get install make python-pip -y && \
|
||||
pip install -r requirements/build.txt && \
|
||||
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||
make test_release"
|
||||
|
||||
release_via_docker_ubuntu:
|
||||
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
cp -r /host_source/* . && \
|
||||
apt-get update && \
|
||||
apt-get install make python-pip -y && \
|
||||
pip install -r requirements/build.txt && \
|
||||
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||
make release"
|
||||
|
||||
release_test_via_docker_alpine:
|
||||
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source alpine /bin/busybox sh -c "\
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
cp -r /host_source/* . && \
|
||||
apk update && \
|
||||
apk add python2 py2-pip make && \
|
||||
pip install -r requirements/build.txt && \
|
||||
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||
make test_release"
|
||||
|
||||
release_via_docker_alpine:
|
||||
docker run --rm --name mayan_release -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source alpine /bin/busybox sh -c "\
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
cp -r /host_source/* . && \
|
||||
apk update && \
|
||||
apk add python2 py2-pip make && \
|
||||
pip install -r requirements/build.txt && \
|
||||
cp -r /host_home/.pypirc ~/.pypirc && \
|
||||
make release"
|
||||
|
||||
test_sdist_via_docker_ubuntu:
|
||||
docker run --rm --name mayan_sdist_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||
cp -r /host_source/* . && \
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
apt-get update && \
|
||||
apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && \
|
||||
pip install -r requirements/development.txt && \
|
||||
make sdist_test_suit \
|
||||
"
|
||||
|
||||
test_wheel_via_docker_ubuntu:
|
||||
docker run --rm --name mayan_wheel_test -v $(HOME):/host_home:ro -v `pwd`:/host_source -w /source ubuntu:16.04 /bin/bash -c "\
|
||||
cp -r /host_source/* . && \
|
||||
echo "LC_ALL=\"en_US.UTF-8\"" >> /etc/default/locale && \
|
||||
locale-gen en_US.UTF-8 && \
|
||||
update-locale LANG=en_US.UTF-8 && \
|
||||
export LC_ALL=en_US.UTF-8 && \
|
||||
apt-get update && \
|
||||
apt-get install make python-pip libreoffice tesseract-ocr tesseract-ocr-deu poppler-utils -y && \
|
||||
pip install -r requirements/development.txt && \
|
||||
make wheel_test_suit \
|
||||
"
|
||||
|
||||
sdist_test_suit: sdist
|
||||
rm -f -R _virtualenv
|
||||
virtualenv _virtualenv
|
||||
sh -c '\
|
||||
. _virtualenv/bin/activate; \
|
||||
pip install `ls dist/*.gz`; \
|
||||
_virtualenv/bin/mayan-edms.py initialsetup; \
|
||||
pip install mock==2.0.0; \
|
||||
_virtualenv/bin/mayan-edms.py test --mayan-apps \
|
||||
'
|
||||
|
||||
wheel_test_suit: wheel
|
||||
rm -f -R _virtualenv
|
||||
virtualenv _virtualenv
|
||||
sh -c '\
|
||||
. _virtualenv/bin/activate; \
|
||||
pip install `ls dist/*.whl`; \
|
||||
_virtualenv/bin/mayan-edms.py initialsetup; \
|
||||
pip install mock==2.0.0; \
|
||||
_virtualenv/bin/mayan-edms.py test --mayan-apps \
|
||||
'
|
||||
|
||||
# Dev server
|
||||
|
||||
runserver:
|
||||
./manage.py runserver --settings=mayan.settings.development
|
||||
./manage.py runserver
|
||||
|
||||
runserver_plus:
|
||||
$(BROWSER) http://127.0.0.1:8000
|
||||
./manage.py runserver_plus --settings=mayan.settings.development
|
||||
|
||||
shell_plus:
|
||||
./manage.py shell_plus --settings=mayan.settings.development
|
||||
|
||||
docker_services_on:
|
||||
docker run -d --name redis -p 6379:6379 redis
|
||||
docker run -d --name postgres -p 5432:5432 postgres
|
||||
while ! nc -z 127.0.0.1 6379; do sleep 1; done
|
||||
while ! nc -z 127.0.0.1 5432; do sleep 1; done
|
||||
sleep 2
|
||||
./manage.py initialsetup --settings=mayan.settings.staging.docker
|
||||
|
||||
docker_services_off:
|
||||
docker stop postgres redis
|
||||
docker rm postgres redis
|
||||
|
||||
docker_services_frontend:
|
||||
./manage.py runserver --settings=mayan.settings.staging.docker
|
||||
|
||||
docker_services_worker:
|
||||
./manage.py celery worker --settings=mayan.settings.staging.docker -B -l INFO -O fair
|
||||
|
||||
docker_service_mysql_on:
|
||||
docker run -d --name mysql -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=True -e MYSQL_DATABASE=mayan_edms mysql
|
||||
while ! nc -z 127.0.0.1 3306; do sleep 1; done
|
||||
|
||||
docker_service_mysql_off:
|
||||
docker stop mysql
|
||||
docker rm mysql
|
||||
|
||||
docker_service_postgres_on:
|
||||
docker run -d --name postgres -p 5432:5432 postgres
|
||||
while ! nc -z 127.0.0.1 5432; do sleep 1; done
|
||||
|
||||
docker_service_postgres_off:
|
||||
docker stop postgres
|
||||
docker rm postgres
|
||||
|
||||
|
||||
# Security
|
||||
|
||||
safety_check:
|
||||
safety check
|
||||
|
||||
|
||||
72
README.md
72
README.md
@@ -1,72 +0,0 @@
|
||||
[![pypi][pypi]][pypi-url]
|
||||
[![builds][builds]][builds-url]
|
||||
[![coverage][cover]][cover-url]
|
||||
![python][python]
|
||||
![license][license]
|
||||
|
||||
[pypi]: http://img.shields.io/pypi/v/mayan-edms.svg
|
||||
[pypi-url]: http://badge.fury.io/py/mayan-edms
|
||||
|
||||
[builds]: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||
[builds-url]: https://gitlab.com/mayan-edms/mayan-edms/pipelines
|
||||
|
||||
[cover]: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||
[cover-url]: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
||||
|
||||
[python]: https://img.shields.io/pypi/pyversions/mayan-edms.svg
|
||||
[python-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||
|
||||
[license]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||
[license-url]: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="http://www.mayan-edms.com">
|
||||
<img width="200" heigth="200" src="https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png">
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<p>
|
||||
Mayan EDMS is a document management system. Its main purpose is to store,
|
||||
introspect, and categorize files, with a strong emphasis on preserving the
|
||||
contextual and business information of documents. It can also OCR, preview,
|
||||
label, sign, send, and receive thoses files. Other features of interest
|
||||
are its workflow system, role based access control, and REST API.
|
||||
<p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif">
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<h2 align="center">Installation</h2>
|
||||
|
||||
The easiest way to use Mayan EDMS is by using the official
|
||||
[Docker](https://www.docker.com/) image. Make sure Docker is properly installed
|
||||
and working before attempting to install Mayan EDMS.
|
||||
|
||||
For the complete set of installation, configuration, upgrade, and backup
|
||||
instructions visit the Mayan EDMS Docker Hub page at:
|
||||
https://hub.docker.com/r/mayanedms/mayanedms/
|
||||
|
||||
<h2 align="center">Hardware requirements</h2>
|
||||
|
||||
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||
|
||||
<h2 align="center">Important links</h2>
|
||||
|
||||
|
||||
- [Homepage](http://www.mayan-edms.com)
|
||||
- [Videos](https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw)
|
||||
- [Documentation](http://mayan.readthedocs.io/en/stable/)
|
||||
- [Paid support](http://www.mayan-edms.com/providers/)
|
||||
- [Roadmap](https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap)
|
||||
- [Contributing](https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md)
|
||||
- [Community forum](https://groups.google.com/forum/#!forum/mayan-edms)
|
||||
- [Community forum archive](http://mayan-edms.1003.x6.nabble.com/)
|
||||
- [Source code, issues, bugs](https://gitlab.com/mayan-edms/mayan-edms)
|
||||
- [Plug-ins, other related projects](https://gitlab.com/mayan-edms/)
|
||||
- [Translations](https://www.transifex.com/rosarior/mayan-edms/)
|
||||
|
||||
113
README.rst
113
README.rst
@@ -1,58 +1,65 @@
|
||||
|pypi| |builds| |coverage| |python| |license|
|
||||
|PyPI badge| |Build Status| |Coverage badge| |Documentation| |License badge| |Python version|
|
||||
|
||||
|Logo|
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
Free Open Source Electronic Document Management System.
|
||||
|
||||
`Website`_
|
||||
|
||||
`Video demostration`_
|
||||
|
||||
`Documentation`_
|
||||
|
||||
`Translations`_
|
||||
|
||||
`Mailing list (via Google Groups)`_
|
||||
|
||||
|Animation|
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
This project is open sourced under `Apache 2.0 License`_.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
To install Mayan EDMS, simply do:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
(venv) $ pip install mayan-edms
|
||||
(venv) $ mayan-edms.py initialsetup
|
||||
(venv) $ mayan-edms.py runserver
|
||||
|
||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
||||
account.
|
||||
|
||||
|
||||
.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
|
||||
:align: center
|
||||
:width: 200
|
||||
:height: 200
|
||||
.. _Website: http://www.mayan-edms.com
|
||||
.. _Video demostration: http://bit.ly/pADNXv
|
||||
.. _Documentation: http://readthedocs.org/docs/mayan/en/latest/
|
||||
.. _Translations: https://www.transifex.com/projects/p/mayan-edms/
|
||||
.. _Mailing list (via Google Groups): http://groups.google.com/group/mayan-edms
|
||||
.. _Apache 2.0 License: https://www.apache.org/licenses/LICENSE-2.0.txt
|
||||
|
||||
Mayan EDMS is a document management system. Its main purpose is to store,
|
||||
introspect, and categorize files, with a strong emphasis on preserving the
|
||||
contextual and business information of documents. It can also OCR, preview,
|
||||
label, sign, send, and receive thoses files. Other features of interest
|
||||
are its workflow system, role based access control, and REST API.
|
||||
|
||||
.. image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif
|
||||
:align: center
|
||||
|
||||
|
||||
The easiest way to use Mayan EDMS is by using the official Docker_ image.
|
||||
Make sure Docker is properly installed and working before attempting to install
|
||||
Mayan EDMS.
|
||||
|
||||
For the complete set of installation, configuration, upgrade, and backup
|
||||
instructions visit the Mayan EDMS Docker Hub page at:
|
||||
https://hub.docker.com/r/mayanedms/mayanedms/
|
||||
|
||||
.. _Docker: https://www.docker.com/
|
||||
|
||||
Hardware requirements
|
||||
|
||||
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||
|
||||
|
||||
Important links
|
||||
|
||||
- `Homepage <http://www.mayan-edms.com>`__
|
||||
- `Videos <https://www.youtube.com/channel/UCJOOXHP1MJ9lVA7d8ZTlHPw>`__
|
||||
- `Documentation <http://mayan.readthedocs.io/en/stable/>`__
|
||||
- `Paid support <http://www.mayan-edms.com/providers/>`__
|
||||
- `Roadmap <https://gitlab.com/mayan-edms/mayan-edms/wikis/roadmap>`__
|
||||
- `Contributing <https://gitlab.com/mayan-edms/mayan-edms/blob/master/CONTRIBUTING.md>`__
|
||||
- `Community forum <https://groups.google.com/forum/#!forum/mayan-edms>`__
|
||||
- `Community forum archive <http://mayan-edms.1003.x6.nabble.com/>`__
|
||||
- `Source code, issues, bugs <https://gitlab.com/mayan-edms/mayan-edms>`__
|
||||
- `Plug-ins, other related projects <https://gitlab.com/mayan-edms/>`__
|
||||
- `Translations <https://www.transifex.com/rosarior/mayan-edms/>`__
|
||||
|
||||
|
||||
|
||||
.. |pypi| image:: http://img.shields.io/pypi/v/mayan-edms.svg
|
||||
.. |Build Status| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||
:target: https://gitlab.com/mayan-edms/mayan-edms/commits/master
|
||||
.. |Logo| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/mayan_logo.png
|
||||
.. |Animation| image:: https://gitlab.com/mayan-edms/mayan-edms/raw/master/docs/_static/overview.gif
|
||||
.. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat
|
||||
:target: http://badge.fury.io/py/mayan-edms
|
||||
.. |builds| image:: https://gitlab.com/mayan-edms/mayan-edms/badges/master/build.svg
|
||||
:target: https://gitlab.com/mayan-edms/mayan-edms/pipelines
|
||||
.. |coverage| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||
.. |License badge| image:: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||
.. |Analytics| image:: https://ga-beacon.appspot.com/UA-52965619-2/mayan-edms/readme?pixel
|
||||
.. |Coverage badge| image:: https://codecov.io/gitlab/mayan-edms/mayan-edms/coverage.svg?branch=master
|
||||
:target: https://codecov.io/gitlab/mayan-edms/mayan-edms?branch=master
|
||||
.. |python| image:: https://img.shields.io/pypi/pyversions/mayan-edms.svg
|
||||
.. |license| image:: https://img.shields.io/pypi/l/mayan-edms.svg?style=flat
|
||||
.. |Documentation| image:: https://readthedocs.org/projects/mayan/badge/?version=latest
|
||||
:target: http://mayan.readthedocs.io/en/latest
|
||||
.. |Python version| images:: https://img.shields.io/pypi/pyversions/mayan-edms.svg
|
||||
|
||||
|Analytics|
|
||||
|
||||
4
contrib/scripts/make_dists.sh
Executable file
4
contrib/scripts/make_dists.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
python setup.py sdist
|
||||
pip wheel --no-index --no-deps --wheel-dir dist dist/*.tar.gz
|
||||
@@ -4,21 +4,20 @@ import optparse
|
||||
|
||||
import sh
|
||||
|
||||
|
||||
APP_LIST = (
|
||||
'acls', 'appearance', 'authentication', 'cabinets', 'checkouts', 'common',
|
||||
'acls', 'appearance', 'authentication', 'checkouts', 'common',
|
||||
'converter', 'django_gpg', 'document_comments', 'document_indexing',
|
||||
'document_parsing', 'document_signatures', 'document_states', 'documents',
|
||||
'dynamic_search', 'events', 'linking', 'lock_manager', 'mayan_statistics',
|
||||
'mailer', 'metadata', 'mirroring', 'motd', 'navigation', 'ocr',
|
||||
'permissions', 'rest_api', 'smart_settings', 'sources', 'storage', 'tags',
|
||||
'task_manager', 'user_management'
|
||||
'document_signatures', 'document_states', 'documents', 'dynamic_search',
|
||||
'events', 'folders', 'installation', 'linking', 'lock_manager', 'mailer',
|
||||
'metadata', 'mirroring', 'motd', 'navigation', 'ocr', 'permissions',
|
||||
'rest_api', 'smart_settings', 'sources', 'statistics', 'storage', 'tags',
|
||||
'user_management'
|
||||
)
|
||||
|
||||
LANGUAGE_LIST = (
|
||||
'ar', 'bg', 'bs_BA', 'da', 'de_DE', 'en', 'es', 'fa', 'fr', 'hu', 'id',
|
||||
'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'tr_TR',
|
||||
'vi_VN', 'zh_CN',
|
||||
'it', 'nl_NL', 'pl', 'pt', 'pt_BR', 'ro_RO', 'ru', 'sl_SI', 'vi_VN',
|
||||
'zh_CN',
|
||||
)
|
||||
|
||||
makemessages = sh.Command('django-admin.py')
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import ldap
|
||||
from django_auth_ldap.config import LDAPSearch
|
||||
|
||||
from .base import *
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
|
||||
SECRET_KEY = '<your secret key>'
|
||||
|
||||
# makes sure this works in Active Directory
|
||||
ldap.set_option(ldap.OPT_REFERRALS, 0)
|
||||
|
||||
# This is the default, but I like to be explicit.
|
||||
AUTH_LDAP_ALWAYS_UPDATE_USER = True
|
||||
|
||||
LDAP_USER_AUTO_CREATION = "False"
|
||||
LDAP_URL = "ldap://<your ldap server IP>:389/"
|
||||
LDAP_BASE_DN = "dc=paramatrix,dc=co,dc=in"
|
||||
LDAP_ADDITIONAL_USER_DN = "dc=people"
|
||||
LDAP_ADMIN_DN = ""
|
||||
LDAP_PASSWORD = ""
|
||||
|
||||
AUTH_LDAP_SERVER_URI = LDAP_URL
|
||||
AUTH_LDAP_BIND_DN = LDAP_ADMIN_DN
|
||||
AUTH_LDAP_BIND_PASSWORD = LDAP_PASSWORD
|
||||
|
||||
|
||||
AUTH_LDAP_USER_SEARCH = LDAPSearch('%s,%s'%(LDAP_ADDITIONAL_USER_DN, LDAP_BASE_DN), ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
|
||||
AUTH_LDAP_USER_ATTR_MAP = {
|
||||
"first_name": "cn",
|
||||
"last_name": "sn",
|
||||
"email": "mail"
|
||||
}
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'django_auth_ldap.backend.LDAPBackend',
|
||||
'mayan.settings.settings_local.EmailOrUsernameModelBackend',
|
||||
)
|
||||
|
||||
class EmailOrUsernameModelBackend(object):
|
||||
"""
|
||||
This is a ModelBacked that allows authentication with either a username or an email address.
|
||||
|
||||
"""
|
||||
def authenticate(self, username=None, password=None):
|
||||
if '@' in username:
|
||||
kwargs = {'email': username}
|
||||
else:
|
||||
kwargs = {'username': username}
|
||||
try:
|
||||
user = get_user_model().objects.get(**kwargs)
|
||||
if user.check_password(password):
|
||||
return user
|
||||
except User.DoesNotExist:
|
||||
return None
|
||||
|
||||
def get_user(self, username):
|
||||
try:
|
||||
return get_user_model().objects.get(pk=username)
|
||||
except get_user_model().DoesNotExist:
|
||||
return None
|
||||
14
docs/_templates/donate.html
vendored
14
docs/_templates/donate.html
vendored
@@ -1,16 +1,4 @@
|
||||
<h3>Support</h3>
|
||||
<p>
|
||||
<a href='http://www.mayan-edms.com/providers/'>Consulting and support plans are available, click here</a>.
|
||||
Consulting, support, customization, rebranding, and plug-in development are available. Email for information to: <a href='mailto:info@mayan-edms.com'>info@mayan-edms.com</a>
|
||||
</p>
|
||||
<hr />
|
||||
<p>
|
||||
Or consider supporting Mayan EDMS by contributing to its development. (US tax payers, please note this contribution is not tax deductible).
|
||||
</p>
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
||||
<input type="hidden" name="cmd" value="_s-xclick">
|
||||
<input type="hidden" name="hosted_button_id" value="3PXN336XFXQNN">
|
||||
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
||||
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1" style="display: none !important;">
|
||||
</form>
|
||||
|
||||
<hr />
|
||||
|
||||
@@ -1,10 +1,26 @@
|
||||
Welcome to Mayan EDMS!
|
||||
======================
|
||||
|
||||
Mayan EDMS is a `Free Open Source`_ `Electronic Document Management System`_,
|
||||
coded in the Python language using the Django_ web application framework and
|
||||
released under the `Apache 2.0 License`_. It provides an electronic vault or
|
||||
repository for electronic documents.
|
||||
Mayan EDMS is a `Free Open Source`_ `Electronic Document Management System`_, coded in
|
||||
the Python language using the Django_ web application framework and released
|
||||
under the `Apache 2.0 License`_. It provides an electronic vault or repository for electronic documents.
|
||||
|
||||
The easiest way to use Mayan EDMS is by using a Debian based Linux distribution
|
||||
and install it from PyPI with the following commands:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ sudo apt-get install libjpeg-dev libmagic1 libpng-dev \
|
||||
libreoffice libtiff-dev gcc ghostscript gnupg python-dev \
|
||||
python-virtualenv tesseract-ocr poppler-utils -y
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
(venv) pip install mayan-edms
|
||||
(venv) mayan-edms.py initialsetup
|
||||
(venv) mayan-edms.py runserver
|
||||
|
||||
Point your browser to 127.0.0.1:8000 and use the automatically created admin
|
||||
account.
|
||||
|
||||
.. image:: /_static/overview.gif
|
||||
:alt: Overview
|
||||
@@ -12,9 +28,9 @@ repository for electronic documents.
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
Installation <topics/installation>
|
||||
Features <topics/features>
|
||||
Advanced deployment <topics/deploying>
|
||||
Installation <topics/installation>
|
||||
Deploying <topics/deploying>
|
||||
Release notes and upgrading <releases/index>
|
||||
Concepts <topics/index>
|
||||
Development <topics/development>
|
||||
@@ -26,7 +42,6 @@ repository for electronic documents.
|
||||
FAQ <topics/faq>
|
||||
Contact <topics/contact>
|
||||
|
||||
.. _Docker: https://www.docker.com/
|
||||
.. _Django: http://www.djangoproject.com/
|
||||
.. _Free Open Source: http://en.wikipedia.org/wiki/Open_source
|
||||
.. _Electronic Document Management System: https://en.wikipedia.org/wiki/Document_management_system
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
================================
|
||||
Mayan EDMS v2.1.10 release notes
|
||||
================================
|
||||
|
||||
Released: February 13, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a micro release equal to the previews version from the user's point of view.
|
||||
The version number was increase to workaround some issues with the Python
|
||||
Package Index not allowing re-uploads.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
|
||||
- Update Makefile to use twine for releases.
|
||||
- Add Makefile target to make test releases.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,94 +0,0 @@
|
||||
================================
|
||||
Mayan EDMS v2.1.11 release notes
|
||||
================================
|
||||
|
||||
Released: March 14, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||
of this micro release was REST API improvement.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
|
||||
- Added a quick rename serializer to the document type API serializer.
|
||||
- Added per document type, workflow list API view. The URL for this endpoint is
|
||||
GET /api/document_states/document_type/{pk}/workflows/
|
||||
- Added Developer Certificate of Origin. Mayan EDMS was adopted a version 1.1 of
|
||||
the Linux Foundation Developer Certificate of Origin. All commits must be
|
||||
signed (`git commit -s`) in order to be merged.
|
||||
- Added the detail url of a permission in the permission serializer.
|
||||
- Added endpoints for the ACL app API.
|
||||
- Implemented document workflows transition ACLs. GitLab issue #321.
|
||||
- Add document comments API endpoints. GitHub issue #249.
|
||||
- Add support for overriding the Celery class. The setting is named
|
||||
MAYAN_CELERY_CLASS and expects a dotted python path to the class to use.
|
||||
- Changed the document upload view in source app to not use the HTTP referer
|
||||
URL blindly, but instead recompose the URL using known view name. Needed
|
||||
when integrating Mayan EDMS into other app via using iframes.
|
||||
- Addes size field to the document version serializer.
|
||||
- Removed the serializer from the deleted document restore API endpoint
|
||||
it doesn't need a serializer being just an action POST endpoint.
|
||||
- Added support for adding or editing document types to smart links via the
|
||||
API.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `Github issue #249 <https://github.com/mayan-edms/mayan-edms/issues/249>`_ Add document comments API [$50 US]
|
||||
* `GitLab issue #321 <https://gitlab.com/mayan-edms/mayan-edms/issues/321>`_ Transition ACLS
|
||||
* `GitLab issue #357 <https://gitlab.com/mayan-edms/mayan-edms/issues/357>`_ It should be possible to retrieve all workflows for a given DocumentType from the API
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,102 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.1.7 release notes
|
||||
===============================
|
||||
|
||||
Released: February 2, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||
of this micro release was REST API improvement.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
|
||||
- Improved user management API endpoints (initial work by @lokeshmanmode):
|
||||
|
||||
- Improved user creation API endpoint to allow specifying the group
|
||||
membership.
|
||||
- Improved user editing API endpoint to allow specifying the group
|
||||
membership.
|
||||
|
||||
- Improved permissions API endpoints (initial work by @lokeshmanmode):
|
||||
|
||||
- Add permission list API endpoint. This API endpoint lists all possible
|
||||
permissions in the system.
|
||||
- Improved role creation API endpoint to allow specifying the role's group
|
||||
membership and role's permissions.
|
||||
- Improved role editing API endpoint to allow specifying the role's group
|
||||
membership and role's permissions.
|
||||
|
||||
- Improvements in the API tests of a few apps.
|
||||
- Add content type list API view to the common app. Content type is required
|
||||
when querying the events of an object, this view show list of content types
|
||||
available.
|
||||
- Add event type list api view. This API view shows all the possible events
|
||||
that are registered in the system.
|
||||
- Add event list API view. This view shows all the events that have taken
|
||||
place in the system.
|
||||
- Add object event list API view. This view show all the events for a specific
|
||||
object (document, etc). The content type of the object whose events are being
|
||||
requested must be specified. The list of available content types is provided
|
||||
now by the common app API.
|
||||
- The parser and validation fields of the metadata type model have been enable
|
||||
in the metadata type API serializer.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,83 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.1.8 release notes
|
||||
===============================
|
||||
|
||||
Released: February 12, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug-fix release and all users are encouraged to upgrade. The focus
|
||||
of this micro release was REST API improvement.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
|
||||
- Fixes in the trashed document API endpoints.
|
||||
- Improved tags API PUT and PATCH endpoints.
|
||||
- Bulk document adding when creating and editing tags.
|
||||
- The version of django-mptt is preserved in case mayan-cabinets is installed.
|
||||
- Add Django GPG API endpoints for singing keys.
|
||||
- Add API endpoints for the document states app.
|
||||
- Add API endpoints for the messsage of the day (MOTD) app.
|
||||
- Add Smart link API endpoints.
|
||||
- Add writable versions of the Document and Document Type serializers (GitLab issues #348 and #349).
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
|
||||
* `GitLab issue #348 <https://gitlab.com/mayan-edms/mayan-edms/issues/348>`_ REST API: Document version comments are not getting updated
|
||||
* `GitLab issue #349 <https://gitlab.com/mayan-edms/mayan-edms/issues/349>`_ REST API: Document Label, Description are not able to update
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,74 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.1.9 release notes
|
||||
===============================
|
||||
|
||||
Released: February 13, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a micro release equal to the previews version from the user's point of view.
|
||||
The version number was increase to workaround some issues with the Python
|
||||
Package Index not allowing re-uploads.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
|
||||
- Update make file to Workaround long standing pypa wheel bug #99
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -2,190 +2,35 @@
|
||||
Mayan EDMS v2.2 release notes
|
||||
=============================
|
||||
|
||||
Released: April 26, 2017
|
||||
Released: XX, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
API changes
|
||||
-----------
|
||||
Refactor of the metadata API URLs to use the resource/sub resource paradigm.
|
||||
|
||||
Before:
|
||||
|
||||
/api/metadata/metadata_types/
|
||||
/api/metadata/metadata_types/{pk}/
|
||||
/api/metadata/document/metadata/{pk}/
|
||||
/api/metadata/document/{pk}/metadata/
|
||||
/api/metadata/document_type/{document_type_pk}/metadata_types/optional/
|
||||
/api/metadata/document_type/{document_type_pk}/metadata_types/required/
|
||||
|
||||
After:
|
||||
|
||||
/api/metadata/metadata_types/
|
||||
/api/metadata/metadata_types/{metadata_type_pk}/
|
||||
/api/metadata/document_types/{document_type_pk}/metadata_types/
|
||||
/api/metadata/document_types/{document_type_pk}/metadata_types/{metadata_type_pk}/
|
||||
/api/metadata/documents/{document_pk}/metadata/
|
||||
/api/metadata/documents/{document_pk}/metadata/{metadata_pk}/
|
||||
|
||||
|
||||
Document API URLs updated to use the resource/sub resource paradigm.
|
||||
Before:
|
||||
|
||||
/api/documents/document_version<pk>
|
||||
/api/documents/document_pages<pk>
|
||||
|
||||
After:
|
||||
/api/documents/<pk>/version/<version_pk>
|
||||
/api/documents/<pk>/version/<version_pk>/pages/<page_pk>
|
||||
|
||||
Fields that reference a resource by URL now have the suffix '_url' to differentiate
|
||||
then from fields include the resource.
|
||||
|
||||
Before:
|
||||
|
||||
'document': '/api/documents/10'
|
||||
|
||||
After:
|
||||
|
||||
'document_url': '/api/documents/10'
|
||||
|
||||
Removal of the document version revert API endpoint. To revert a document to a
|
||||
previous version using the API, use the DELETE verb to delete the most recent
|
||||
document version to be discarded.
|
||||
|
||||
Pages data is no longer included as part of the version data. Instead a link to
|
||||
the document version's pages has been added by the name 'pages_url'. This
|
||||
resolved to '/api/documents/<pk>/pages/<page_pk>/pages'.
|
||||
|
||||
- New API endpoints (initial work by @lokeshmanmode):
|
||||
|
||||
- API endpoint to change an user's groups subscription.
|
||||
- API endpoint that list all available permissions types.
|
||||
- API endpoint to view or change a role's groups.
|
||||
- API endpoint to view or change a role's permissions.
|
||||
|
||||
Code cleanups
|
||||
-------------
|
||||
As with every release time was dedicated to improve the organization, size, and
|
||||
readability of code. To this end the licenses of each app were moved to their
|
||||
own module in every app, called licenses.py. As part of the code cleanup the
|
||||
seldom used app called 'installation' which tracked runtime Python packages
|
||||
installed alongside Mayan EDMS for debugging purposes has been removed. The
|
||||
dependency on django-filetransfer has been removed by using
|
||||
django-downloadviews which allows the creation of class based download views.
|
||||
|
||||
Performance
|
||||
-----------
|
||||
The document language list has been moved from the document model to the
|
||||
document form. This change speeds up loading time, document properties views
|
||||
and API documentation views. This version includes the new image caching
|
||||
pipeline which stores transformed (rotated, scaled, etc) versions of the
|
||||
document's images resulting in an overall display loading speed up. The fonts
|
||||
used are now loaded from Mayan EDMS itself and not from the web. This change
|
||||
also allow Mayan EDMS to work in a completely off-line manner.
|
||||
|
||||
Searching
|
||||
---------
|
||||
Support for searching pages as well as documents has been added. This
|
||||
functionality has been exposed in the API too.
|
||||
|
||||
Security
|
||||
--------
|
||||
This release enables the password validation for the user password validation
|
||||
support provided by Django. This change allows administrator to set password
|
||||
policies limiting the minimum amount of characters needed for example. For
|
||||
more information on how to configure the password validation feature refer
|
||||
to Django's documentation at: https://docs.djangoproject.com/en/1.11/topics/auth/passwords/#enabling-password-validation
|
||||
|
||||
Sources
|
||||
-------
|
||||
To help test the interval sources (POP3 Email, IMAP Email, Watch folders) a
|
||||
"Check now" button was added that allows users to trigger the source's
|
||||
document fetching code instantly. Previously users had to wait until the next
|
||||
scheduled interval to verify if their source's settings were correct.
|
||||
|
||||
Testing
|
||||
-------
|
||||
The testing process has been simplified by adding a new option '--mayan-apps'
|
||||
to the test runner that automatically tests all Mayan EDMS apps that report to
|
||||
include tests. The app flag that indicates when an app has test was changed
|
||||
from 'test' to the more explicit 'has_test'. The packaging manifest now
|
||||
includes test files, this means that tests can now be executed in production.
|
||||
The total number of tests was raised to 359 and the total coverage increased
|
||||
to 81%.
|
||||
|
||||
A custom test runner replacing the previous custom management command
|
||||
called `runtests`. Testing for orphaned temporary files and orphaned file
|
||||
handles is now optional and controlled by the COMMON_TEST_FILE_HANDLES and
|
||||
COMMON_TEST_FILE_HANDLES settings.
|
||||
|
||||
User interface
|
||||
--------------
|
||||
To avoid warping on long full names or usernames, the user's full name or
|
||||
username is no longer displayed in the main menu. Instead the word "Profile"
|
||||
is displayed and the users's full name or username is displayed when the
|
||||
"Profile" icon is clicked. Drop down menus support has been added and enabled
|
||||
for several apps like documents, folders, and tags. This change make navigation
|
||||
much faster and required less mouse travel.
|
||||
|
||||
Support was added for a dashboard widgets and several default widgets are
|
||||
included and enabled.
|
||||
|
||||
A view to clone a document page transformation to other pages has been added.
|
||||
A document page transformation navigation bug has been fixed. To aid visual
|
||||
lookup, tags are now alphabetically ordered by label.
|
||||
|
||||
A new workflow view that lists documents currently executing a workflow and
|
||||
documents by their specific current workflow state has been added to the
|
||||
main menu.
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Cabinets app is now integrated as a core app.
|
||||
- Now that the Cabinets app is included, the Folders app has been disabled
|
||||
by default. To enable the Folders apps add the following line to your
|
||||
settings/local.py file::
|
||||
|
||||
INSTALLED_APPS += ('folders',)
|
||||
|
||||
- Fix height calculation in resize transformation.
|
||||
- Improve upgrade instructions.
|
||||
- Update project to work with Django 1.10.
|
||||
- Remove the installation app
|
||||
- Add support for page search
|
||||
- Remove recent searches feature
|
||||
- Remove dependency on the django-filetransfer library
|
||||
- Fix height calculation in resize transformation
|
||||
- Improve upgrade instructions
|
||||
- New image caching pipeline
|
||||
- New drop down menus for the documents, folders and tags app as well as for
|
||||
the user links
|
||||
- Dashboard
|
||||
- Moved licenses to their own module in every app
|
||||
- Update project to work with Django 1.10.4
|
||||
- Tags are alphabetically ordered by label
|
||||
- Stop loading theme fonts from the web
|
||||
- Add support for attaching multiple tags to single or multiple documents.
|
||||
- Refactor the workflow for removing tags from single and multiple documents.
|
||||
- Move new version creation blocking from the documents app to the checkouts app.
|
||||
- DEBUG now defaults to False.
|
||||
- Production settings don't override the DEBUG variable. DEBUG can be set to True
|
||||
on production install to debug errors live.
|
||||
- Refactor add document to folder view to allow adding a documents to multiple folders at the same time.
|
||||
- Refactor the remove document from folder view to allow removing documents from multiple folders at the same time.
|
||||
- Refactor the document mailing views and add support for sending multiple documents via email at the same time.
|
||||
- Refactor the document metadata views and add support for adding multiple metadata types to a document at the same time.
|
||||
- Addition of a new OCR backend using PyOCR. This backend tries first to do OCR
|
||||
using libtesseract. If libtesseract is not available the backend defaults to
|
||||
calling the Tesseract executable.
|
||||
- Make the lock_manager.backends.file_lock.FileLock the new default locking backend.
|
||||
- New transformations added:
|
||||
|
||||
- Rotate 90 degrees
|
||||
- Rotate 180 degrees
|
||||
- Rotate 270 degrees
|
||||
- Mirror (horizontal)
|
||||
- Flip (vertical)
|
||||
- Gaussian blur
|
||||
- Unsharp masking
|
||||
|
||||
- Add tool to launch all workflows. GitLab issue #355
|
||||
- Move new version creation blocking from the documents app to the checkouts app
|
||||
|
||||
Removals
|
||||
--------
|
||||
- Removal of the OCR_TESSERACT_PATH configuration setting.
|
||||
- Removal of the Tesseract OCR backend. Replaced with a PyOCR backend.
|
||||
- Remove usage of pytesseract Python library.
|
||||
- Installation app.
|
||||
- Recent searches feature.
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
@@ -214,13 +59,13 @@ Manually upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Remove deprecated requirements::
|
||||
|
||||
$ pip uninstall -y -r removals.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Remove deprecated requirements::
|
||||
|
||||
$ pip uninstall -y -r removals.txt 2> /dev/null
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
@@ -240,19 +85,12 @@ Backward incompatible changes
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #185 <https://gitlab.com/mayan-edms/mayan-edms/issues/185>`_ Add support for nested menus
|
||||
* `GitLab issue #285 <https://gitlab.com/mayan-edms/mayan-edms/issues/285>`_ Dashboard widgets
|
||||
* `GitLab issue #294 <https://gitlab.com/mayan-edms/mayan-edms/issues/294>`_ Move new version creation blocking from the documents app to the checkouts app
|
||||
* `GitLab issue #301 <https://gitlab.com/mayan-edms/mayan-edms/issues/301>`_ Remove the installation app
|
||||
* `GitLab issue #303 <https://gitlab.com/mayan-edms/mayan-edms/issues/303>`_ Update urlpatterns in urls.py files to be a list of django.conf.urls.url() instances instead.
|
||||
* `GitLab issue #304 <https://gitlab.com/mayan-edms/mayan-edms/issues/304>`_ Remove string view arguments of url() in urls.py files.
|
||||
* `GitLab issue #307 <https://gitlab.com/mayan-edms/mayan-edms/issues/307>`_ Enter multiple Tags at once
|
||||
* `GitLab issue #310 <https://gitlab.com/mayan-edms/mayan-edms/issues/310>`_ Metadata's lookup with chinese messages when new document
|
||||
* `GitLab issue #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
|
||||
* `GitLab issue #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
|
||||
* `GitLab issue #328 <https://gitlab.com/mayan-edms/mayan-edms/issues/328>`_ Upgrade Warning/Error during performupgrade (v2.1.3 to v2.1.4)
|
||||
* `GitLab issue #342 <https://gitlab.com/mayan-edms/mayan-edms/issues/342>`_ Tags should be of unordered / unsorted data type
|
||||
* `GitLab issue #343 <https://gitlab.com/mayan-edms/mayan-edms/issues/343>`_ Bootstrap's dependency on fonts.googleapis.com causes Mayan EDMS web interface load slowly if public internet is unreachable
|
||||
* `GitLab issue #355 <https://gitlab.com/mayan-edms/mayan-edms/issues/355>`_ Workflow changes only on new added documents
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.3 release notes
|
||||
=============================
|
||||
|
||||
Released: June 08, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug-fix and minor feature release and all users are encouraged to
|
||||
upgrade.
|
||||
|
||||
Changes
|
||||
-------------
|
||||
- Index node expression template field changed from a 128 character field to an
|
||||
unlimited size text field to allow for complex indexing expressions.
|
||||
- When updating the metadata of a document, any input in the value form field
|
||||
will select the adjacent checkbox.
|
||||
- Support for passing the FUSE option `allow-other` and `allow-root` was added
|
||||
to the index mirroring management command.
|
||||
- Added support for checking for the latest released version of Mayan from the
|
||||
About menu.
|
||||
- Added support for rebuilding specific indexes instead of only being able to
|
||||
rebuild all index. GitLab issue #372.
|
||||
- Rewrite document indexing code to be faster and use less locking. Thanks to
|
||||
Macrobb Simpson (@Macrobb) for the initial implementation.
|
||||
- Use a predefined file path for the file lock.
|
||||
- Catch documents with not document version when displaying their thumbnails.
|
||||
- Add custom script_prefix aware resolve function and use it for the
|
||||
document page navigation views. Fixes an issue when Mayan is installed
|
||||
as a sub URL app. Thanks to Gustavo Teixeira(@gsteixei) for the issue and
|
||||
investigation.
|
||||
- Support was added to update document indexes after workflow state changes.
|
||||
- An helper was added to access a documents workflow by name. To this end
|
||||
a new field was added to the Workflow class called `Internal name`.
|
||||
This new field makes it much easier to get a document's workflow instance.
|
||||
If for example a document has a workflow called `Publish` with the internal
|
||||
name `publish_workflow`, it will be accessible in the indexing template as
|
||||
{{ document.workflow.publish_workflow }}. The latest state of the workflow
|
||||
can be accessed using {{ document.workflow.publish_workflow.get_current_state }}.
|
||||
- Added a new API endpoint to display a list of all the available search models.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #371 <https://gitlab.com/mayan-edms/mayan-edms/issues/371>`_ Auto select checkbox when updating metadata
|
||||
* `GitLab issue #372 <https://gitlab.com/mayan-edms/mayan-edms/issues/372>`_ (Feature request) Allow 'rebuild index' to rebuild only a selected index
|
||||
* `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
|
||||
* `GitLab issue #385 <https://gitlab.com/mayan-edms/mayan-edms/issues/385>`_ mountindex: how to specify FUSE mount option allow_other?
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,156 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.4 release notes
|
||||
=============================
|
||||
|
||||
Released: June 23, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
SANE document source
|
||||
--------------------
|
||||
A new document source has been added with the ability to retrieve documents from
|
||||
scanners directly. This new document source uses the SANE (Scanner Access Now Easy)
|
||||
(https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy) API client to communicate
|
||||
with USB and network scanners. SANE must be properly installed for this document
|
||||
source to work. Your scanner must also be supported by the SANE API
|
||||
(http://www.sane-project.org/sane-supported-devices.html).
|
||||
|
||||
Automatic PDF orientation detection
|
||||
-----------------------------------
|
||||
The orientation of PDF documents is now detected at creation and a rotation
|
||||
transformation applied to each of the document's pages to correct the orientation.
|
||||
|
||||
Environment variables
|
||||
---------------------
|
||||
Configuration options can now be updated from environment variables. To update
|
||||
a configuration option, prepend the string `MAYAN_` to the name of the configuration
|
||||
option. For example, to increase the number of documents displayed per search results
|
||||
page (from a default of 40) to 50 documents, set the environment variable
|
||||
MAYAN_COMMON_PAGINATE_BY to 50 with::
|
||||
|
||||
$ export MAYAN_COMMON_PAGINATE_BY=50
|
||||
|
||||
and restart Mayan EDMS. A list of the configuration options can be found in the
|
||||
`Setup` menu, under `Settings`.
|
||||
|
||||
Math filters
|
||||
------------
|
||||
The django-mathfilters (https://pypi.python.org/pypi/django-mathfilters) package
|
||||
has been included to provide proper math filters in the indexes. An example of
|
||||
this is indexing documents by quarter::
|
||||
|
||||
{% load mathfilters %}{{ document.metadata_value_of.date|date:"Y"}}Q{{ document.metadata_value_of.date|date:"m"|sub:1|intdiv:3|add:1 }}
|
||||
|
||||
|
||||
Expand searchable objects
|
||||
-------------------------
|
||||
Previously, only documents and later on document pages were searchable. This release
|
||||
add support for searching for tags, metadata types and cabinets. This search support
|
||||
is available via the dynamic search API.
|
||||
|
||||
Management command to reset locks
|
||||
---------------------------------
|
||||
During testing or development error occur and locks can remain behind, blocking
|
||||
execution of a process or task until they expire. To help resolve this a
|
||||
management command has been added called `purgelocks` that will delete all locks
|
||||
in the system.
|
||||
|
||||
Index by workflow state
|
||||
-----------------------
|
||||
Support was added to update the a document indexes from workflow state changes.
|
||||
To make workflow referencing easier from the index template, a new fields was
|
||||
added to the workflow model called internal_name. For example, for a workflow
|
||||
called `Publishing Workflow` with an internal name of `publishing_workflow`,
|
||||
use the following string to reference the current state in an index::
|
||||
|
||||
{{ document.workflow.publishing_workflow.get_current_state }}
|
||||
|
||||
|
||||
Task manager
|
||||
------------
|
||||
A new app to monitor the distribution and consumption of background task has been
|
||||
added. This app is call `Task manager` and can be found in the `Tools` menu.
|
||||
Use this new tool to diagnose your background task workers or to determine when
|
||||
to scale up the number of workers.
|
||||
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Improve render of documents with no pages.
|
||||
- Fix repeated permission list API URL. GitLab issue #389.
|
||||
- Fix role creation API endpoint not returning id. GitLab issue #390.
|
||||
- Fix index rebuilding for multi value first levels. GitLab issue #391.
|
||||
- Add hardware requirements. GitHub issue #247.
|
||||
- Fix URL query string encoding for the document page navigation views. GitLab
|
||||
issue #383.
|
||||
- Truncate views titles via the APPEARANCE_MAXIMUM_TITLE_LENGTH setting.
|
||||
GitLab issue #217.
|
||||
- Add link to show a document's OCR errors. GitLab issue #291.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitHub issue #247 <https://github.com/mayan-edms/mayan-edms/issues/247>`_ Hardware requirements
|
||||
* `GitLab issue #132 <https://gitlab.com/mayan-edms/mayan-edms/issues/132>`_ Task queue viewer
|
||||
* `GitLab issue #217 <https://gitlab.com/mayan-edms/mayan-edms/issues/217>`_ [Documents] Truncate document label for avoid double lines in mobile or reduce font
|
||||
* `GitLab issue #221 <https://gitlab.com/mayan-edms/mayan-edms/issues/221>`_ Add flush lock management command
|
||||
* `GitLab issue #291 <https://gitlab.com/mayan-edms/mayan-edms/issues/291>`_ Link to OCR error log from document OCR tab
|
||||
* `GitLab issue #344 <https://gitlab.com/mayan-edms/mayan-edms/issues/344>`_ Add support for searching folders, tags, metadata.
|
||||
* `GitLab issue #383 <https://gitlab.com/mayan-edms/mayan-edms/issues/383>`_ Page not found when deployed to sub-uri
|
||||
* `GitLab issue #387 <https://gitlab.com/mayan-edms/mayan-edms/issues/387>`_ Document Scanning not Functioning on rotated landscape PDF's
|
||||
* `GitLab issue #389 <https://gitlab.com/mayan-edms/mayan-edms/issues/389>`_ How can we map permissions with a particular role using REST API?
|
||||
* `GitLab issue #390 <https://gitlab.com/mayan-edms/mayan-edms/issues/390>`_ Id is not getting in response
|
||||
* `GitLab issue #391 <https://gitlab.com/mayan-edms/mayan-edms/issues/391>`_ "Rebuild indexes" does not work in Mayan EDMS 2.3
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,71 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.5.1 release notes
|
||||
===============================
|
||||
|
||||
Released: July 07, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This version is identical to version 2.5. It was released to workaround some
|
||||
issues with the recent migration of PyPI (https://mail.python.org/pipermail/distutils-sig/2017-June/030766.html)
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
=======
|
||||
* `GitLab issue #378 <https://gitlab.com/mayan-edms/mayan-edms/issues/378>`_ Add metadata widget changes from @Macrobb
|
||||
* `GitLab issue #379 <https://gitlab.com/mayan-edms/mayan-edms/issues/379>`_ Add new document version list view permission.
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,74 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.5.2 release notes
|
||||
===============================
|
||||
|
||||
Released: July 08, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Improve duplicate document scan
|
||||
-------------------------------
|
||||
Previously the way document creation code was enclosed in a single database
|
||||
transactions. This cause the duplicate scan at upload code to received a
|
||||
document reference to uncommitted database data. The single database
|
||||
transaction was split into smaller units to make sure the duplicate scan
|
||||
recevies saved and committed data.
|
||||
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,243 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.5 release notes
|
||||
=============================
|
||||
|
||||
Released: July 07, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
OCR text download
|
||||
-----------------
|
||||
A link and view were added to download the entire OCR text of a document as a
|
||||
separate file. The link can be found under the "Actions" dropdown when the
|
||||
"OCR" tab of a document is selected.
|
||||
|
||||
SANE document source
|
||||
--------------------
|
||||
A validation error was being raised when the resolution field of the SANE
|
||||
document source was left blank. This issue has been fixed and works as expected
|
||||
now.
|
||||
|
||||
Mailing profiles
|
||||
----------------
|
||||
Previously, the way documents were emailed was controlled by configuration
|
||||
settings that only system administrator could change as the OS level. It is
|
||||
now possible to create mailing profiles from within the user interface. This
|
||||
allows for Mayan administrators to add mailing profiles without the
|
||||
intervention system administrators. It also provides the opportunity to create
|
||||
multiple mailing profiles. This is useful for sending documents via different
|
||||
email providers depending on things like priority of delivery, or email size
|
||||
limitations. For multi-tenant environments, this also means that each tenant
|
||||
can now send documents via email with their own respective email accounts.
|
||||
For system administrators, this means there is no longer a need to rely on a
|
||||
single email profile for the entirety of all the tenants in a deployment,
|
||||
which could be taxing email quota limits or triggering spam filters. For
|
||||
more information on the multi-tenant plugin visit the Mayan app store at:
|
||||
http://www.mayan-edms.com/store/
|
||||
|
||||
New transformation
|
||||
------------------
|
||||
A lineart transformation was added to reduce the amount of colors in a
|
||||
document's image to just 2. This is useful to increase the OCR accuracy on
|
||||
some kind of documents whose color or layout may confuse the OCR engine
|
||||
and lower the accuracy of the text recognition.
|
||||
|
||||
UI reorganization
|
||||
-----------------
|
||||
The main menu was been reorganization for clarity of function. The "About" menu
|
||||
has been renamed to "System" to signify that the items in this menu relate
|
||||
to system configuration topics. The "Tools" and "Setup" sub-menus, were moved
|
||||
from the "Profile" menu to the new "System" menu. The "Profile" menu has been
|
||||
renamed to "User". Additionally, the "User" menu is now part of the main menu
|
||||
instead of floating right on the layout. This change along with others
|
||||
improve the usability on small devices like tablets and smartphones.
|
||||
|
||||
PDF compatibility updates
|
||||
-------------------------
|
||||
Support for non-compliant, "broken", and PDFs encrypted with no passwords has
|
||||
been added. Previously no effort was made to process the images for these
|
||||
files. The code for detecting the number of pages in a PDF has also been
|
||||
improved to retry several methods when failing on non-compliant PDF documents.
|
||||
|
||||
Office documents compatibility updates
|
||||
--------------------------------------
|
||||
Improvements to the Libre Office conversion code were added, including a
|
||||
workaround for Libre Office bug #37531 (https://bugs.documentfoundation.org/show_bug.cgi?id=37531)
|
||||
which sometimes manifested when uploading multiple office documents
|
||||
sequentially.
|
||||
|
||||
Metadata setup UI improvements
|
||||
------------------------------
|
||||
A new widget to define the document type to metadata type relationship has been
|
||||
added. The new widget provides a method to switch between required metadata
|
||||
and optional metadata for a document type. This new method is not only faster
|
||||
but does not force users to remove a metadata type before making the switch
|
||||
and thus avoid deletion of existing metadata entries. A new view was also added
|
||||
to change the document type to metadata type relation not only the document
|
||||
type view but also from the metadata type view eliminating travel between these
|
||||
two views when creating new metadata types and assigning them to document
|
||||
types.
|
||||
|
||||
Duplicated document scanning
|
||||
----------------------------
|
||||
Support to scan and list duplicated document scanning was added in the form of
|
||||
a new document list link under the "Documents" main menu. Every time a document
|
||||
is uploaded, a document scan will be triggered to determine if the new document
|
||||
is a duplicate of an existing document. Duplicate documents will be listed
|
||||
in a new "Duplicated documents" link in the main menu. A full document list
|
||||
scan can also be triggered by using the new "Duplicated document scan" button
|
||||
in the tools menu. Finally, a new tab in the document view has been added
|
||||
called "Duplicates" that will list all duplicates of the currently
|
||||
selected document when in the document's view. Related to this feature is the
|
||||
addition of being able to search documents by their checksum. This was done by
|
||||
indexing the checksum database field and by adding the checksum as a search
|
||||
field in the advanced document search view and via the API.
|
||||
|
||||
Login session control
|
||||
---------------------
|
||||
Support was added to control the length of time a log in session lasts. First
|
||||
from the user interface side of things a "Remember me" checkbox was added to
|
||||
the log in form that will cause the session to persist after the browser is
|
||||
closed. If this checkbox is left blank the session will be destroyed when the
|
||||
browser closes and the user will need to log in again when accessing any of the
|
||||
URLs. The second part of this feature is for administrators. The configuration
|
||||
setting AUTHENTICATION_MAXIMUM_SESSION_LENGTH was added to control the maximum
|
||||
time a logged in session will persist when users click the "Remember me"
|
||||
checkbox. The default of this setting is 30 days.
|
||||
|
||||
Document image cache disabling
|
||||
------------------------------
|
||||
It is now possible to disable the document page image caching. The document
|
||||
image cache works on two level and hence two setting options were added.
|
||||
The first is the DOCUMENTS_DISABLE_BASE_IMAGE_CACHE option which disables the
|
||||
first layer of caching, the generation of a master image file for each document
|
||||
page. This means that subsequent request for a page's image will trigger the
|
||||
conversion of the document from its original uploaded file. The second option,
|
||||
DOCUMENTS_DISABLE_TRANSFORMED_IMAGE_CACHE, disables just the caching of the
|
||||
transformed (rotated, resized, zoomed) images of document pages. The settings
|
||||
can be used together or separately depending on how much disk space saving is
|
||||
desired. These settings give control over the trade-off between disk space
|
||||
savings and higher CPU utilization. These settings are ideal for installations
|
||||
with a lot of documents, that want to conserve disk space, and have CPU capacity
|
||||
to spare. Multi-tenant installations can also benefit from these new settings.
|
||||
|
||||
Document filter by workflow state
|
||||
---------------------------------
|
||||
A few versions over, a main menu item was added to list documents by their
|
||||
workflow and/or their current workflow state. Support for filtering by the
|
||||
initial workflow state has been added to this feature.
|
||||
|
||||
Support for restoring forgotten password
|
||||
----------------------------------------
|
||||
Views and templates were added to enable the typical "Forgotten
|
||||
password" worflow using a signed token via email.
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Add missing OCR migration.
|
||||
- Improve error output of the performupgrade command to debug upgrade errors
|
||||
that could stop an upgrade (missing document files, etc).
|
||||
- Enable the django-mathfilters app added in version 2.4.
|
||||
- Do a complete pull and synchronization of the translations to fix missing
|
||||
translations for Polish. Thanks to Wojtek Warczakowski for the report.
|
||||
- Allow null for the SANE source resolution field. Even though the field was
|
||||
marked as allowing blank values it was failing because it is a number field
|
||||
and number fields need to allow explicit null values when left blank.
|
||||
- Rename the mayan_task_manager app to task_manager.
|
||||
- Make the task manager translatable.
|
||||
- Add Turkish to the list of processes languages.
|
||||
- Use Toastr libary for screen messages.
|
||||
- Reduce verbosity of some debug messages in the MayanAppConfig, settings and,
|
||||
mailing discovery.
|
||||
- Make sure lookup selection widgets also trigger the metadata update
|
||||
checkbox on change.
|
||||
- Usability improvements on small displays.
|
||||
- Removal of the CONVERTER_LIBREOFFICE_PATH and CONVERTER_PDFTOPPM_PATH
|
||||
settings. These setting have been consolidated into
|
||||
CONVERTER_GRAPHICS_BACKEND_CONFIG.
|
||||
- Improve the documentation of the document creation API endpoint.
|
||||
GitHub issue #255. Thanks to @lcerliani opening the issue.
|
||||
- Libre Office conversion improvements. Give every libreoffice instance
|
||||
its own separate $HOME directory. Additionally give every libreoffice
|
||||
its own UserInstallation file in the $HOME directory. Works around
|
||||
Libre Office issue: https://bugs.documentfoundation.org/show_bug.cgi?id=37531
|
||||
Solves or affects GitLab issues #393 #258 #198 #175
|
||||
- The trashed document deletion action is now a background task. This
|
||||
feature results is much faster trashed document deletion and trash
|
||||
can emptying.
|
||||
- Remove animated spinners to lower browser memory usage and increase
|
||||
responsiveness.
|
||||
- Render a document page placeholder while the real document page
|
||||
loads. This change avoids "jumping" effect when loading many thumbnails.
|
||||
- Increase lazy load thresholds. More thumbnails and document pages
|
||||
will be loaded and visible by default when a view loads.
|
||||
- Improve usability and appearance on medium and small devices like
|
||||
tablets and smartphones.
|
||||
- Do hard word break on form titles to avoid horizontal scroll on
|
||||
small displays.
|
||||
- Python3 compatilibty improvements by removing all explicit conversion
|
||||
using the unicode() function.
|
||||
- Unicode handling improvements.
|
||||
- Update required versions of Pillow and django-suit.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitHub issue #255 <https://github.com/mayan-edms/mayan-edms/issues/255>`_ Uploading a local file via api
|
||||
* `GitLab issue #215 <https://gitlab.com/mayan-edms/mayan-edms/issues/215>`_ Download text contents
|
||||
* `GitLab issue #286 <https://gitlab.com/mayan-edms/mayan-edms/issues/286>`_ User configurable mailer
|
||||
* `GitLab issue #337 <https://gitlab.com/mayan-edms/mayan-edms/issues/337>`_ Better way to switch Optional to Required Metadata
|
||||
* `GitLab issue #373 <https://gitlab.com/mayan-edms/mayan-edms/issues/373>`_ (feature request) Allow selecting document types for metadata
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,69 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.6 release notes
|
||||
=============================
|
||||
|
||||
Released: July 18, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Fix issue when editing or removing metadata from multiple documents.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,78 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.6.2 release notes
|
||||
===============================
|
||||
|
||||
Released: July 22, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug fix release and users are encouraged to upgrade.
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Fix deprecation warning to prepare upgrade to Django 1.11 and 2.0.
|
||||
- Fix zoom feature in document page view.
|
||||
- Add support to run tests against a MySQL or Postgres container.
|
||||
- Improve tag widget customization by moving the markup to its own template.
|
||||
- Fix document page widget appearance in the document page list view.
|
||||
- Make document version order deterministic.
|
||||
- Allow total page number instrospection of encrypted PDF with non ASCII
|
||||
user properties. GitLab issue #411.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,87 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.6.3 release notes
|
||||
===============================
|
||||
|
||||
Released: July 25, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug fix release and users are encouraged to upgrade.
|
||||
|
||||
Changes
|
||||
-------
|
||||
- Add makefile target to launch a PostgreSQL container.
|
||||
- Use resolve_url instead of redirect to resolve the post login URL.
|
||||
- Make the intialsetup and performupgrade management tasks work
|
||||
with signals to allow customization from 3rd party apps.
|
||||
- PEP8 cleanups.
|
||||
- Add tag_ids keyword argument to the Source.handle_upload
|
||||
model method. GitLab issue #413.
|
||||
- Add overflow wrapping so wrap long titles in Firefox too.
|
||||
- Makes Roles searchable. GitLab issue #402.
|
||||
- Add line numbers to the debug and production loggers.
|
||||
Add date and time to the production logger.
|
||||
- Add support for generating setup.py from a template. GitLab
|
||||
#149 #200.
|
||||
- Add fade in animation to document images.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #149 <https://gitlab.com/mayan-edms/mayan-edms/issues/149>`_ Autogenerate setup.py
|
||||
* `GitLab issue #200 <https://gitlab.com/mayan-edms/mayan-edms/issues/200>`_ dependencies in setup.py not up to date with requirements
|
||||
* `GitLab issue #402 <https://gitlab.com/mayan-edms/mayan-edms/issues/402>`_ Make permissions and roles searchable.
|
||||
* `GitLab issue #413 <https://gitlab.com/mayan-edms/mayan-edms/issues/413>`_ source.models.Source.handle_upload does not support tag_ids but upload_document does
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,71 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.6.4 release notes
|
||||
===============================
|
||||
|
||||
Released: July 25, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
This is a bug fix release and users are encouraged to upgrade.
|
||||
|
||||
Changes
|
||||
-------
|
||||
- Add missing replacements of reverse to resolve_url.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* None
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,143 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.6 release notes
|
||||
=============================
|
||||
|
||||
Released: July 18, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Sending documents to multiple recipients
|
||||
----------------------------------------
|
||||
Support was added to send a document as an attachment, or a link to a document
|
||||
to multiple email recipients. To use this feature enter a comman separated
|
||||
list of email recipients in the "Email address" field.
|
||||
|
||||
Visual changes
|
||||
--------------
|
||||
Several patches to change and improve the user interface landed on this release.
|
||||
The first, by Macrobb Simpson @Macrobb, makes the content area width, match
|
||||
window area. This means that on almost all device screen sizes the content area
|
||||
will be almost fullscreen. Another path from Macrobb Simpson, improves the
|
||||
visual appearance of the document metadata widget. The other big change is the
|
||||
new list item view template which lists documents in an column, row layout.
|
||||
With this layout document thumbnails are more clearly visible, much more
|
||||
information can be displayed for each document, and works much better on small
|
||||
screen devices like tablets and smartphone than a responsive table which
|
||||
requires two axis navigation on small screens. The height of the dashboard
|
||||
items is now adjusted via javascript to ensure correct layout regardless of
|
||||
screen size of message length when translated.
|
||||
|
||||
Search
|
||||
------
|
||||
This release adds users and groups to the list of objects that are searchable
|
||||
via the API. The current list of searchable objects is: metadata types,
|
||||
users, groups, tags, documents, document pages, and cabinets.
|
||||
|
||||
Logging
|
||||
-------
|
||||
The logging configuration was improved to create a log for critical errors
|
||||
when running on production mode. The default location for this log file is:
|
||||
/mayan/error.log. This path can be changed with the COMMON_PRODUCTION_ERROR_LOG_PATH
|
||||
setting. This log file will capture application errors and request exceptions.
|
||||
|
||||
Cabinets
|
||||
--------
|
||||
The access control for cabinets has been fixed in some regards and improved in
|
||||
others. The permission to add and remove documents can now be applied to
|
||||
individual root cabinets instead of globally for a role. Also, the permission
|
||||
to add or remove documents from cabinets must also now be granted to a document
|
||||
or document type. In other words, to add a document to a cabinet, the user's
|
||||
role must have the permission to add documents to cabinet, for the cabinet
|
||||
to recieve the document and for the document about to be added.
|
||||
|
||||
New permission
|
||||
--------------
|
||||
The patch to add a permission to view a document's version list was backported
|
||||
from the development branch to make it accesible now. Like cabinets, the tag
|
||||
access control now works on two levels. Now to attach a tag to a document,
|
||||
the permission to attach tags must be granted to the tag to attach and to the
|
||||
document that will receive the tag.
|
||||
|
||||
ACL changes
|
||||
-----------
|
||||
The document type permissions namespace was renamed from "Document setup" to
|
||||
"Document types" for clarity. Along with that change, support was added
|
||||
for granting the document type edit, document type delete, and document type view
|
||||
permissions to individual document type instances instead of just globally.
|
||||
|
||||
Testing
|
||||
-------
|
||||
The documents app view tests now test for view access and not just permission.
|
||||
Testing against access is more robust and also tests for permissions
|
||||
implicitly.
|
||||
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Fix HTML mark up in window title. GitLab #397.
|
||||
- Sort setting by namespace label and by global name second.
|
||||
- Sort indexes by label.
|
||||
- Switch the order of the DEFAULT_AUTHENTICATION_CLASSES of DRF. GitLab #400.
|
||||
- Improve code to unbind menu entries.
|
||||
- Increase the size of the mailing profile label field to 128 characters.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #378 <https://gitlab.com/mayan-edms/mayan-edms/issues/378>`_ Add metadata widget changes from @Macrobb
|
||||
* `GitLab issue #396 <https://gitlab.com/mayan-edms/mayan-edms/issues/396>`_ Add support for emailing documents to a recipient list.
|
||||
* `GitLab issue #397 <https://gitlab.com/mayan-edms/mayan-edms/issues/397>`_ Title on Index Page is Broken
|
||||
* `GitLab issue #400 <https://gitlab.com/mayan-edms/mayan-edms/issues/400>`_ Django REST framework's BasicAuthentication doesn't work with Oauth2_proxy
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,97 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.7.1 release notes
|
||||
===============================
|
||||
|
||||
Released: September 3, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Unicode metadata when uploading a document
|
||||
------------------------------------------
|
||||
An issue with Django's unquote_plus caused documents being uploaded with an
|
||||
unicode, no English character in an initial metadata value field to fail.
|
||||
The unquote_plus usage was remove in favor of a dedicate URL parsing library
|
||||
called furl. GitLab issue #423. Thanks to Gustavo Teixeira (@gsteixei) for the
|
||||
find.
|
||||
|
||||
Silent errors during initialization
|
||||
-----------------------------------
|
||||
When Python raises an ImportError exception, it is not possible to determine
|
||||
the cause of the error. The local.py import code was updated to interpret the
|
||||
text of the ImportError exception and ignore it only if the local.py was
|
||||
missing, which is the case during the initialization commands execute after
|
||||
the initial installation. Any error in the local.py file will now cause Mayan
|
||||
to exit. Thanks to MacRobb Simpson for the report and solution.
|
||||
|
||||
String usage in the local.py file
|
||||
---------------------------------
|
||||
Python 2.7 uses byte strings by default. Byte strings cannot be used in
|
||||
conjunction with unicode strings. A missing import was causing strings in
|
||||
the local.py file to be interpreted as byte string while the rest of Mayan
|
||||
uses unicode strings. Using non English special characters in a string located
|
||||
in the local.py file would have cause a Unicode errors. For new installations
|
||||
from Mayan version 2.7.1 onwards, the line
|
||||
`from __future__ import absolute_imports, unicode_literals` is included when
|
||||
generating the local.py for the first time. For existing installations,
|
||||
adding this line at the top is all that's needed. GitLab issue #424. Thanks to
|
||||
Gustavo Teixeira (@gsteixei) for the find and researching the cause.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #423 <https://gitlab.com/mayan-edms/mayan-edms/issues/423>`_ Metadata can't handle non ascii chars on upload
|
||||
* `GitLab issue #424 <https://gitlab.com/mayan-edms/mayan-edms/issues/424>`_ DjangoUnicodeDecodeError on document proprieties due document language field
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,101 +0,0 @@
|
||||
===============================
|
||||
Mayan EDMS v2.7.2 release notes
|
||||
===============================
|
||||
|
||||
Released: September 06, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Fixes to the new mailer creation view
|
||||
-------------------------------------
|
||||
Some last minute changes to the dynamic form creation code added to support
|
||||
workflow state actions broke the creation of new mailer profiles. This is fixed
|
||||
now and a test was added to avoid future regressions. GitLab issue #431.
|
||||
Thanks to Robert Schöftner (@robert.schoeftner) for the report and the solution.
|
||||
|
||||
Event consolidation
|
||||
-------------------
|
||||
Several events were created to audit the creation of new documents. These events
|
||||
caused some confusion and were improved. When creating a new document the two
|
||||
'document properties edited' events were removed as this is an internal process
|
||||
and not an user event. Another change is the preservation of the user ID that
|
||||
submits the file to create the document. Now instead of 'System' the actual
|
||||
username of the user that uploaded the document will appear in the events log.
|
||||
GitLab issue #433. Thanks to Jesaja Everling (@jeverling) for the report.
|
||||
|
||||
Cabinet list sorting
|
||||
--------------------
|
||||
The root cabinet list is now displayed alphabetically sorted. The list of
|
||||
cabinets to which a document belongs to is now displayed sorted too. Thanks
|
||||
to Thomas Plotkowiak for the request.
|
||||
|
||||
Visual cue for the document cabinet list
|
||||
----------------------------------------
|
||||
In the document list item view, a simple visual cue in the form of italized
|
||||
text was added to the document cabinet list. GitLab issue #435. Thanks to LeVon
|
||||
Smoker for the request.
|
||||
|
||||
Easier testing of production deployments
|
||||
----------------------------------------
|
||||
The testing library mock is now installed by default, making it easier to run
|
||||
the entire test suit on deployed instances.
|
||||
|
||||
Removals
|
||||
--------
|
||||
* None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #431 <https://gitlab.com/mayan-edms/mayan-edms/issues/431>`_ can't create new mailer
|
||||
* `GitLab issue #433 <https://gitlab.com/mayan-edms/mayan-edms/issues/433>`_ Events are not created correctly for document upload
|
||||
* `GitLab issue #435 <https://gitlab.com/mayan-edms/mayan-edms/issues/435>`_ Add visual cue to differentiate the Cabinet list on a document's preview card.
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,279 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v2.7 release notes
|
||||
=============================
|
||||
|
||||
Released: August 30, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
Beta Python 3 support
|
||||
---------------------
|
||||
Preliminary support for Python 3 has landed in this version. More testing
|
||||
is still needed but for the most part seems to be usable. This is just
|
||||
initial support and not meant for production. Please submit any issue with
|
||||
Python 3 to help improve the support for it.
|
||||
|
||||
|
||||
PDF introspection improvements
|
||||
------------------------------
|
||||
Some PDF files encode their page rotation information using indirect values
|
||||
instead of actually storing the rotation value as an integer. Support these
|
||||
types of PDF files was added.
|
||||
|
||||
|
||||
3rd party apps
|
||||
--------------
|
||||
Support was added to allow 3rd party app adding data columns to existing
|
||||
models to specify the order in which such new columns will appear. Support
|
||||
was also added to allow any app to remove existing main menus. App can now in
|
||||
addition to adding their own dashboard widget, remove existing widgets. As
|
||||
part of the dashboard updates support was also added to allow app developers to
|
||||
create multiple dashboards.
|
||||
|
||||
|
||||
Converter customization improvements
|
||||
------------------------------------
|
||||
For users wanting more control over the document image conversion process,
|
||||
support was added to change the internal format used for image conversion.
|
||||
By default JPG used but via the `pdftoppm_format` and `pillow_format` entries
|
||||
of the CONVERTER_GRAPHICS_BACKEND_CONFIG setting option any other format
|
||||
support by Python's Pillow can use used. Support was also added to change the
|
||||
DPI value used by the conversion process of PDF files to images. The default
|
||||
value for this coversion was set to 300 DPI. The entry used to specify this
|
||||
value is `pdftoppm_dpi`.
|
||||
|
||||
|
||||
Workflow refactor
|
||||
-----------------
|
||||
This version includes a preview release of the workflow refactor that includes
|
||||
three new features: transition triggers, state actions, and graphical previews.
|
||||
The transition triggers allow setting document events as triggers to perform
|
||||
a workflow transition automatically. State actions allow performing system
|
||||
actions when a workflow enters or leaves a specify state. For this release
|
||||
5 actions were included: attaching and removing tags to a document, granting
|
||||
or revoking access via the ACL, and performing a HTTP POST request. As the
|
||||
feature matures more actions will be added. These two features make the
|
||||
workflow app the automation center for Mayan. This feature allow users to program
|
||||
behaviors to perform, even provoke changes in 3rd party software using the HTTP
|
||||
POST. This feature works very much like services like IFTTT [ifttt.com]
|
||||
(If This Then That) or conditionals in programming languages. The last
|
||||
improvement added to the workflow app is the ability to render a workflow
|
||||
in a graphical manner, useful for visually understanding, explaining and
|
||||
debugging workflows.
|
||||
|
||||
|
||||
OCR refactor
|
||||
------------
|
||||
As part of the plan to add OCR zone and barcode support the first set of
|
||||
changes was included in this version. These initial changes bring the OCR
|
||||
app up to standard with the rest of the system and splits the OCR app into two
|
||||
new apps: the OCR app and the Document parsing app. The document parsing app
|
||||
will read text content from documents that provide them and display the result
|
||||
under the "Content" document tab. The OCR app will also launch for each
|
||||
document even if they provide text content to recognize any text on images.
|
||||
This separation gives users the two choices of text information one extracted
|
||||
from the document (not always available or of quality) and the other recognized
|
||||
by OCR.
|
||||
|
||||
|
||||
Document parsing
|
||||
----------------
|
||||
Historically Mayan has had two methods to extract text from PDF files. First
|
||||
it will try the program called `pdftotext` and failing that will try the
|
||||
PDFMiner Python library. The official PDFMiner library is unmaintained and
|
||||
doesn't support Python 3 will be a requirement for Django 2.0, which will
|
||||
force Mayan to move to Python 3 exclusively in the near future. For this
|
||||
reason the PDFMiner parser has been removed. A new library called PyPDF2 was
|
||||
added in a past version to improve the PDF page count and rotation detection,
|
||||
initial experience with this library has been positive and since it supports
|
||||
text extraction might also replace PDFMiner as the secondary PDF text
|
||||
extraction strategy.
|
||||
|
||||
|
||||
Document version UI
|
||||
-------------------
|
||||
The list of versions of a document was updated to use the new item list
|
||||
view templated added in version 2.6 for document lists. Along with this update
|
||||
preview support was added for individual document version. It is also possible
|
||||
to explore and navigate different versions of a document much easier and with
|
||||
more information that previously available, being able to visually see for
|
||||
example the difference in a document's versions.
|
||||
|
||||
|
||||
Events system
|
||||
-------------
|
||||
The events system has been updated to provide more information and improve
|
||||
navigation. The `Actor` field will now display `System` when an event was
|
||||
performed by the system instead of displaying the document name. The
|
||||
column `Action object` was added to help identify via which object the
|
||||
event was performed. This is significant when performing actions on objects
|
||||
which are children of another like document versions. The number and types
|
||||
of events that are monitored has been increased all of which can also be used
|
||||
to trigger a workflow transition. The current list:
|
||||
|
||||
- Document added to cabinet
|
||||
- Document removed from cabinet
|
||||
- Document automatically checked in
|
||||
- Document checked in
|
||||
- Document checked out
|
||||
- Document forcefully checked in
|
||||
- Document comment created
|
||||
- Document comment deleted
|
||||
- Document created
|
||||
- Document downloaded
|
||||
- Document properties edited
|
||||
- New version uploaded
|
||||
- Document type changed
|
||||
- Document version reverted
|
||||
- Document viewed
|
||||
- Document version OCR finished
|
||||
- Document version submitted for OCR
|
||||
- Document version parsing finished
|
||||
- Document version submitted for parsing
|
||||
- Tag attached to document
|
||||
- Tag removed from document
|
||||
|
||||
|
||||
Metadata on document type change
|
||||
--------------------------------
|
||||
Changing document types will no longer delete all metadata from the document.
|
||||
Any existing metadata whose type matches the metadata in the new type will be
|
||||
preserved.
|
||||
|
||||
|
||||
Permission rebalance
|
||||
--------------------
|
||||
In order to attach or remove a tag to a document, the tag view permissions
|
||||
was needed. This has been update to required the tag attach and remove
|
||||
permissions respectively.
|
||||
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
- Add workaround for PDF with IndirectObject as the
|
||||
rotation value. GitHub #261.
|
||||
- Add ACL list link with icon and use it for the document facet menu.
|
||||
- Fix mailing app permissions labels.
|
||||
- Add ACLs link and ACLs permissions to the mailer profile model.
|
||||
- Improve mailer URL regex.
|
||||
- Add ordering support to the SourceColumn class. GitLab issue #417.
|
||||
- Shows the cabinets in the document list. GitLab #417 @corneliusludmann
|
||||
- Update the index information colums to show the
|
||||
total number of documents and nodes contained in a level.
|
||||
- Add workaround for pycountry versions without the bibliographical key.
|
||||
GitHub issue #250.
|
||||
- Skip UUID migration on Oracle backends. GitHub issue #251.
|
||||
- Allow changing the output format, DPI of the pdftoppm command, and
|
||||
the output format of the converter via the CONVERTER_GRAPHICS_BACKEND_CONFIG
|
||||
setting sub options: pdftoppm_dpi: 300, pdftoppm_format: jpeg, pillow_format: jpeg
|
||||
GitHub issues #256 #257 GitLab issue #416.
|
||||
- Add support for workflow triggers.
|
||||
- Add support for workflow actions. Includes actions to attach and remove tags,
|
||||
grant and remove access and perform an HTTP POST request.
|
||||
- Add support for rendering workflows. Required graphviz binary.
|
||||
- Add support for unbinding sub menus.
|
||||
- Fix mailing profile test view.
|
||||
- Disregard the last 3 dots that mark the end of the YAML document.
|
||||
- Add support for multiple dashboards.
|
||||
- Add support for removing dashboard widgets.
|
||||
- Convert document version view to item list view.
|
||||
- Add support for browsing individual document versions.
|
||||
- Add support for dropdown menus to the item list view template.
|
||||
- Add support for preserving the file extenstion when downloading a document
|
||||
version. GitLab #415.
|
||||
- Split OCR app into OCR and parsing.
|
||||
- Use the literal 'System' instead of the target name when
|
||||
the action user in unknown.
|
||||
- When changing document types, don't delete the old metadata that is
|
||||
also found in the new document type. GitLab issue #421.
|
||||
- Change the permission needed to attach and remove tags.
|
||||
- Reduces debug verbosity during tests.
|
||||
- Remove the NoMimetype match exception. Not needed now that this is
|
||||
a separate app from the OCR app.
|
||||
- Make error messages persistent.
|
||||
- Add 'Action object' column to the event list. Display the
|
||||
object or target type (document, tag, etc).
|
||||
- Rebalance tag permissions. Change the required permission to attach
|
||||
and remove a tag from view to attach and remove respectively.
|
||||
- Start of error log consolidation sub project.
|
||||
- Implement field order for the action dynamic forms.
|
||||
Perform action class validation by importing the class and
|
||||
not relying on an instance of action model, which might not
|
||||
exisit when still creating the action.
|
||||
- Navigation improvements in the workflow app.
|
||||
- Rename index nodes to index levels.
|
||||
- Avoid Maximum recursion depth exceeded exception on index document
|
||||
list view.
|
||||
|
||||
Removals
|
||||
--------
|
||||
- Folders app.
|
||||
- The view to submit all document for OCR. The view to submit documents by type
|
||||
substitutes this once.
|
||||
- The PDFMiner parser.
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
Using PIP
|
||||
~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
Using Git
|
||||
~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Next upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitHub issue #250 <https://github.com/mayan-edms/mayan-edms/issues/250>`_ migrate fails on documents.0025_auto_20150718_0742
|
||||
* `GitHub issue #251 <https://github.com/mayan-edms/mayan-edms/issues/251>`_ migrate fails on documents.0032_auto_20160315_0537
|
||||
* `GitHub issue #256 <https://github.com/mayan-edms/mayan-edms/issues/256>`_ Make it possible to adjust values in apps\converter\literals.py from Settings
|
||||
* `GitHub issue #257 <https://github.com/mayan-edms/mayan-edms/issues/257>`_ Use the DEFAULT_FILE_FORMAT from literals.py in python.py
|
||||
* `GitHub issue #261 <https://github.com/mayan-edms/mayan-edms/issues/261>`_ fix_orientation method causes document add to crash
|
||||
* `GitHub issue #263 <https://github.com/mayan-edms/mayan-edms/issues/263>`_ Typo in mayan/apps/ocr/migrations/0004_documenttypesettings.py
|
||||
* `GitLab issue #172 <https://gitlab.com/mayan-edms/mayan-edms/issues/172>`_ Metadata default value ignored when changing document type
|
||||
* `GitLab issue #329 <https://gitlab.com/mayan-edms/mayan-edms/issues/329>`_ Move code to Python 3
|
||||
* `GitLab issue #415 <https://gitlab.com/mayan-edms/mayan-edms/issues/415>`_ Wrong filename when downloading document version
|
||||
* `GitLab issue #416 <https://gitlab.com/mayan-edms/mayan-edms/issues/416>`_ DPI value for OCR not taken from document metadata
|
||||
* `GitLab issue #417 <https://gitlab.com/mayan-edms/mayan-edms/issues/417>`_ Display document cabinets in documents list
|
||||
* `GitLab issue #421 <https://gitlab.com/mayan-edms/mayan-edms/issues/421>`_ Metadata lost when changing document type
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -1,79 +0,0 @@
|
||||
=============================
|
||||
Mayan EDMS v3.0 release notes
|
||||
=============================
|
||||
|
||||
Released: XX XX, 2017
|
||||
|
||||
What's new
|
||||
==========
|
||||
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Resource based API endpoints
|
||||
- Update required versions of Pillow to 4.1.1, django-compressor to 2.1.1, django-suit to 0.2.25, pyocr to 0.4.7, sh to 1.12.13
|
||||
- Add notifications support.
|
||||
|
||||
Removals
|
||||
--------
|
||||
- None
|
||||
|
||||
Upgrading from a previous version
|
||||
---------------------------------
|
||||
|
||||
If installed via PIP
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Type in the console::
|
||||
|
||||
$ pip install -U mayan-edms
|
||||
|
||||
the requirements will also be updated automatically.
|
||||
|
||||
If installed using Git
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you installed Mayan EDMS by cloning the Git repository issue the commands::
|
||||
|
||||
$ git reset --hard HEAD
|
||||
$ git pull
|
||||
|
||||
otherwise download the compressed archived and uncompress it overriding the
|
||||
existing installation.
|
||||
|
||||
Manually upgrade/add the new requirements::
|
||||
|
||||
$ pip install --upgrade -r requirements.txt
|
||||
|
||||
Remove deprecated requirements::
|
||||
|
||||
$ pip uninstall -y -r removals.txt
|
||||
|
||||
Common steps
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Migrate existing database schema with::
|
||||
|
||||
$ mayan-edms.py performupgrade
|
||||
|
||||
Add new static media::
|
||||
|
||||
$ mayan-edms.py collectstatic --noinput
|
||||
|
||||
The upgrade procedure is now complete.
|
||||
|
||||
|
||||
Backward incompatible changes
|
||||
=============================
|
||||
|
||||
* None
|
||||
|
||||
Bugs fixed or issues closed
|
||||
===========================
|
||||
|
||||
* `GitLab issue #366 <https://gitlab.com/mayan-edms/mayan-edms/issues/366>`_ Proofread documentation
|
||||
* `GitLab issue #379 <https://gitlab.com/mayan-edms/mayan-edms/issues/379>`_ Add new document version list view permission.
|
||||
* `GitLab issue #379 <https://gitlab.com/mayan-edms/mayan-edms/issues/379>`_ Add new document version list view permission.
|
||||
|
||||
|
||||
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/
|
||||
@@ -22,25 +22,7 @@ versions of the documentation contain the release notes for any later releases.
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
2.7.2
|
||||
2.7.1
|
||||
2.7
|
||||
2.6.4
|
||||
2.6.3
|
||||
2.6.2
|
||||
2.6.1
|
||||
2.6
|
||||
2.5.2
|
||||
2.5.1
|
||||
2.5
|
||||
2.4
|
||||
2.3
|
||||
2.2
|
||||
2.1.11
|
||||
2.1.10
|
||||
2.1.9
|
||||
2.1.8
|
||||
2.1.7
|
||||
2.1.6
|
||||
2.1.5
|
||||
2.1.4
|
||||
|
||||
Binary file not shown.
@@ -1,25 +1,26 @@
|
||||
===================
|
||||
Advanced deployment
|
||||
===================
|
||||
=========
|
||||
Deploying
|
||||
=========
|
||||
|
||||
Mayan EDMS should be deployed like any other Django_ project and
|
||||
preferably using virtualenv_. Below are some ways to deploy and use Mayan EDMS.
|
||||
Do not use more than one method.
|
||||
Below are some ways to deploye and use Mayan EDMS. Do use more than one method.
|
||||
|
||||
Being a Django_ and a Python_ project, familiarity with these technologies is
|
||||
recommended to better understand why Mayan EDMS does some of the things it
|
||||
does.
|
||||
OS "bare metal" method
|
||||
======================
|
||||
|
||||
Binary dependencies
|
||||
===================
|
||||
Like other Django based projects Mayan EDMS can be deployed in a wide variety
|
||||
of ways. The method provided below is only a bare minimum example.
|
||||
These instructions are independent of the instructions mentioned in the
|
||||
:doc:`installation` chapter but assume you have already made a test install to
|
||||
test the compatibility of your operating system. These instruction are for
|
||||
Ubuntu 16.10.
|
||||
|
||||
Ubuntu
|
||||
------
|
||||
Switch to superuser::
|
||||
|
||||
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
|
||||
requirements using::
|
||||
sudo -i
|
||||
|
||||
apt-get install graphviz nginx supervisor redis-server postgresql \
|
||||
Install all system dependencies::
|
||||
|
||||
apt-get install nginx supervisor redis-server postgresql \
|
||||
libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice \
|
||||
libtiff-dev gcc ghostscript gnupg python-dev python-virtualenv \
|
||||
tesseract-ocr poppler-utils -y
|
||||
@@ -28,79 +29,6 @@ If using Ubuntu 16.10 also install GPG version 1 (as GPG version 2 is the new de
|
||||
|
||||
apt-get install gnupg1 -y
|
||||
|
||||
|
||||
Mac OSX
|
||||
-------
|
||||
|
||||
Mayan EDMS is dependent on a number of binary packages and the recommended
|
||||
way is to use a package manager such as `MacPorts <https://www.macports.org/>`_
|
||||
or `Homebrew <http://brew.sh/>`_.
|
||||
|
||||
|
||||
Use MacPorts to install binary dependencies
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
With MacPorts installed run the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo port install python-dev gcc tesseract-ocr unpaper \
|
||||
python-virtualenv ghostscript libjpeg-dev libpng-dev \
|
||||
poppler-utils
|
||||
|
||||
Set the Binary paths
|
||||
********************
|
||||
|
||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs
|
||||
so either you can symlink the binaries installed via MacPorts in /opt/local/bin/
|
||||
to /usr/bin/ with ...
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract
|
||||
|
||||
Alternatively, set the paths in the ``settings/locals.py``
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
||||
|
||||
Or Use Homebrew
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
With Homebrew installed run the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
brew install python gcc tesseract unpaper poppler libpng postgresql
|
||||
|
||||
Set the Binary paths
|
||||
********************
|
||||
|
||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs.
|
||||
You can symlink the binaries installed via brew in /usr/local/bin/
|
||||
to /usr/bin/ with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo ln -s /usr/local/bin/tesseract /usr/bin/tesseract && \
|
||||
sudo ln -s /usr/local/bin/unpaper /usr/bin/unpaper && \
|
||||
sudo ln -s /usr/local/bin/pdftotext /usr/bin/pdftotext && \
|
||||
sudo ln -s /usr/local/bin/gs /usr/bin/gs
|
||||
|
||||
Alternatively, set the paths in the ``settings/locals.py``
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
||||
|
||||
|
||||
Common steps
|
||||
------------
|
||||
Switch to superuser::
|
||||
|
||||
sudo -i
|
||||
|
||||
Change to the directory where the project will be deployed::
|
||||
|
||||
cd /usr/share
|
||||
@@ -266,18 +194,76 @@ Make the installation directory readable and writable by the webserver user::
|
||||
|
||||
chown www-data:www-data /usr/share/mayan-edms -R
|
||||
|
||||
Enable and restart the services [1_]::
|
||||
Restart the services::
|
||||
|
||||
systemctl enable supervisor
|
||||
systemctl restart supervisor
|
||||
systemctl restart nginx
|
||||
|
||||
[1]: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
|
||||
Docker method
|
||||
=============
|
||||
|
||||
Deploy the Docker image stack::
|
||||
|
||||
docker run --name postgres -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /var/lib/postgresql/data -d postgres
|
||||
docker run --name redis -d redis
|
||||
docker run --name mayan-edms -p 80:80 --link postgres:postgres --link redis:redis -e POSTGRES_DB=mayan -e POSTGRES_USER=mayan -e POSTGRES_PASSWORD=mysecretpassword -v /usr/local/lib/python2.7/dist-packages/mayan/media -d mayanedms/monolithic
|
||||
|
||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
||||
with::
|
||||
|
||||
docker logs mayan-edms
|
||||
|
||||
|
||||
Docker Compose method
|
||||
=====================
|
||||
|
||||
Create a file named ``environment`` with the following content::
|
||||
|
||||
POSTGRES_DB=mayan
|
||||
POSTGRES_PASSWORD=mayanpassword
|
||||
POSTGRES_USER=mayan
|
||||
|
||||
Create a file named ``docker-compose.yml`` with the content::
|
||||
|
||||
postgres:
|
||||
env_file:
|
||||
- ./environment
|
||||
image: postgres
|
||||
volumes:
|
||||
- /var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis
|
||||
|
||||
mayan-edms:
|
||||
env_file:
|
||||
- ./environment
|
||||
image: mayanedms/monolithic
|
||||
links:
|
||||
- postgres
|
||||
- redis
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- /usr/local/lib/python2.7/dist-packages/mayan/media
|
||||
|
||||
Launch the entire stack (Postgres, Redis, and Mayan EDMS) using::
|
||||
|
||||
docker-compose -f docker-compose.yml -p mayanedms up -d
|
||||
|
||||
After the Mayan EDMS container finishes initializing (about 5 minutes), it will
|
||||
be available by browsing to http://127.0.0.1. You can inspect the initialization
|
||||
with::
|
||||
|
||||
docker logs mayanedms_mayan-edms_1
|
||||
|
||||
Vagrant method
|
||||
==============
|
||||
Make sure you have Vagrant and a provider properly installed as per
|
||||
https://docs.vagrantup.com/v2/installation/index.html
|
||||
Clone the repository and execute::
|
||||
|
||||
vagrant up production
|
||||
|
||||
.. _Debian: http://www.debian.org/
|
||||
.. _Django: http://www.djangoproject.com/
|
||||
.. _Python: http://www.python.org/
|
||||
.. _SQLite: https://www.sqlite.org/
|
||||
.. _Ubuntu: http://www.ubuntu.com/
|
||||
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
|
||||
.. _1: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
|
||||
|
||||
@@ -16,8 +16,8 @@ request on GitLab_.
|
||||
Project philosophies
|
||||
--------------------
|
||||
|
||||
How to think about Mayan EDMS when doing changes or adding new features;
|
||||
why things are the way they are in Mayan EDMS:
|
||||
How to think about Mayan EDMS when doing changes or adding new features,
|
||||
why things are the way they are in Mayan EDMS.
|
||||
|
||||
- Functionality must be as market/sector independent as possible, code for the
|
||||
95% of use cases.
|
||||
@@ -36,7 +36,7 @@ why things are the way they are in Mayan EDMS:
|
||||
not viable/mature/efficient.
|
||||
- Each app is as independent and self contained as possible. Exceptions, the
|
||||
basic requirements: navigation, permissions, common, main.
|
||||
- If an app is meant to be used by more than one other app, it should be as
|
||||
- If an app is meant to be used by more than one other app it should be as
|
||||
generic as possible in regard to the project and another app will bridge the functionality.
|
||||
|
||||
- Example: since indexing (document_indexing) only applies to documents, the
|
||||
@@ -48,18 +48,12 @@ Coding conventions
|
||||
|
||||
Follow PEP8
|
||||
~~~~~~~~~~~
|
||||
Whenever possible, but don't obsess over things like line length:
|
||||
Whenever possible, but don't obsess over things like line length.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ flake8 --ignore=E501,E128,E122 |less
|
||||
|
||||
To perform automatic PEP8 checks, install flake8's git hook using:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ flake8 --install-hook git
|
||||
|
||||
Imports
|
||||
~~~~~~~
|
||||
|
||||
@@ -109,9 +103,9 @@ Example:
|
||||
)
|
||||
from .models import Index, IndexInstanceNode, DocumentRenameCount
|
||||
|
||||
All local app module imports are in relative form. Local app module name is to
|
||||
All local app module imports are in relative form, local app module name is to
|
||||
be referenced as little as possible, unless required by a specific feature,
|
||||
trick, restriction (e.g., Runtime modification of the module's attributes).
|
||||
trick, restriction, ie: Runtime modification of the module's attributes.
|
||||
|
||||
Incorrect:
|
||||
|
||||
@@ -134,7 +128,7 @@ Dependencies
|
||||
Mayan EDMS apps follow a hierarchical model of dependency. Apps import from
|
||||
their parents or siblings, never from their children. Think plugins. A parent
|
||||
app must never assume anything about a possible existing child app. The
|
||||
documents app and the Document model are the basic entities; they must never
|
||||
documents app and the Document model are the basic entities they must never
|
||||
import anything else. The common and main apps are the base apps.
|
||||
|
||||
|
||||
@@ -209,7 +203,7 @@ Mayan EDMS source is controlled with Git_.
|
||||
|
||||
The project is publicly accessible, hosted and can be cloned from **GitLab** using::
|
||||
|
||||
$ git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
|
||||
|
||||
Git branch structure
|
||||
@@ -241,14 +235,55 @@ Steps to deploy a development version
|
||||
-------------------------------------
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
$ cd mayan-edms
|
||||
$ git checkout development
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
$ pip install -r requirements.txt
|
||||
$ ./manage.py initialsetup
|
||||
$ ./manage.py runserver
|
||||
git clone https://gitlab.com/mayan-edms/mayan-edms.git
|
||||
cd mayan-edms
|
||||
git checkout development
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
./manage.py initialsetup
|
||||
./manage.py runserver
|
||||
|
||||
|
||||
Setting up a development version using Vagrant
|
||||
----------------------------------------------
|
||||
Make sure you have Vagrant and a provider properly installed as per
|
||||
https://docs.vagrantup.com/v2/installation/index.html
|
||||
|
||||
Start and provision a machine using:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant up development
|
||||
|
||||
To launch a standalone development server
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000
|
||||
|
||||
To launch a development server with a celery worker and Redis as broker
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ ./manage.py runserver 0.0.0.0:8000 --settings=mayan.settings.celery_redis
|
||||
|
||||
Then on a separate console launch a celery worker from the same provisioned Vagrant machine:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
vagrant ssh
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ cd ~/mayan-edms/
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ source venv/bin/activate
|
||||
vagrant@vagrant-ubuntu-trusty-32:~$ DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Q checkouts,mailing,uploads,converter,ocr,tools,indexing,metadata -Ofair -B
|
||||
|
||||
|
||||
Contributing changes
|
||||
@@ -326,12 +361,12 @@ The documentation is written in `reStructured Text`_ format, processed with
|
||||
Sphinx_, and resides in the ``docs`` directory. In order to build it, you will
|
||||
first need to install the documentation editing dependencies with::
|
||||
|
||||
$ pip install -r requirements/documentation.txt
|
||||
pip install -r requirements/documentation.txt
|
||||
|
||||
Then, to build an HTML version of the documentation, run the following command
|
||||
from the **docs** directory::
|
||||
|
||||
$ make docs_serve
|
||||
make livehtml
|
||||
|
||||
The generated documentation can be viewed by browsing to http://127.0.0.1:8000
|
||||
or by browsing to the ``docs/_build/html`` directory.
|
||||
@@ -351,18 +386,22 @@ Source file package
|
||||
|
||||
This is the sequence of step used to produce an installable package:
|
||||
|
||||
1. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz)::
|
||||
1. Make sure there are no lingering packages from previous attempts::
|
||||
|
||||
$ make sdist
|
||||
rm dist -R
|
||||
|
||||
2. Do a test install::
|
||||
2. Generate the packaged version (will produce dist/mayan-edms-x.y.z.tar.gz)::
|
||||
|
||||
$ cd /tmp
|
||||
$ virtualenv venv
|
||||
$ source venv/bin/activate
|
||||
$ pip install <path of the Git repository>/dist/mayan-edms-x.y.z.tar.gz
|
||||
$ mayan-edms.py initialsetup
|
||||
$ mayan-edms.py runserver
|
||||
python setup.py sdist
|
||||
|
||||
3. Do a test install::
|
||||
|
||||
cd /tmp
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install <path of the Git repository>/dist/mayan-edms-x.y.z.tar.gz
|
||||
mayan-edms.py initialsetup
|
||||
mayan-edms.py runserver
|
||||
|
||||
|
||||
Wheel package
|
||||
@@ -372,9 +411,9 @@ Wheel package
|
||||
|
||||
$ pip install -r requirements/development.txt
|
||||
|
||||
2. Create wheel package using the makefile::
|
||||
2. Create wheel package using the source file package (Until issue #99 of wheel is fixed: https://bitbucket.org/pypa/wheel/issue/99/cannot-exclude-directory)::
|
||||
|
||||
$ make wheel
|
||||
$ pip wheel --no-index --no-deps --wheel-dir dist dist/mayan-edms-x.y.z.tar.gz
|
||||
|
||||
3. Do a test install::
|
||||
|
||||
@@ -384,60 +423,3 @@ Wheel package
|
||||
$ pip install <path of the Git repository>/dist/mayan_edms-x.y.z-py2-none-any.whl
|
||||
$ mayan-edms.py initialsetup
|
||||
$ mayan-edms.py runserver
|
||||
|
||||
|
||||
Version numbering
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Mayan EDMS uses the Semantic Versioning (http://semver.org/) method to choose
|
||||
version numbers along with Python's PEP-0440 (https://www.python.org/dev/peps/pep-0440/)
|
||||
to format them.
|
||||
|
||||
X.YaN # Alpha release
|
||||
X.YbN # Beta release
|
||||
X.YrcN # Release Candidate
|
||||
X.Y # Final release
|
||||
|
||||
|
||||
Release checklist
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
1. Check for missing migrations::
|
||||
|
||||
$ ./manage.py makemigrations
|
||||
|
||||
2. Synchronize translations::
|
||||
|
||||
$ make translations_pull
|
||||
|
||||
3. Compile translations::
|
||||
|
||||
$ make translations_compile
|
||||
|
||||
4. Write release notes.
|
||||
5. Update changelog.
|
||||
6. Update requirements version in `setup.py`
|
||||
7. Bump version in `mayan/__init__.py`
|
||||
8. Build source package and test::
|
||||
|
||||
$ make test_sdist_via_docker_ubuntu
|
||||
|
||||
9. Build wheel package and test::
|
||||
|
||||
$ make test_whell_via_docker_ubuntu
|
||||
|
||||
10. Tag version::
|
||||
|
||||
$ git tag -a vX.Y.Z -m "Version X.Y.Z"
|
||||
|
||||
11. Push tag upstream::
|
||||
|
||||
$ git push --tags
|
||||
|
||||
12. Build and upload a test release::
|
||||
|
||||
$ make release_test_via_docker_ubuntu
|
||||
|
||||
13. Build and upload a final release::
|
||||
|
||||
$ make release_via_docker_ubuntu
|
||||
|
||||
@@ -126,10 +126,3 @@ dependent support Python 3 then will the project move to fully support Python 3.
|
||||
|
||||
Make sure that the Celery BEAT scheduler is running correctly as it is the element
|
||||
that triggers the periodics tasks.
|
||||
|
||||
**Q: How to do LDAP authentication**
|
||||
|
||||
A sample settings file called ldap_connection_settings.py is included in the
|
||||
contrib/settings/ folder of the repository showing how to setup LDAP
|
||||
authentication.
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Features
|
||||
* Dynamic default values for metadata.
|
||||
|
||||
* Metadata fields can have an initial value, which can be static or determined
|
||||
by a template code snippet provided by the user.
|
||||
by an user provided template code snippet.
|
||||
|
||||
* Documents can be uploaded from different sources.
|
||||
|
||||
@@ -68,7 +68,7 @@ Features
|
||||
|
||||
* Multi page document support.
|
||||
|
||||
* Multiple page PDF and TIFF files are supported.
|
||||
* Multiple page PDFs and TIFFs files are supported.
|
||||
|
||||
* Automatic OCR processing.
|
||||
|
||||
|
||||
@@ -1,22 +1,143 @@
|
||||
============
|
||||
Installation
|
||||
============
|
||||
|
||||
The easiest way to use Mayan EDMS is by using the official Docker_ image.
|
||||
Make sure Docker is properly installed and working before attempting to install
|
||||
Mayan EDMS.
|
||||
Mayan EDMS should be deployed like any other Django_ project and
|
||||
preferably using virtualenv_.
|
||||
|
||||
Hardware requirements
|
||||
---------------------
|
||||
Being a Django_ and a Python_ project, familiarity with these technologies is
|
||||
recommended to better understand why Mayan EDMS does some of the things it
|
||||
does.
|
||||
|
||||
- 2 Gigabytes of RAM (1 Gigabyte if OCR is turned off).
|
||||
- Multiple core CPU (64 bit, faster than 1 GHz recommended).
|
||||
Bellow are the step needed for a test install.
|
||||
|
||||
Docker procedure
|
||||
----------------
|
||||
Binary dependencies
|
||||
===================
|
||||
|
||||
For the complete set of installation, configuration, upgrade, and backup
|
||||
instructions visit the Mayan EDMS Docker Hub page at:
|
||||
https://hub.docker.com/r/mayanedms/mayanedms/
|
||||
Ubuntu
|
||||
------
|
||||
|
||||
If using a Debian_ or Ubuntu_ based Linux distribution, get the executable
|
||||
requirements using::
|
||||
|
||||
sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
|
||||
|
||||
|
||||
.. _Docker: https://www.docker.com/
|
||||
Mac OSX
|
||||
-------
|
||||
|
||||
Mayan EDMS is dependent on a number of binary packages and the recommended
|
||||
way is to use a package manager such as `MacPorts <https://www.macports.org/>`_
|
||||
or `Homebrew <http://brew.sh/>`_.
|
||||
|
||||
|
||||
Use MacPorts to install binary dependencies
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
With MacPorts installed run the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo port install python-dev gcc tesseract-ocr unpaper \
|
||||
python-virtualenv ghostscript libjpeg-dev libpng-dev \
|
||||
poppler-utils
|
||||
|
||||
Set the Binary paths
|
||||
********************
|
||||
|
||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs
|
||||
so either you can symlink the binaries installed via MacPorts in /opt/local/bin/
|
||||
to /usr/bin/ with ...
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo ln -s /opt/local/bin/tesseract /usr/bin/tesseract
|
||||
|
||||
... alternatively set the paths in the ``settings/locals.py``
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
||||
|
||||
Or Use Homebrew
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
With Homebrew installed run the command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
brew install python gcc tesseract unpaper poppler libpng postgresql
|
||||
|
||||
Set the Binary paths
|
||||
********************
|
||||
|
||||
Mayan EDMS by default will look in /usr/bin/ for the binary files it needs
|
||||
so either you can symlink the binaries installed via brew in /usr/local/bin/
|
||||
to /usr/bin/ with ...
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo ln -s /usr/local/bin/tesseract /usr/bin/tesseract && \
|
||||
sudo ln -s /usr/local/bin/unpaper /usr/bin/unpaper && \
|
||||
sudo ln -s /usr/local/bin/pdftotext /usr/bin/pdftotext && \
|
||||
sudo ln -s /usr/local/bin/gs /usr/bin/gs
|
||||
|
||||
... alternatively set the paths in the ``settings/locals.py``
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
LIBREOFFICE_PATH = '/Applications/LibreOffice.app/Contents/MacOS/soffice'
|
||||
|
||||
Actual project installation
|
||||
===========================
|
||||
|
||||
Initialize a ``virtualenv`` to deploy the project:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
virtualenv venv
|
||||
source venv/bin/activate
|
||||
pip install mayan-edms
|
||||
|
||||
By default Mayan EDMS will create a single file SQLite_ database, which makes
|
||||
it very easy to start using Mayan EDMS. Populate the database with the
|
||||
project's schema doing:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
mayan-edms.py initialsetup
|
||||
mayan-edms.py runserver
|
||||
|
||||
Point your browser to http://127.0.0.1:8000. If everything was installed
|
||||
correctly you should see the login screen and panel showing a randomly generated
|
||||
admin password.
|
||||
|
||||
Background tasks and scheduled tasks will not run when using the test server.
|
||||
|
||||
The ``runserver`` command is only meant for testing, do not use in a production
|
||||
server.
|
||||
|
||||
Note that the default IP address, 127.0.0.1, is not accessible from other
|
||||
machines on your network. To make your test server viewable to other
|
||||
machines on the network, use its own IP address (e.g. 192.168.2.1) or 0.0.0.0 or :: (with IPv6 enabled).
|
||||
|
||||
You can provide an IPv6 address surrounded by brackets (e.g. [200a::1]:8000). This will automatically enable IPv6 support.
|
||||
|
||||
Production use
|
||||
==============
|
||||
|
||||
After making sure everything is running correctly, stop the ``runserver`` command.
|
||||
Deploy Mayan EDMS using the webserver of your preference. For more information
|
||||
on deployment instructions and examples, checkout Django's official documentation
|
||||
on the topic https://docs.djangoproject.com/en/1.7/howto/deployment/
|
||||
For a simple production deployment setup follow the instructions in the
|
||||
:doc:`deploying` chapter.
|
||||
|
||||
|
||||
.. _Debian: http://www.debian.org/
|
||||
.. _Django: http://www.djangoproject.com/
|
||||
.. _Download: https://github.com/mayan-edms/mayan-edms/archives/master
|
||||
.. _Python: http://www.python.org/
|
||||
.. _SQLite: https://www.sqlite.org/
|
||||
.. _Ubuntu: http://www.ubuntu.com/
|
||||
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
|
||||
|
||||
@@ -2,73 +2,101 @@
|
||||
Roadmap
|
||||
=======
|
||||
|
||||
- Workflow:
|
||||
- Goals for version 2.2:
|
||||
|
||||
- Improve workflow system
|
||||
- Workflow indexing support. Accessor already works ``{{ document.workflows.all.0.get_current_state }}``. Index recalculation after workflow transition is missing.
|
||||
- Workflow actions. Predefined actions to be execute on document leaving or entering a state or a transition. Example: "Add to folder X", "Attach tag X".
|
||||
- Add support for state recipients.
|
||||
- Add workflow document inbox notification.
|
||||
|
||||
- Indexing
|
||||
|
||||
- Replace indexing and smart linking template language (use Jinja2 instead of Django's).
|
||||
- Display/find documents by their current workflow state.
|
||||
|
||||
- Distribution:
|
||||
- Goals for version 3.0:
|
||||
|
||||
- Debian packages. Limited success so far using https://github.com/astraw/stdeb.
|
||||
- Replace UI.
|
||||
|
||||
- Notifications:
|
||||
- General goals:
|
||||
|
||||
- Add support for subscribing to a document's events.
|
||||
- Add support for subscribing to a document type events.
|
||||
- Add support for subscribing specific events.
|
||||
- Distribution:
|
||||
|
||||
- OCR:
|
||||
- Debian packages. Limited success so far using https://github.com/astraw/stdeb.
|
||||
|
||||
- Add image preprocessing for OCR. Increase effectiveness of Tesseract.
|
||||
- Downloads:
|
||||
|
||||
- Python 3:
|
||||
- Transition from filetransfer package to django-downloadview. This task was started and the view ``common.generics.SingleObjectDownloadView`` was created. The ``document_signatures`` app is the first app to use it.
|
||||
|
||||
- Complete support for Python3.
|
||||
- Find replacement for pdfminer (Python3 support blocker). Use pdfminer.six (#257).
|
||||
- Notifications:
|
||||
|
||||
- Simple serving:
|
||||
- Add support for subscribing to a document's events.
|
||||
- Add support for subscribing to a document type events.
|
||||
- Add support for subscribing specific events.
|
||||
|
||||
- Provide option to serve Mayan EDMS without a webserver (using Tornado o similar). Work started in branch: ``/feature/tornado``
|
||||
- OCR:
|
||||
|
||||
- Upload wizard:
|
||||
- Add image preprocessing for OCR. Increase effectiveness of Tesseract.
|
||||
- Improve interface with tesseract.
|
||||
- Fix pytesseract shortcomings via upstream patches or re-implement. Move to PyOCR.
|
||||
|
||||
- Make wizard step configurable. Create ``WirzardStep`` class so apps can add their own upload wizard steps, instead of the steps being hardcoded in the sources app.
|
||||
- Add upload wizard step to add the new documents to a folder.
|
||||
- Python 3:
|
||||
|
||||
- Other
|
||||
- Complete support for Python3.
|
||||
- Find replacement for pdfminer (Python3 support blocker). Use pdfminer.six (#257).
|
||||
|
||||
- Use a sequence and not the document upload date to determine the document version sequence. MySQL doesn't store milisecond value in dates and if several version are uploaded in a single second there is no way to know the order or which one is the latests. This is why the document version tests include a 2 second delay. Possible solution: http://schinckel.net/2015/05/17/django-second-autofield/
|
||||
- Include external app Mayan-EXIF into main code.
|
||||
- Convert all views from functions to class based views (CBV).
|
||||
- Increase test coverage.
|
||||
- Mock external services in tests. For example the ``django_GPG`` app key search and receive tests.
|
||||
- Pluggable icon app. Make switching icon set easier.
|
||||
- Reduce dependency on binary executables for a default install.
|
||||
- Find replacement for ``cssmin`` & ``django-compressor``.
|
||||
- Find replacement for ``python-gnupg``. Unstable & inconsistent API.
|
||||
- Google docs integration. Upload document from Google Drive.
|
||||
- Get ``dumpdata`` and ``loaddata`` working flawlessly. Will allow for easier backups, restores and database backend migrations.
|
||||
- Add generic list ordering. ``django.views.generic.list.MultipleObjectMixin`` (https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin) now supports an ``ordering`` parameter.
|
||||
- Add support to convert any document to PDF. https://gitlab.mister-muffin.de/josch/img2pdf
|
||||
- Add support for combining documents.
|
||||
- Add support for splitting documents.
|
||||
- Add new document source to get documents from an URL.
|
||||
- Document overlay support. Such as watermarks. https://gist.github.com/umrashrf/8616550
|
||||
- Add support for metadata mapping files. CSV file containing filename to metadata values mapping, useful for bulk upload and migrations.
|
||||
- Add support for registering widgets to the home screen.
|
||||
- Merge mimetype and converter apps.
|
||||
- Add GPG key generation.
|
||||
- If SourceColumn label is None take description from model. Avoid unnecessary translatable strings.
|
||||
- Metadata widgets (Date, time, timedate).
|
||||
- Datatime widget: https://github.com/smalot/bootstrap-datetimepicker
|
||||
- Separate Event class instances with a parent namespace class: EventNamespace.
|
||||
- Add events for document signing app (uploaded detached signateure, signed document, deleted signature)
|
||||
- A configurable conversion process. Being able to invoke different binaries for file conversion, as opposed to the current libreoffice only solution.
|
||||
- A tool in the admin interface to mass (re)convert the files (basically the page count function, but then applied on all documents).
|
||||
- Find solution so that documents in watched folders are not processed until they are ready. Use case scanning directly to scanned folders.
|
||||
- Simple serving:
|
||||
|
||||
- Provide option to serve Mayan EDMS without a webserver (using Tornado o similar). Work started in branch: ``/feature/tornado``
|
||||
|
||||
- Source code:
|
||||
|
||||
- Implement Developer certificate of origin: http://developercertificate.org/
|
||||
|
||||
- Upload wizard:
|
||||
|
||||
- Make wizard step configurable. Create ``WirzardStep`` class so apps can add their own upload wizard steps, instead of the steps being hardcoded in the sources app.
|
||||
- Add upload wizard step to add the new documents to a folder.
|
||||
|
||||
- Other
|
||||
|
||||
- Use a sequence and not the document upload date to determine the document version sequence. MySQL doesn't store milisecond value in dates and if several version are uploaded in a single second there is no way to know the order or which one is the latests. This is why the document version tests include a 2 second delay. Possible solution: http://schinckel.net/2015/05/17/django-second-autofield/
|
||||
- Include external app Mayan-EXIF into main code.
|
||||
- Convert all views from functions to class based views (CBV).
|
||||
- Increase test coverage.
|
||||
- Mock external services in tests. For example the ``django_GPG`` app key search and receive tests.
|
||||
- Pluggable icon app. Make switching icon set easier.
|
||||
- Reduce dependency on binary executables for a default install.
|
||||
- Find replacement for ``cssmin`` & ``django-compressor``.
|
||||
- Find replacement for ``python-gnupg``. Unstable & inconsistent API.
|
||||
- Google docs integration. Upload document from Google Drive.
|
||||
- Get ``dumpdata`` and ``loaddata`` working flawlessly. Will allow for easier backups, restores and database backend migrations.
|
||||
- Make more view asynchronous:
|
||||
|
||||
- trash can emptying.
|
||||
- document delete view.
|
||||
|
||||
- Add support for loading settings from environment variables, not just settings/local.py.
|
||||
- Add generic list ordering. ``django.views.generic.list.MultipleObjectMixin`` (https://docs.djangoproject.com/en/1.8/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin) now supports an ``ordering`` parameter.
|
||||
- Workaround GitLab CI MySQL test errors. GitLab MySQL's container doesn't support UTF-8 content.
|
||||
- Add support for downloading the OCR content as a text file.
|
||||
- Add support to convert any document to PDF. https://gitlab.mister-muffin.de/josch/img2pdf
|
||||
- Add support for combining documents.
|
||||
- Add support for splitting documents.
|
||||
- Add task viewer.
|
||||
- Add new document source to get documents from an URL.
|
||||
- Document overlay support. Such as watermarks. https://gist.github.com/umrashrf/8616550
|
||||
- Add support for metadata mapping files. CSV file containing filename to metadata values mapping, useful for bulk upload and migrations.
|
||||
- Add support for registering widgets to the home screen.
|
||||
- Merge mimetype and converter apps.
|
||||
- Add entry in About menu to check latest Mayan EDMS version via PyPI.
|
||||
- Add GPG key generation.
|
||||
- Add documentation section on editing the settings/local.py file.
|
||||
- Add documentation section with warning about using runserver.
|
||||
- Replace ``urlpatterns = patterns( ''``, with Python lists. Django recommendation for post 1.7.
|
||||
- If SourceColumn label is None take description from model. Avoid unnecessary translatable strings.
|
||||
- Metadata widgets (Date, time, timedate).
|
||||
- Datatime widget: https://github.com/smalot/bootstrap-datetimepicker
|
||||
- Separate Event class instances with a parent namespace class: EventNamespace.
|
||||
- Add events for document signing app (uploaded detached signateure, signed document, deleted signature)
|
||||
- A configurable conversion process. Being able to invoke different binaries for file conversion, as opposed to the current libreoffice only solution.
|
||||
- A tool in the admin interface to mass (re)convert the files (basically the page count function, but then applied on all documents).
|
||||
- Find solution so that documents in watched folders are not processed until they are ready. Use case scanning directly to scanned folders.
|
||||
|
||||
@@ -10,9 +10,3 @@ the directory: ``/usr/share/mayan-edms/mayan/settings/local.py``.
|
||||
For a list of all the configuration options, go to "Setup" then "Settings" on
|
||||
your browser. This is also a good place to check if your overrided setting
|
||||
option value in your ``local.py`` file is being interpreted correctly.
|
||||
|
||||
Settings can also be changed via environment variables by prepending the string
|
||||
"MAYAN_" to the configuration name. For example, to change the number of documents
|
||||
displayed per page (COMMON_PAGINATE_BY, by default 40), use::
|
||||
|
||||
MAYAN_COMMON_PAGINATE_BY=10
|
||||
|
||||
@@ -2,20 +2,21 @@
|
||||
Transformations
|
||||
===============
|
||||
|
||||
Transformations are persistent manipulations to the previews of the stored
|
||||
documents. For example: a scanning equipment may only produce landscape PDFs.
|
||||
In this case a useful transformation for that document source would be to rotate
|
||||
all scanned documents by 270 degrees after being uploaded. By adding this
|
||||
transformation to the Mayan EDMS source that is connected to the scanner, all
|
||||
pages scanned via that source will inherit the transformation as they are
|
||||
created. The result is that whenever a document is uploaded from that scanner,
|
||||
it will appear in portrait orientation, instead of landscape orientation.
|
||||
Transformation are persistent manipulations to the previews of the stored
|
||||
documents. For example: a scanning equipment may only produce landscape PDFs.
|
||||
In this case an useful transformation for that document source would be to
|
||||
rotate all documents scanned by 270 degrees after being uploaded, this way
|
||||
whenever a document is uploaded from that scanner it will appear in portrait
|
||||
orientation. In this case add a this transformation to the Mayan EDMS source
|
||||
that is connected to that device this way all pages scanned via that source
|
||||
with inherit the transformation as they are created.
|
||||
|
||||
Transformations can also be added to existing documents by clicking on a
|
||||
document's page and then clicking on "transformations". In this view the Actions
|
||||
menu will have a new option that reads "Create new transformation". Currently,
|
||||
the available transformations are: rotation, zoom, crop, and resize. Once the
|
||||
document image has been corrected, resubmit it for OCR for improved results.
|
||||
Transformations can also be added to existing documents, by clicking on a
|
||||
document's page, then clicking on "transformations". In this view the Actions
|
||||
menu will have a new option that reads "Create new transformation". At the
|
||||
moment the rotation, zoom, crop, and resize transformations are available.
|
||||
Once the document image has been corrected resubmit it for OCR for improved
|
||||
results.
|
||||
|
||||
Transformations are not destructive and do not physically modify the document
|
||||
Transformations are not destructive and do not physically modify the document
|
||||
file, they just modify the document's graphical representation.
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
import django
|
||||
from django.conf import settings
|
||||
from django.template import Template, Context
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
REQUIREMENTS_FILE = 'requirements.txt'
|
||||
SETUP_TEMPLATE = 'setup.py.tmpl'
|
||||
|
||||
|
||||
def get_requirements(base_directory, filename):
|
||||
result = []
|
||||
|
||||
with open(os.path.join(base_directory, filename)) as file_object:
|
||||
for line in file_object:
|
||||
if line.startswith('-r'):
|
||||
line = line.split('\n')[0][3:]
|
||||
directory, filename = os.path.split(line)
|
||||
result.extend(
|
||||
get_requirements(
|
||||
base_directory=os.path.join(base_directory, directory), filename=filename
|
||||
)
|
||||
)
|
||||
elif not line.startswith('\n'):
|
||||
result.append(line.split('\n')[0])
|
||||
|
||||
return result
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mayan.settings')
|
||||
django.setup()
|
||||
|
||||
requirements = get_requirements(
|
||||
base_directory=BASE_DIR, filename=REQUIREMENTS_FILE
|
||||
)
|
||||
|
||||
with open(SETUP_TEMPLATE) as file_object:
|
||||
template = file_object.read()
|
||||
result = Template(template).render(
|
||||
context=Context({'requirements': requirements})
|
||||
)
|
||||
|
||||
with open('setup.py', 'w') as file_object:
|
||||
file_object.write(result)
|
||||
@@ -1,8 +1,8 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
__title__ = 'Mayan EDMS'
|
||||
__version__ = '2.7.2'
|
||||
__build__ = 0x020702
|
||||
__version__ = '2.1.6'
|
||||
__build__ = 0x020106
|
||||
__author__ = 'Roberto Rosario'
|
||||
__author_email__ = 'roberto.rosario@mayan-edms.com'
|
||||
__description__ = 'Free Open Source Electronic Document Management System'
|
||||
|
||||
@@ -1,250 +0,0 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from rest_framework import generics
|
||||
|
||||
from permissions import Permission
|
||||
|
||||
from .models import AccessControlList
|
||||
from .permissions import permission_acl_edit, permission_acl_view
|
||||
from .serializers import (
|
||||
AccessControlListPermissionSerializer, AccessControlListSerializer,
|
||||
WritableAccessControlListPermissionSerializer,
|
||||
WritableAccessControlListSerializer
|
||||
)
|
||||
|
||||
|
||||
class APIObjectACLListView(generics.ListCreateAPIView):
|
||||
def get(self, *args, **kwargs):
|
||||
"""
|
||||
Returns a list of all the object's access control lists
|
||||
"""
|
||||
|
||||
return super(APIObjectACLListView, self).get(*args, **kwargs)
|
||||
|
||||
def get_content_object(self):
|
||||
content_type = get_object_or_404(
|
||||
ContentType, app_label=self.kwargs['app_label'],
|
||||
model=self.kwargs['model']
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
)
|
||||
|
||||
if self.request.method == 'GET':
|
||||
permission_required = permission_acl_view
|
||||
else:
|
||||
permission_required = permission_acl_edit
|
||||
|
||||
try:
|
||||
Permission.check_permissions(
|
||||
self.request.user, permissions=(permission_required,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
AccessControlList.objects.check_access(
|
||||
permission_required, self.request.user, content_object
|
||||
)
|
||||
|
||||
return content_object
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_content_object().acls.all()
|
||||
|
||||
def get_serializer_context(self):
|
||||
"""
|
||||
Extra context provided to the serializer class.
|
||||
"""
|
||||
|
||||
return {
|
||||
'content_object': self.get_content_object(),
|
||||
'format': self.format_kwarg,
|
||||
'request': self.request,
|
||||
'view': self
|
||||
}
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.request.method == 'GET':
|
||||
return AccessControlListSerializer
|
||||
else:
|
||||
return WritableAccessControlListSerializer
|
||||
|
||||
def post(self, *args, **kwargs):
|
||||
"""
|
||||
Create a new access control list for the selected object.
|
||||
"""
|
||||
|
||||
return super(APIObjectACLListView, self).post(*args, **kwargs)
|
||||
|
||||
|
||||
class APIObjectACLView(generics.RetrieveDestroyAPIView):
|
||||
serializer_class = AccessControlListSerializer
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
"""
|
||||
Delete the selected access control list.
|
||||
"""
|
||||
|
||||
return super(APIObjectACLView, self).delete(*args, **kwargs)
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
"""
|
||||
Returns the details of the selected access control list.
|
||||
"""
|
||||
|
||||
return super(APIObjectACLView, self).get(*args, **kwargs)
|
||||
|
||||
def get_content_object(self):
|
||||
if self.request.method == 'GET':
|
||||
permission_required = permission_acl_view
|
||||
else:
|
||||
permission_required = permission_acl_edit
|
||||
|
||||
content_type = get_object_or_404(
|
||||
ContentType, app_label=self.kwargs['app_label'],
|
||||
model=self.kwargs['model']
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
)
|
||||
|
||||
try:
|
||||
Permission.check_permissions(
|
||||
self.request.user, permissions=(permission_required,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
AccessControlList.objects.check_access(
|
||||
permission_required, self.request.user, content_object
|
||||
)
|
||||
|
||||
return content_object
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_content_object().acls.all()
|
||||
|
||||
|
||||
class APIObjectACLPermissionListView(generics.ListCreateAPIView):
|
||||
def get(self, *args, **kwargs):
|
||||
"""
|
||||
Returns the access control list permission list.
|
||||
"""
|
||||
|
||||
return super(
|
||||
APIObjectACLPermissionListView, self
|
||||
).get(*args, **kwargs)
|
||||
|
||||
def get_acl(self):
|
||||
return get_object_or_404(
|
||||
self.get_content_object().acls, pk=self.kwargs['pk']
|
||||
)
|
||||
|
||||
def get_content_object(self):
|
||||
content_type = get_object_or_404(
|
||||
ContentType, app_label=self.kwargs['app_label'],
|
||||
model=self.kwargs['model']
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
)
|
||||
|
||||
try:
|
||||
Permission.check_permissions(
|
||||
self.request.user, permissions=(permission_acl_view,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
AccessControlList.objects.check_access(
|
||||
permission_acl_view, self.request.user, content_object
|
||||
)
|
||||
|
||||
return content_object
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_acl().permissions.all()
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.request.method == 'GET':
|
||||
return AccessControlListPermissionSerializer
|
||||
else:
|
||||
return WritableAccessControlListPermissionSerializer
|
||||
|
||||
def get_serializer_context(self):
|
||||
return {
|
||||
'acl': self.get_acl(),
|
||||
'format': self.format_kwarg,
|
||||
'request': self.request,
|
||||
'view': self
|
||||
}
|
||||
|
||||
def post(self, *args, **kwargs):
|
||||
"""
|
||||
Add a new permission to the selected access control list.
|
||||
"""
|
||||
|
||||
return super(
|
||||
APIObjectACLPermissionListView, self
|
||||
).post(*args, **kwargs)
|
||||
|
||||
|
||||
class APIObjectACLPermissionView(generics.RetrieveDestroyAPIView):
|
||||
lookup_url_kwarg = 'permission_pk'
|
||||
serializer_class = AccessControlListPermissionSerializer
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
"""
|
||||
Remove the permission from the selected access control list.
|
||||
"""
|
||||
|
||||
return super(
|
||||
APIObjectACLPermissionView, self
|
||||
).delete(*args, **kwargs)
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
"""
|
||||
Returns the details of the selected access control list permission.
|
||||
"""
|
||||
|
||||
return super(
|
||||
APIObjectACLPermissionView, self
|
||||
).get(*args, **kwargs)
|
||||
|
||||
def get_acl(self):
|
||||
return get_object_or_404(
|
||||
self.get_content_object().acls, pk=self.kwargs['pk']
|
||||
)
|
||||
|
||||
def get_content_object(self):
|
||||
content_type = get_object_or_404(
|
||||
ContentType, app_label=self.kwargs['app_label'],
|
||||
model=self.kwargs['model']
|
||||
)
|
||||
|
||||
content_object = get_object_or_404(
|
||||
content_type.model_class(), pk=self.kwargs['object_pk']
|
||||
)
|
||||
|
||||
try:
|
||||
Permission.check_permissions(
|
||||
self.request.user, permissions=(permission_acl_view,)
|
||||
)
|
||||
except PermissionDenied:
|
||||
AccessControlList.objects.check_access(
|
||||
permission_acl_view, self.request.user, content_object
|
||||
)
|
||||
|
||||
return content_object
|
||||
|
||||
def get_queryset(self):
|
||||
return self.get_acl().permissions.all()
|
||||
|
||||
def get_serializer_context(self):
|
||||
return {
|
||||
'acl': self.get_acl(),
|
||||
'format': self.format_kwarg,
|
||||
'request': self.request,
|
||||
'view': self
|
||||
}
|
||||
@@ -4,21 +4,18 @@ from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from common import MayanAppConfig, menu_object, menu_sidebar
|
||||
from navigation import SourceColumn
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
from .links import link_acl_create, link_acl_delete, link_acl_permissions
|
||||
|
||||
|
||||
class ACLsApp(MayanAppConfig):
|
||||
has_tests = True
|
||||
name = 'acls'
|
||||
test = True
|
||||
verbose_name = _('ACLs')
|
||||
|
||||
def ready(self):
|
||||
super(ACLsApp, self).ready()
|
||||
|
||||
APIEndPoint(app=self, version_string='1')
|
||||
|
||||
AccessControlList = self.get_model('AccessControlList')
|
||||
|
||||
SourceColumn(
|
||||
|
||||
@@ -14,40 +14,10 @@ class ModelPermission(object):
|
||||
|
||||
@classmethod
|
||||
def register(cls, model, permissions):
|
||||
from django.contrib.contenttypes.fields import GenericRelation
|
||||
|
||||
cls._registry.setdefault(model, [])
|
||||
for permission in permissions:
|
||||
cls._registry[model].append(permission)
|
||||
|
||||
AccessControlList = apps.get_model(
|
||||
app_label='acls', model_name='AccessControlList'
|
||||
)
|
||||
|
||||
model.add_to_class('acls', GenericRelation(AccessControlList))
|
||||
|
||||
@classmethod
|
||||
def get_classes(cls, as_content_type=False):
|
||||
ContentType = apps.get_model(
|
||||
app_label='contenttypes', model_name='ContentType'
|
||||
)
|
||||
|
||||
if as_content_type:
|
||||
content_type_dictionary = ContentType.objects.get_for_models(
|
||||
*cls._registry.keys()
|
||||
)
|
||||
content_type_ids = [
|
||||
content_type.pk for content_type in content_type_dictionary.values()
|
||||
]
|
||||
|
||||
return ContentType.objects.filter(pk__in=content_type_ids)
|
||||
else:
|
||||
return cls._registry.keys()
|
||||
|
||||
@classmethod
|
||||
def get_for_class(cls, klass):
|
||||
return cls._registry.get(klass, ())
|
||||
|
||||
@classmethod
|
||||
def get_for_instance(cls, instance):
|
||||
StoredPermission = apps.get_model(
|
||||
@@ -66,9 +36,7 @@ class ModelPermission(object):
|
||||
if proxy:
|
||||
permissions.extend(cls._registry.get(proxy))
|
||||
|
||||
pks = [
|
||||
permission.stored_permission.pk for permission in set(permissions)
|
||||
]
|
||||
pks = [permission.stored_permission.pk for permission in set(permissions)]
|
||||
return StoredPermission.objects.filter(pk__in=pks)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
||||
class ACLsBaseException(Exception):
|
||||
"""
|
||||
Base exception for the acls app
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class PermissionNotValidForClass(ACLsBaseException):
|
||||
"""
|
||||
The permission is not one that has been registered for a class using the
|
||||
ModelPermission class.
|
||||
"""
|
||||
pass
|
||||
@@ -35,10 +35,6 @@ link_acl_list = Link(
|
||||
permissions=(permission_acl_view,), text=_('ACLs'), view='acls:acl_list',
|
||||
kwargs=get_kwargs_factory('resolved_object')
|
||||
)
|
||||
link_acl_list_with_icon = Link(
|
||||
icon='fa fa-lock', permissions=(permission_acl_view,), text=_('ACLs'),
|
||||
view='acls:acl_list', kwargs=get_kwargs_factory('resolved_object')
|
||||
)
|
||||
link_acl_create = Link(
|
||||
permissions=(permission_acl_edit,), text=_('New ACL'),
|
||||
view='acls:acl_create', kwargs=get_kwargs_factory('resolved_object')
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: ar\n"
|
||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "الصلاحيات"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Insufficient access."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "لا شيء"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Edit ACLs"
|
||||
msgid "View ACLs"
|
||||
msgstr "View ACLs"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Roles"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: bg\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Разрешения"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Недостатъчен достъп."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "достъп вписване"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "достъп вписвания"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Няма"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Редактиране на контролни списъци за до
|
||||
msgid "View ACLs"
|
||||
msgstr "Преглед на контролни списъци за достъп"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Роли"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: bs_BA\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"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Dozvole"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Nedovoljne dozvole."
|
||||
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
msgid "Access entry"
|
||||
msgstr "Pristupni unos"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Pristupni unosi"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Nijedno"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Izmjeniti ACLs"
|
||||
msgid "View ACLs"
|
||||
msgstr "Pregledati ACLs"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Liste kontrole pristupa (ACL) za: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Role"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr ""
|
||||
msgid "View ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,16 +3,16 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Berny <berny@bernhard-marx.de>, 2015
|
||||
# Jesaja Everling <jeverling@gmail.com>, 2017
|
||||
# Tobias Paepke <tobias.paepke@paepke.net>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-31 18:56+0000\n"
|
||||
"Last-Translator: Tobias Paepke <tobias.paepke@paepke.net>\n"
|
||||
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-edms/language/de_DE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -20,45 +20,47 @@ msgstr ""
|
||||
"Language: de_DE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Zugriffsberechtigungen"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Rolle"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Löschen"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Neue Berechtigung"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Fehlende Berechtigung"
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Berechtigungseintrag"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Berechtigungseinträge"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Berechtigungen \"%(permissions)s\" zur Rolle \"%(role)s\" für \"%(object)s\""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Keine"
|
||||
|
||||
@@ -74,102 +76,156 @@ msgstr "Zugriffsberechtigungen bearbeiten"
|
||||
msgid "View ACLs"
|
||||
msgstr "Zugriffsberechtigungen anzeigen"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "API URL für die Liste der Berechtigungen dieser ACL"
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "API URL für die Berechtigung in Relation zur ACL zu der sie zugeordnet ist. Diese URL unterscheidet sich von der normalen Workflow URL."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Primary key der zur ACL hinzuzufügenden Berechtigung."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Keine solche Berechtigung: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Durch Komma getrennte Liste von Primary Keys der zu dieser ACL hinzuzufügenden Berechtigungen."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Primary Key der Rolle die dieser ACL zugeordnet ist."
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Neue Zugriffsberechtigung für %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "ACL \"%s\" löschen"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Zugriffsberechtigungen für %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Verfügbare Berechtigungen"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Erteilte Berechtigungen"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Berechtigungen von Rolle \"%(role)s\" für \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Rollen"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -1,171 +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.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-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"
|
||||
"Language: \n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2012-02-02 18:20+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: English (http://www.transifex.com/projects/p/mayan-edms/"
|
||||
"language/en/)\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
#, fuzzy
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
msgstr "permissions"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#, fuzzy
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
msgstr "Roles"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#, fuzzy
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
msgstr "View ACLs"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Insufficient access."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
#, fuzzy
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
msgstr "access entry"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
#, fuzzy
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
msgstr "access entries"
|
||||
|
||||
#: models.py:59
|
||||
#, python-format
|
||||
#: models.py:48
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: permissions.py:7
|
||||
msgid "Access control lists"
|
||||
msgstr ""
|
||||
msgstr "Access control lists"
|
||||
|
||||
#: permissions.py:10
|
||||
msgid "Edit ACLs"
|
||||
msgstr ""
|
||||
msgstr "Edit ACLs"
|
||||
|
||||
#: permissions.py:13
|
||||
msgid "View ACLs"
|
||||
msgstr ""
|
||||
msgstr "View ACLs"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#, python-format
|
||||
#: views.py:78
|
||||
#, fuzzy, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
msgstr "access control lists for: %s"
|
||||
|
||||
#: views.py:101
|
||||
#, python-format
|
||||
#: views.py:109
|
||||
#, fuzzy, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
msgstr "Default ACLs"
|
||||
|
||||
#: views.py:151
|
||||
#, fuzzy, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "access control lists for: %s"
|
||||
|
||||
#: views.py:162
|
||||
#, fuzzy
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
msgstr "has permission"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
#, fuzzy
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
msgstr "has permission"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid "Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
#, fuzzy
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#, fuzzy
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#, fuzzy
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#, fuzzy
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,15 +3,16 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# jmcainzos <jmcainzos@vodafone.es>, 2015
|
||||
# Roberto Rosario, 2015
|
||||
# Roberto Rosario, 2015-2017
|
||||
# Roberto Rosario, 2015-2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:38+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:38+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/rosarior/mayan-edms/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -20,45 +21,47 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "LCAs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permisos"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Rol"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nueva LCA"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr "Acceso insuficiente para: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Acceso insuficiente."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Entrada de acceso"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Entradas de acceso"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Permisos \"%(permissions)s\" para el rol \"%(role)s\" para \"%(object)s\""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Ninguno"
|
||||
|
||||
@@ -74,102 +77,156 @@ msgstr "Editar LCAs"
|
||||
msgid "View ACLs"
|
||||
msgstr "Ver LCAs"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "URL de la API que apunta a la lista de permisos para esta lista de control de acceso."
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "URL de la API que apunta a un permiso en relación con la lista de control de acceso a la que está conectado. Esta URL es diferente de la URL canónica de flujo de trabajo."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Llave primaria del nuevo permiso para conceder a la lista de control de acceso."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "No existe el permiso: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Lista separada por comas de las llaves primarias de permisos para conceder a esta lista de control de acceso."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Las llaves primarias de los roles a los que se vincula esta lista de control de acceso."
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nueva lista de control de acceso para: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Borrar LCA: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Listas de control de acceso para: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Permisos disponibles"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Permisos otorgados"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Permisos del rol \"%(role)s\" para \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Los permisos inactivos se heredan de un objeto precedente."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr "Tipo de objeto"
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr "Tipo de objeto para el que se modificará el acceso."
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr "ID de objeto"
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr "Identificador numérico del objeto para el que se modificará el acceso."
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Roles"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr "Roles cuyo acceso será modificado."
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr "Permisos para otorgar/revocar a los roles para el objeto seleccionado anteriormente."
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr "Otorgar acceso"
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr "Revocar acceso"
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,13 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Nima Towhidi <nima.towhidi@gmail.com>, 2017
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,45 +18,47 @@ msgstr ""
|
||||
"Language: fa\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "مجوزها"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "نقش"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "حذف"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "دسترسی ناکافی"
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "ورودی دسترسی"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "ورودیهای دسترسی"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "هیچکدام."
|
||||
|
||||
@@ -72,102 +74,156 @@ msgstr "ویرایش دسترسی ها"
|
||||
msgid "View ACLs"
|
||||
msgstr "دیدن دسترسی ها"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "لیست کنترل دسترسی ها برای : %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "مجوزهای موجود"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "مجوزهای داده شده"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "مجوزهای غیرفعال، از شیء بالاتر به ارث رسیدهاند."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "نقش ها"
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,14 +3,14 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2016-2017
|
||||
# Translators:
|
||||
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2015
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,45 +19,47 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Droits"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Rôle"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Suppression"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nouveau droit"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "droit d'accès insuffisant."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Entrée d'accès"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Entrées d'accès"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Permissions \"%(permissions)s\" du rôle \"%(role)s\" pour \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
@@ -73,102 +75,156 @@ msgstr "Editer les droits"
|
||||
msgid "View ACLs"
|
||||
msgstr "voir les droits d'accès"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "URL de l'API indiquant la liste des autorisations pour cette liste de contrôle d'accès."
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "URL de l'API pointant vers une autorisation en relation avec la liste de contrôle d'accès à laquelle elle est attachée. Cette URL est différente de l'URL du flux de travail canonique."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Clé principale de la nouvelle autorisation pour autoriser à la liste de contrôle d'accès."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Aucune autorisation de ce genre: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Liste séparée par des virgules des clés primaires d'autorisation pour autoriser à cette liste de contrôle d'accès."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Clés primaires du rôle auquel cette liste de contrôle d'accès se rattache."
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nouvelle liste de contrôle d'accès pour: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Supprimer le droit: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Liste des contrôle d'accès pour: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Permissions disponibles"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Permissions autorisées"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Permission du rôle \"%(role)s\" pour \"%(object)s\"@"
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "La désactivation de permission est hérité de l'objet parent"
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Rôles"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,156 +18,212 @@ msgstr ""
|
||||
"Language: hu\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACL-ek"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Engedélyek"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Szerepkör"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Törlés"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Hozzáférési bejegyzés"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Hozzáférési bejegyzések"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Semmi"
|
||||
|
||||
#: permissions.py:7
|
||||
msgid "Access control lists"
|
||||
msgstr "Hozzáférési lista"
|
||||
msgstr ""
|
||||
|
||||
#: permissions.py:10
|
||||
msgid "Edit ACLs"
|
||||
msgstr "Hozzáférési listák szerkesztése"
|
||||
msgstr ""
|
||||
|
||||
#: permissions.py:13
|
||||
msgid "View ACLs"
|
||||
msgstr "Hozzáférési listák megtekintése"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Nincs ilyen jogosúltság: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Hozzáférési lista a: %s -hoz"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Elérhető jogosúltságok"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Élvezett jogosúltságok"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Szerepkörök"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: id\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr ""
|
||||
msgid "View ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,14 +3,15 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Marco Camplese <marco.camplese.mc@gmail.com>, 2016-2017
|
||||
# Translators:
|
||||
# Marco Camplese <marco.camplese.mc@gmail.com>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-30 21:18+0000\n"
|
||||
"Last-Translator: Marco Camplese <marco.camplese.mc@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/language/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -18,45 +19,47 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permessi"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Ruolo"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Cancella"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nuova ACL"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Accesso insufficiente."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Voce di accesso"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Voci di accesso"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Permessi \"%(permissions)s\" del ruolo \"%(role)s\" per \"%(object)s\""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Nessuna "
|
||||
|
||||
@@ -72,102 +75,156 @@ msgstr "Modifica ACL"
|
||||
msgid "View ACLs"
|
||||
msgstr "Visualizza ACL"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "URL delle API che punta alla lista controllo accessi"
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "API URL che indica una autorizzazione in relazione all'elenco di controllo di accesso a cui è associato. Questo URL è diverso dall'originale canonico URL."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Chiavi primarie del permesso per garantire la lista controllo accessi"
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Nessun permesso: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Lista separata da virgole delle chiavi primarie dei permessi per garantire l'accesso alle liste di controllo"
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Chiavi primarie del ruolo a cui si lega la lista controllo accessi"
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nuova lista di controllo accesso per: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Cancella ACL: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Lista dei permessi d'accesso per: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Autorizzazioni disponibili "
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Autorizzazioni concesse "
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Permessi del ruolo \"%(role)s\" per \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Il permesso disabilita è ereditato dall'oggetto padre"
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Ruoli "
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,15 +3,16 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Evelijn Saaltink <evelijnsaaltink@gmail.com>, 2016
|
||||
# Justin Albstbstmeijer <justin@albstmeijer.nl>, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 12:43+0000\n"
|
||||
"Last-Translator: Evelijn Saaltink <evelijnsaaltink@gmail.com>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-edms/language/nl_NL/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -19,45 +20,47 @@ msgstr ""
|
||||
"Language: nl_NL\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Authorisatielijsten"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permissies"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Gebruikersrol"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Verwijder"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nieuwe authorisatielijst"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Permissie is ontoereikend"
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Authorisatie invoer"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Authorisaties invoer"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Permissies \"%(permissions)s\" voor gebruikersrol \"%(role)s\" voor \"%(object)s\""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Geen"
|
||||
|
||||
@@ -73,102 +76,156 @@ msgstr "Bewerk authorisatielijsten"
|
||||
msgid "View ACLs"
|
||||
msgstr "Bekijk authorisatielijsten"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nieuwe authorisatielijsten voor: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Verwijder authorisatielijst: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Authorisatielijsten voor: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Beschikbare permissies"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Toegekende permissies"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Rol \"%(role)s\" permissies voor \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Uitgeschakelde permissies zijn geërfd van een parent object."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Gebruikersrollen"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,61 +3,63 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Wojtek Warczakowski <w.warczakowski@gmail.com>, 2016
|
||||
# Wojtek Warczakowski <w.warczakowski@gmail.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Listy ACL"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Uprawnienia"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Rola"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nowa lista ACL"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Niewystarczający dostęp."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Zgłoszenie dostępu"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Zgłoszenia dostępu"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Uprawnienia \"%(permissions)s\" dla roli \"%(role)s\" dotyczące \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Brak"
|
||||
|
||||
@@ -73,102 +75,156 @@ msgstr "Edytuj listy ACL"
|
||||
msgid "View ACLs"
|
||||
msgstr "Przeglądaj listy ACL"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "API URL prowadzący do listy uprawnień dla listy kontroli dostępu."
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "API URL prowadzący do uprawnienia w liście kontroli dostępu, w której uprawnienie występuje. "
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Klucz główny nowego uprawnienia dla udzielenia dostępu do listy kontroli dostępu."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Brak uprawnienia: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Rozdzielona przecinkami lista uprawnień kluczy głównych dla udzielenia dostępu do listy kontroli dostępu."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Klucze główne roli, z którymi związana jest ta lista kontroli dostępu."
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nowe listy ACL dla: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Usuń listę ACL: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Listy ACL dla: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Dostępne uprawnienia"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Przyznane uprawnienia"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Uprawnienia roli \"%(role)s\" dla obiektu \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Role"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: pt\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACL's"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permissões"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Acesso insuficiente."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Nenhum"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Editar ACL's"
|
||||
msgid "View ACLs"
|
||||
msgstr "Ver ACL's"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Funções"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,15 +3,15 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# Aline Freitas <aline@alinefreitas.com.br>, 2016
|
||||
# Jadson Ribeiro <jadsonbr@outlook.com.br>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-11-17 22:31+0000\n"
|
||||
"Last-Translator: Aline Freitas <aline@alinefreitas.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-edms/language/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -19,45 +19,47 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Controle Acesso \"ACLs\""
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permissões"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Regras"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Nova regra"
|
||||
msgstr "Nova ACL"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Acesso insuficiente."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Acesso entrada"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Entradas de acesso"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "Permissões \"%(permissions)s\" do papel \"%(role)s\" para \"%(object)s\""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Nenhum"
|
||||
|
||||
@@ -67,108 +69,162 @@ msgstr "Listas de controle de acesso"
|
||||
|
||||
#: permissions.py:10
|
||||
msgid "Edit ACLs"
|
||||
msgstr "Editar regras"
|
||||
msgstr "Editar ACLs"
|
||||
|
||||
#: permissions.py:13
|
||||
msgid "View ACLs"
|
||||
msgstr "Visualizar regras"
|
||||
msgstr "Visualizar ACLs"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "API URL apontando para a lista de permissões para esta lista de controle de acesso."
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "API URL apontando para uma permissão em relação à lista de controle de acesso à qual ela está anexada. Esse URL é diferente do URL de fluxo de trabalho canônico."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Chave primária da nova permissão para conceder à lista de controle de acesso."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Sem permissão: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Lista de chaves primárias de permissão separadas por vírgulas para conceder a esta lista de controle de acesso."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "As chaves primárias da função a que esta lista de controle de acesso se liga."
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Nova lista de controle de acesso para: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Apagar ACL: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "listas de controle de acesso para: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Permissões disponíveis"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Permissões outorgadas"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Permissões do papel \"%(role)s\" para \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "As permissões inativas foram herdadas de um objeto precedente."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Regras"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: ro_RO\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACL-uri"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Permisiuni"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Șterge"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Accesul insuficient."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Nici unul"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Editați ACL-uri"
|
||||
msgid "View ACLs"
|
||||
msgstr "Vezi ACL-uri"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Roluri"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,13 +3,14 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
# lilo.panic, 2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,45 +19,47 @@ msgstr ""
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "СУДы"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Разрешения"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr "Роль"
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr "Создать СУД"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Неполный доступ."
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Элемент доступа"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Элементы доступа"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Пусто"
|
||||
|
||||
@@ -72,102 +75,156 @@ msgstr "Редактировать СУДы"
|
||||
msgid "View ACLs"
|
||||
msgstr "Просмотр СУДов"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Новый СУД для: %s"
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Удалить СУД: %s"
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "СУДы для: %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr "Доступные разрешения"
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr "Предоставленные разрешения"
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "Права роли \"%(role)s\" для \"%(object)s\""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Отключенные права наследуются от родительского объекта."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Роли"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-11-17 08:58+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: sl_SI\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "Pravice"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "Pravice"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "Nezadosten dostop"
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "Vstopna točka"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "Vstopne točke"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "Brez"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "Uredi dostopne pravice"
|
||||
msgid "View ACLs"
|
||||
msgstr "Preglej dostopne pravice"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "Dostopne pravice za %s"
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Vloge"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -1,173 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# serhatcan77 <serhat_can@yahoo.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Turkish (Turkey) (http://www.transifex.com/rosarior/mayan-edms/language/tr_TR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: tr_TR\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
msgid "ACLs"
|
||||
msgstr "Erişim Kontrol Listeleri"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
msgid "Permissions"
|
||||
msgstr "İzinler"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
msgid "Role"
|
||||
msgstr "Rol"
|
||||
|
||||
#: links.py:31
|
||||
msgid "Delete"
|
||||
msgstr "Sil"
|
||||
|
||||
#: links.py:43
|
||||
msgid "New ACL"
|
||||
msgstr "Yeni Erişim Kontrol Listesi"
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
msgid "Access entry"
|
||||
msgstr "Erişim Girişi"
|
||||
|
||||
#: models.py:55
|
||||
msgid "Access entries"
|
||||
msgstr "Erişim Girişleri"
|
||||
|
||||
#: models.py:59
|
||||
#, python-format
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr "\"%(permissions)s\", \"%(object)s\" için \"%(role)s\" rolüne izinler"
|
||||
|
||||
#: models.py:76
|
||||
msgid "None"
|
||||
msgstr "Yok"
|
||||
|
||||
#: permissions.py:7
|
||||
msgid "Access control lists"
|
||||
msgstr "Erişim Kontrol Listesi"
|
||||
|
||||
#: permissions.py:10
|
||||
msgid "Edit ACLs"
|
||||
msgstr "Erişim Kontrolünü Düzenle"
|
||||
|
||||
#: permissions.py:13
|
||||
msgid "View ACLs"
|
||||
msgstr "Erişim Kontrolünü Görüntüle"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr "Bu erişim kontrol listesinin izin listesine işaret eden API URL'si."
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr "API URL'si, bağlı olduğu erişim kontrol listesiyle ilgili olarak bir izne işaret ediyor. Bu URL, kurallı iş akışı URL'sinden farklı."
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr "Erişim kontrol listesine yeni izin verilmesi için birincil anahtar."
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr "Böyle bir izin yok: %s"
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr "Bu erişim denetim listesine vermek üzere birincil anahtarların virgülle ayrılmış listesi."
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr "Bu erişim denetim listesinin bağlandığı role ait birincil anahtarlar."
|
||||
|
||||
#: views.py:74
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr "Için yeni erişim kontrol listeleri: %s"
|
||||
|
||||
#: views.py:101
|
||||
#, python-format
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr "Erişim Kontrol Listesi sil: %s"
|
||||
|
||||
#: views.py:139
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr "%s için Erişim kontrol listeleri"
|
||||
|
||||
#: views.py:151
|
||||
msgid "Available permissions"
|
||||
msgstr "Kullanılabilir izinler"
|
||||
|
||||
#: views.py:152
|
||||
msgid "Granted permissions"
|
||||
msgstr "İzinler izin verildi"
|
||||
|
||||
#: views.py:207
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr "\"%(role)s\" yetkisi \"%(object)s\" için rol"
|
||||
|
||||
#: views.py:227
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr "Devre Dışı İzinler üst nesneden devralınır."
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "Roller"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: vi_VN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "ACLs"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "None"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr ""
|
||||
msgid "View ACLs"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr ""
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Mayan EDMS\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-08-27 12:45-0400\n"
|
||||
"PO-Revision-Date: 2017-08-27 16:32+0000\n"
|
||||
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
|
||||
"PO-Revision-Date: 2016-10-28 07:32+0000\n"
|
||||
"Last-Translator: Roberto Rosario\n"
|
||||
"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,45 +18,47 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: apps.py:15 links.py:35 links.py:39
|
||||
#: apps.py:14 links.py:31
|
||||
msgid "ACLs"
|
||||
msgstr "访问控制列表"
|
||||
|
||||
#: apps.py:25 links.py:48 models.py:43 workflow_actions.py:48
|
||||
#: apps.py:22 links.py:40 models.py:36
|
||||
msgid "Permissions"
|
||||
msgstr "权限"
|
||||
|
||||
#: apps.py:29 models.py:47
|
||||
#: apps.py:26 models.py:38
|
||||
#| msgid "Roles"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:31
|
||||
#: links.py:27
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: links.py:43
|
||||
#: links.py:35
|
||||
#| msgid "View ACLs"
|
||||
msgid "New ACL"
|
||||
msgstr ""
|
||||
|
||||
#: managers.py:57 managers.py:86
|
||||
#, python-format
|
||||
msgid "Insufficient access for: %s"
|
||||
msgstr ""
|
||||
#: managers.py:85
|
||||
msgid "Insufficient access."
|
||||
msgstr "权限不足"
|
||||
|
||||
#: models.py:54
|
||||
#: models.py:44
|
||||
msgid "Access entry"
|
||||
msgstr "访问入口"
|
||||
|
||||
#: models.py:55
|
||||
#: models.py:45
|
||||
msgid "Access entries"
|
||||
msgstr "多个访问入口"
|
||||
|
||||
#: models.py:59
|
||||
#: models.py:48
|
||||
#, python-format
|
||||
#| msgid "mission \"%(permission)s\" granted to %(actor)s for %(object)s."
|
||||
msgid "Permissions \"%(permissions)s\" to role \"%(role)s\" for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: models.py:76
|
||||
#: models.py:64
|
||||
msgid "None"
|
||||
msgstr "无"
|
||||
|
||||
@@ -71,102 +74,156 @@ msgstr "编辑访问控制列表"
|
||||
msgid "View ACLs"
|
||||
msgstr "查看访问控制列表"
|
||||
|
||||
#: serializers.py:24 serializers.py:132
|
||||
msgid ""
|
||||
"API URL pointing to the list of permissions for this access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:57
|
||||
msgid ""
|
||||
"API URL pointing to a permission in relation to the access control list to "
|
||||
"which it is attached. This URL is different than the canonical workflow URL."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:87
|
||||
msgid "Primary key of the new permission to grant to the access control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:111 serializers.py:187
|
||||
#, python-format
|
||||
msgid "No such permission: %s"
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:126
|
||||
msgid ""
|
||||
"Comma separated list of permission primary keys to grant to this access "
|
||||
"control list."
|
||||
msgstr ""
|
||||
|
||||
#: serializers.py:138
|
||||
msgid "Primary keys of the role to which this access control list binds to."
|
||||
msgstr ""
|
||||
|
||||
#: views.py:74
|
||||
#: views.py:78
|
||||
#, python-format
|
||||
msgid "New access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:101
|
||||
#: views.py:109
|
||||
#, python-format
|
||||
#| msgid "Default ACLs"
|
||||
msgid "Delete ACL: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:139
|
||||
#: views.py:151
|
||||
#, python-format
|
||||
msgid "Access control lists for: %s"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:151
|
||||
#: views.py:162
|
||||
msgid "Available permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:152
|
||||
#: views.py:163
|
||||
msgid "Granted permissions"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:207
|
||||
#: views.py:222
|
||||
#, python-format
|
||||
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
|
||||
msgstr ""
|
||||
|
||||
#: views.py:227
|
||||
#: views.py:242
|
||||
msgid "Disabled permissions are inherited from a parent object."
|
||||
msgstr ""
|
||||
|
||||
#: workflow_actions.py:25
|
||||
msgid "Object type"
|
||||
msgstr ""
|
||||
#~ msgid "New holder"
|
||||
#~ msgstr "New holder"
|
||||
|
||||
#: workflow_actions.py:28
|
||||
msgid "Type of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Users"
|
||||
#~ msgstr "Users"
|
||||
|
||||
#: workflow_actions.py:34
|
||||
msgid "Object ID"
|
||||
msgstr ""
|
||||
#~ msgid "Groups"
|
||||
#~ msgstr "Groups"
|
||||
|
||||
#: workflow_actions.py:37
|
||||
msgid ""
|
||||
"Numeric identifier of the object for which the access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Special"
|
||||
#~ msgstr "Special"
|
||||
|
||||
#: workflow_actions.py:42
|
||||
msgid "Roles"
|
||||
msgstr "角色"
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "details"
|
||||
|
||||
#: workflow_actions.py:44
|
||||
msgid "Roles whose access will be modified."
|
||||
msgstr ""
|
||||
#~ msgid "Grant"
|
||||
#~ msgstr "grant"
|
||||
|
||||
#: workflow_actions.py:51
|
||||
msgid ""
|
||||
"Permissions to grant/revoke to/from the role for the object selected above."
|
||||
msgstr ""
|
||||
#~ msgid "Revoke"
|
||||
#~ msgstr "revoke"
|
||||
|
||||
#: workflow_actions.py:59
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
#~ msgid "Classes"
|
||||
#~ msgstr "classes"
|
||||
|
||||
#: workflow_actions.py:129
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
#~ msgid "ACLs for class"
|
||||
#~ msgstr "ACLs for class"
|
||||
|
||||
#~ msgid "Permission"
|
||||
#~ msgstr "permissions"
|
||||
|
||||
#~ msgid "Default access entry"
|
||||
#~ msgstr "default access entry"
|
||||
|
||||
#~ msgid "Default access entries"
|
||||
#~ msgstr "default access entries"
|
||||
|
||||
#~ msgid "Creator"
|
||||
#~ msgstr "Creator"
|
||||
|
||||
#~ msgid "Edit class default ACLs"
|
||||
#~ msgstr "Edit class default ACLs"
|
||||
|
||||
#~ msgid "View class default ACLs"
|
||||
#~ msgstr "View class default ACLs"
|
||||
|
||||
#~ msgid "Holder"
|
||||
#~ msgstr "holder"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for %(obj)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for %(obj)s"
|
||||
|
||||
#~ msgid "Namespace"
|
||||
#~ msgstr "namespace"
|
||||
|
||||
#~ msgid "Label"
|
||||
#~ msgstr "label"
|
||||
|
||||
#~ msgid ", "
|
||||
#~ msgstr ", "
|
||||
|
||||
#~ msgid " for %s"
|
||||
#~ msgstr " for %s"
|
||||
|
||||
#~ msgid " to %s"
|
||||
#~ msgstr " to %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to grant the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
#~ msgstr ""
|
||||
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
|
||||
#~ "%(object)s."
|
||||
|
||||
#~ msgid " from %s"
|
||||
#~ msgstr " from %s"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permission %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
#~ msgstr "Are you sure you wish to revoke the permissions %(title_suffix)s?"
|
||||
|
||||
#~ msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
#~ msgstr "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s."
|
||||
|
||||
#~ msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
#~ msgstr "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s."
|
||||
|
||||
#~ msgid "Add new holder for: %s"
|
||||
#~ msgstr "add new holder for: %s"
|
||||
|
||||
#~ msgid "Select"
|
||||
#~ msgstr "Select"
|
||||
|
||||
#~ msgid "Class"
|
||||
#~ msgstr "class"
|
||||
|
||||
#~ msgid "Default access control lists for class: %s"
|
||||
#~ msgstr "default access control lists for class: %s"
|
||||
|
||||
#~ msgid "Permissions available to: %(actor)s for class %(class)s"
|
||||
#~ msgstr "permissions available to: %(actor)s for class %(class)s"
|
||||
|
||||
#~ msgid "Add new holder for class: %s"
|
||||
#~ msgstr "add new holder for class: %s"
|
||||
|
||||
#~ msgid "List of classes"
|
||||
#~ msgstr "List of classes"
|
||||
|
||||
#~ msgid "permission"
|
||||
#~ msgstr "permission"
|
||||
|
||||
#~ msgid "creator"
|
||||
#~ msgstr "creator"
|
||||
|
||||
@@ -6,13 +6,12 @@ from django.contrib.contenttypes.models import ContentType
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import ugettext, ugettext_lazy as _
|
||||
from django.utils.translation import ugettext
|
||||
|
||||
from common.utils import return_attrib
|
||||
from permissions import Permission
|
||||
from permissions.models import StoredPermission
|
||||
|
||||
from .exceptions import PermissionNotValidForClass
|
||||
from .classes import ModelPermission
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -23,12 +22,33 @@ class AccessControlListManager(models.Manager):
|
||||
Implement a 3 tier permission system, involving a permissions, an actor
|
||||
and an object
|
||||
"""
|
||||
|
||||
def get_inherited_permissions(self, role, obj):
|
||||
try:
|
||||
instance = obj.first()
|
||||
except AttributeError:
|
||||
instance = obj
|
||||
else:
|
||||
if not instance:
|
||||
return StoredPermission.objects.none()
|
||||
|
||||
try:
|
||||
parent_accessor = ModelPermission.get_inheritance(type(instance))
|
||||
except KeyError:
|
||||
return StoredPermission.objects.none()
|
||||
else:
|
||||
parent_object = getattr(instance, parent_accessor)
|
||||
content_type = ContentType.objects.get_for_model(parent_object)
|
||||
try:
|
||||
return self.get(
|
||||
role=role, content_type=content_type,
|
||||
object_id=parent_object.pk
|
||||
).permissions.all()
|
||||
except self.model.DoesNotExist:
|
||||
return StoredPermission.objects.none()
|
||||
|
||||
def check_access(self, permissions, user, obj, related=None):
|
||||
if user.is_superuser or user.is_staff:
|
||||
logger.debug(
|
||||
'Permissions "%s" on "%s" granted to user "%s" as superuser '
|
||||
'or staff', permissions, obj, user
|
||||
)
|
||||
return True
|
||||
|
||||
try:
|
||||
@@ -53,15 +73,14 @@ class AccessControlListManager(models.Manager):
|
||||
)
|
||||
except AttributeError:
|
||||
# AttributeError means non model objects: ie Statistics
|
||||
# These can't have ACLs so we raise PermissionDenied
|
||||
raise PermissionDenied(_('Insufficient access for: %s') % obj)
|
||||
# These can't have ACLS so we raise PermissionDenied
|
||||
raise PermissionDenied
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
try:
|
||||
return self.check_access(
|
||||
obj=getattr(obj, parent_accessor),
|
||||
permissions=permissions, user=user
|
||||
permissions, user, getattr(obj, parent_accessor)
|
||||
)
|
||||
except PermissionDenied:
|
||||
pass
|
||||
@@ -70,32 +89,15 @@ class AccessControlListManager(models.Manager):
|
||||
for group in user.groups.all():
|
||||
for role in group.roles.all():
|
||||
if set(stored_permissions).intersection(set(self.get_inherited_permissions(role=role, obj=obj))):
|
||||
logger.debug(
|
||||
'Permissions "%s" on "%s" granted to user "%s" through role "%s" via inherited ACL',
|
||||
permissions, obj, user, role
|
||||
)
|
||||
return True
|
||||
|
||||
user_roles.append(role)
|
||||
|
||||
if not self.filter(content_type=ContentType.objects.get_for_model(obj), object_id=obj.pk, permissions__in=stored_permissions, role__in=user_roles).exists():
|
||||
logger.debug(
|
||||
'Permissions "%s" on "%s" denied for user "%s"',
|
||||
permissions, obj, user
|
||||
)
|
||||
raise PermissionDenied(ugettext('Insufficient access for: %s') % obj)
|
||||
|
||||
logger.debug(
|
||||
'Permissions "%s" on "%s" granted to user "%s" through roles "%s" by direct ACL',
|
||||
permissions, obj, user, user_roles
|
||||
)
|
||||
raise PermissionDenied(ugettext('Insufficient access.'))
|
||||
|
||||
def filter_by_access(self, permission, user, queryset):
|
||||
if user.is_superuser or user.is_staff:
|
||||
logger.debug(
|
||||
'Unfiltered queryset returned to user "%s" as superuser '
|
||||
'or staff', user
|
||||
)
|
||||
return queryset
|
||||
|
||||
try:
|
||||
@@ -118,41 +120,22 @@ class AccessControlListManager(models.Manager):
|
||||
instance = queryset.first()
|
||||
if instance:
|
||||
parent_object = getattr(instance, parent_accessor)
|
||||
|
||||
try:
|
||||
# Try to see if parent_object is a function
|
||||
parent_object()
|
||||
except TypeError:
|
||||
# Is not a function, try it as a field
|
||||
parent_content_type = ContentType.objects.get_for_model(
|
||||
parent_object
|
||||
)
|
||||
parent_queryset = self.filter(
|
||||
content_type=parent_content_type, role__in=user_roles,
|
||||
permissions=permission.stored_permission
|
||||
)
|
||||
parent_acl_query = Q(
|
||||
**{
|
||||
'{}__pk__in'.format(
|
||||
parent_accessor
|
||||
): parent_queryset.values_list(
|
||||
'object_id', flat=True
|
||||
)
|
||||
}
|
||||
)
|
||||
else:
|
||||
# Is a function. Can't perform Q object filtering.
|
||||
# Perform iterative filtering.
|
||||
result = []
|
||||
for entry in queryset:
|
||||
try:
|
||||
self.check_access(permissions=permission, user=user, obj=entry)
|
||||
except PermissionDenied:
|
||||
pass
|
||||
else:
|
||||
result.append(entry.pk)
|
||||
|
||||
return queryset.filter(pk__in=result)
|
||||
parent_content_type = ContentType.objects.get_for_model(
|
||||
parent_object
|
||||
)
|
||||
parent_queryset = self.filter(
|
||||
content_type=parent_content_type, role__in=user_roles,
|
||||
permissions=permission.stored_permission
|
||||
)
|
||||
parent_acl_query = Q(
|
||||
**{
|
||||
'{}__pk__in'.format(
|
||||
parent_accessor
|
||||
): parent_queryset.values_list(
|
||||
'object_id', flat=True
|
||||
)
|
||||
}
|
||||
)
|
||||
else:
|
||||
parent_acl_query = Q()
|
||||
|
||||
@@ -162,60 +145,7 @@ class AccessControlListManager(models.Manager):
|
||||
content_type=content_type, role__in=user_roles,
|
||||
permissions=permission.stored_permission
|
||||
).values_list('object_id', flat=True))
|
||||
logger.debug(
|
||||
'Filtered queryset returned to user "%s" based on roles "%s"',
|
||||
user, user_roles
|
||||
)
|
||||
|
||||
return queryset.filter(parent_acl_query | acl_query)
|
||||
else:
|
||||
return queryset
|
||||
|
||||
def get_inherited_permissions(self, role, obj):
|
||||
try:
|
||||
instance = obj.first()
|
||||
except AttributeError:
|
||||
instance = obj
|
||||
else:
|
||||
if not instance:
|
||||
return StoredPermission.objects.none()
|
||||
|
||||
try:
|
||||
parent_accessor = ModelPermission.get_inheritance(type(instance))
|
||||
except KeyError:
|
||||
return StoredPermission.objects.none()
|
||||
else:
|
||||
parent_object = return_attrib(instance, parent_accessor)
|
||||
content_type = ContentType.objects.get_for_model(parent_object)
|
||||
try:
|
||||
return self.get(
|
||||
role=role, content_type=content_type,
|
||||
object_id=parent_object.pk
|
||||
).permissions.all()
|
||||
except self.model.DoesNotExist:
|
||||
return StoredPermission.objects.none()
|
||||
|
||||
def grant(self, permission, role, obj):
|
||||
class_permissions = ModelPermission.get_for_class(klass=obj.__class__)
|
||||
if permission not in class_permissions:
|
||||
raise PermissionNotValidForClass
|
||||
|
||||
content_type = ContentType.objects.get_for_model(model=obj)
|
||||
acl, created = self.get_or_create(
|
||||
content_type=content_type, object_id=obj.pk,
|
||||
role=role
|
||||
)
|
||||
|
||||
acl.permissions.add(permission.stored_permission)
|
||||
|
||||
def revoke(self, permission, role, obj):
|
||||
content_type = ContentType.objects.get_for_model(model=obj)
|
||||
acl, created = self.get_or_create(
|
||||
content_type=content_type, object_id=obj.pk,
|
||||
role=role
|
||||
)
|
||||
|
||||
acl.permissions.remove(permission.stored_permission)
|
||||
|
||||
if acl.permissions.count() == 0:
|
||||
acl.delete()
|
||||
|
||||
@@ -5,7 +5,7 @@ import logging
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import models
|
||||
from django.utils.encoding import force_text, python_2_unicode_compatible
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from permissions.models import Role, StoredPermission
|
||||
@@ -18,34 +18,24 @@ logger = logging.getLogger(__name__)
|
||||
@python_2_unicode_compatible
|
||||
class AccessControlList(models.Model):
|
||||
"""
|
||||
ACL means Access Control List it is a more fine-grained method of
|
||||
granting access to objects. In the case of ACLs, they grant access using
|
||||
3 elements: actor, permission, object. In this case the actor is the role,
|
||||
the permission is the Mayan permission and the object can be anything:
|
||||
a document, a folder, an index, etc. This means = "Grant X permissions
|
||||
to role Y for object Z". This model holds the permission, object, actor
|
||||
relationship for one access control list.
|
||||
Fields:
|
||||
* Role - Custom role that is being granted a permission. Roles are created
|
||||
in the Setup menu.
|
||||
Model that hold the permission, object, actor relationship
|
||||
"""
|
||||
|
||||
content_type = models.ForeignKey(
|
||||
ContentType, on_delete=models.CASCADE,
|
||||
ContentType,
|
||||
related_name='object_content_type'
|
||||
)
|
||||
object_id = models.PositiveIntegerField()
|
||||
content_object = GenericForeignKey(
|
||||
ct_field='content_type', fk_field='object_id',
|
||||
ct_field='content_type',
|
||||
fk_field='object_id',
|
||||
)
|
||||
# TODO: limit choices to the permissions valid for the content_object
|
||||
permissions = models.ManyToManyField(
|
||||
StoredPermission, blank=True, related_name='acls',
|
||||
verbose_name=_('Permissions')
|
||||
)
|
||||
role = models.ForeignKey(
|
||||
Role, on_delete=models.CASCADE, related_name='acls',
|
||||
verbose_name=_('Role')
|
||||
)
|
||||
role = models.ForeignKey(Role, related_name='acls', verbose_name=_('Role'))
|
||||
|
||||
objects = AccessControlListManager()
|
||||
|
||||
@@ -55,9 +45,7 @@ class AccessControlList(models.Model):
|
||||
verbose_name_plural = _('Access entries')
|
||||
|
||||
def __str__(self):
|
||||
return _(
|
||||
'Permissions "%(permissions)s" to role "%(role)s" for "%(object)s"'
|
||||
) % {
|
||||
return _('Permissions "%(permissions)s" to role "%(role)s" for "%(object)s"') % {
|
||||
'permissions': self.get_permission_titles(),
|
||||
'object': self.content_object,
|
||||
'role': self.role
|
||||
@@ -70,7 +58,7 @@ class AccessControlList(models.Model):
|
||||
|
||||
def get_permission_titles(self):
|
||||
result = ', '.join(
|
||||
[force_text(permission) for permission in self.permissions.all()]
|
||||
[unicode(permission) for permission in self.permissions.all()]
|
||||
)
|
||||
|
||||
return result or _('None')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user