Compare commits

..

175 Commits

Author SHA1 Message Date
Roberto Rosario
6063aa5cd8 Tornado experiments 2016-12-22 03:16:09 -04:00
Roberto Rosario
79b0763fe9 Cleanups 2016-12-22 03:15:32 -04:00
Roberto Rosario
92130608fb Integrate sample documents into distributable code.
This is to allow tests to run in production.
2016-12-22 03:14:43 -04:00
Roberto Rosario
5662b56714 Update project to work with Django 1.10.x 2016-12-22 02:53:06 -04:00
Roberto Rosario
1e194e04fa Move new version creation blocking from the documents app to the checkouts app.
Closes GitLab #294.
2016-12-22 01:45:43 -04:00
Roberto Rosario
71af09c1fc Add caret to the "Actions" menu for visual consistency. 2016-12-22 01:14:35 -04:00
Roberto Rosario
5b1779fe59 Update tag app tests. 2016-12-21 04:41:43 -04:00
Roberto Rosario
61c5f6eaa0 Refactor the workflow for removing tags from single or multiple documents. 2016-12-21 04:37:26 -04:00
Roberto Rosario
272c8a2628 Refactor the single and multiple tag delete views using MultipleObjectConfirmActionView. 2016-12-21 03:28:43 -04:00
Roberto Rosario
50a2a6c0f0 Add support to change the submit icon and label in the generic confirm template. 2016-12-21 03:28:17 -04:00
Roberto Rosario
c21eb6d4cf Refacto ActionView into MultipleObjectFormActionView and MultipleObjectConfirmActionView.
Split ActionView into smaller mixins.
2016-12-21 03:27:27 -04:00
Roberto Rosario
c262ccabbd Add tag container and CSS for extra spacing. 2016-12-21 01:58:57 -04:00
Roberto Rosario
a0bcbdbce9 Add support for attaching multiple tags to single or multiple documents in a single action. GitLab issue #307. Thanks to @zabeloliver for the initial request and to @gersilex for the implementation ideas. 2016-12-20 05:25:51 -04:00
Roberto Rosario
477869bd3b Add entry about removing the installation app in the changelog and release note. 2016-12-20 01:09:13 -04:00
Roberto Rosario
cc02ab19d5 Merge branch 'development' of gitlab.com:mayan-edms/mayan-edms into development 2016-12-20 01:00:49 -04:00
Roberto Rosario
90de742deb Merge remote-tracking branch 'origin/series/2.0' into merge 2016-12-19 21:59:00 -04:00
Roberto Rosario
0801682569 Don't load theme fonts from the web. GitLab #343. Thanks to @thestorm for the find. 2016-12-19 21:23:15 -04:00
Roberto Rosario
727766cbf0 Update Flatly stylesheet to version 3.3.7. 2016-12-19 21:03:45 -04:00
Roberto Rosario
2f46e49937 Sort tags by label. GitLab issue #342. Thanks to @gersilex for the find. 2016-12-19 19:12:36 -04:00
Roberto Rosario
c71a8f4e13 Bump version to 2.1.6 2016-11-23 03:14:00 -04:00
Roberto Rosario
ba65611c81 Update release notes and changelog. 2016-11-23 03:13:45 -04:00
Roberto Rosario
3e63010338 Synchronize translations. 2016-11-23 03:09:56 -04:00
Roberto Rosario
375948c1dc Add step to enable the supervisor service.
Ubuntu bug report: https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740
Update nginx restart command to use systemctl too.
2016-11-22 22:25:15 -04:00
Roberto Rosario
108102219c Don't supply the entire license file to PyPI, only the name. 2016-11-22 22:22:13 -04:00
Roberto Rosario
ced3211318 Add upcomming version 2.1.6 release log and changelog. 2016-11-22 22:21:24 -04:00
Roberto Rosario
6aa0590b33 Update badges.
Update license badge to retrieve license from PyPI. Add Python version bagde.
2016-11-22 22:20:08 -04:00
Roberto Rosario
e950ea6698 Add missing decorator to get_collections tags. 2016-11-17 01:34:12 -04:00
Roberto Rosario
844511340d Add template tags to expose the license and copyright of the project. 2016-11-16 22:54:43 -04:00
Roberto Rosario
a94745ab9e Add the Collection class to the common app. 2016-11-16 22:53:20 -04:00
Roberto Rosario
b5c5602301 Expose more module attributes as project variables. 2016-11-16 22:50:40 -04:00
Roberto Rosario
ba11e63364 Improve transformation hashing algorithm. 2016-11-16 19:11:55 -04:00
Roberto Rosario
4578eacce9 Consolidate the page thumbnail and staging folder thumbnail widgets.
Update the staging folder file image API end point to work
in the same way the document page image API works.
2016-11-16 19:05:56 -04:00
Roberto Rosario
8b02ea7134 Fix variable name typo in the rotation transformation class. 2016-11-15 01:22:48 -04:00
Roberto Rosario
1133577e4d Fix ACL resolution for non model objects. 2016-11-14 02:57:41 -04:00
Roberto Rosario
7adf3621b7 Remove ununsed task. 2016-11-14 02:36:05 -04:00
Roberto Rosario
a335f39e2a Add support for the --reverse test parameter. 2016-11-14 02:34:56 -04:00
Roberto Rosario
a5a6afe240 Update MultiFormView CBV to work with Django 1.9.x 2016-11-14 01:47:19 -04:00
Roberto Rosario
3663521899 Split document app views into different modules. 2016-11-13 18:16:01 -04:00
Roberto Rosario
90c08b707d Optimize the FileLock backend. 2016-11-13 17:28:52 -04:00
Roberto Rosario
44531bd92a Add plugable locking backend support. Add threadsafe file lock backend. 2016-11-13 03:50:09 -04:00
Roberto Rosario
f5e3d5a8f2 Remove screenshot documentation section. 2016-11-13 00:14:09 -04:00
Roberto Rosario
c5ab1a22a9 Add checkedout documents dashboard widget 2016-11-13 00:07:08 -04:00
Roberto Rosario
9ed20091d2 Rename the licenses modules from packages.py to licenses.py 2016-11-12 23:59:50 -04:00
Roberto Rosario
99302e9300 Move package licenses to their own modules within the apps. 2016-11-12 02:28:06 -04:00
Roberto Rosario
aa91bce3ab Add support for drop down menu in the navigation bar. Simplify the home screen. 2016-11-12 01:56:31 -04:00
Roberto Rosario
248d3886e0 Add dashboard feature 2016-11-11 02:12:42 -04:00
Roberto Rosario
d4a95ddb8b Add new menu instance for user related links. 2016-11-10 23:32:43 -04:00
Roberto Rosario
aa2e8f3a11 Merge remote-tracking branch 'origin/master' into merge_test 2016-11-09 01:27:34 -04:00
Roberto Rosario
9c0d2ac60c Bump version to 2.1.5 2016-11-08 20:00:26 -04:00
Roberto Rosario
1867b2e08d Update release notes and changelog. 2016-11-08 19:59:05 -04:00
Roberto Rosario
df3f7c38c3 Update changelog and release notes. 2016-11-08 19:23:06 -04:00
Roberto Rosario
7f4dee8d69 Fix testing settings for GitLab CI. 2016-11-08 18:19:49 -04:00
Roberto Rosario
95a23c8f7a Expland staging folder and watch folder explanation. 2016-11-08 18:14:54 -04:00
Roberto Rosario
98327ae877 Return the same image when rotation degrees are 0. 2016-11-08 17:47:51 -04:00
Roberto Rosario
e4a4e6b0c8 Don't open a new browser window when running makefile commands. 2016-11-08 17:47:00 -04:00
Roberto Rosario
048960ae52 Fix ACL create view HTML response type. GitLab issue #335. Thanks to @DocCyblade for the report. 2016-11-08 13:54:20 -04:00
Roberto Rosario
d072c0af55 Merge remote-tracking branch 'origin/master' into test 2016-11-08 02:34:40 -04:00
Roberto Rosario
6b9b280d71 Improve documentation regarding the use of GPG version 1. GitLab issue #333. Thank to @Albe for the report. 2016-11-08 02:26:17 -04:00
Roberto Rosario
14bde36c1f Backport trash can navigation link resolution fix, GitLab issue #331. Thanks to @DocCyblade for the report. 2016-11-08 02:14:08 -04:00
Roberto Rosario
4222035cc1 Backport zoom transformation performance improvement, GitLab issue #334. Thanks to @startmat for the patch. 2016-11-08 02:03:10 -04:00
Roberto Rosario
43264f23b1 Update Pillow to version 3.1.2 2016-11-08 01:58:48 -04:00
Roberto Rosario
f98063835a Backport resize transformation math operation fix, GitLab issue #319. Thanks to @startmat for the find. 2016-11-08 01:51:27 -04:00
Roberto Rosario
19d20ff9d1 Prevent unnecessary image.resize in TransformationZoom. Thanks to @startmat for the suggestion. GitLab issue #334. 2016-11-05 02:56:43 -04:00
Roberto Rosario
7c8fc51ad1 Make sure lazy images are loaded only once. 2016-11-05 02:21:46 -04:00
Roberto Rosario
2df6cb7985 Remove usage of url.patterns as per Django's deprecation warnings. 2016-11-04 04:02:48 -04:00
Roberto Rosario
bc7f5f44ed Improve document page image lazy loading. Use font awesome spinner and CSS3 animation. 2016-11-04 03:33:24 -04:00
Roberto Rosario
69bcade6fb Don't asume all non model instances have the get_deferred_fields method (ie: Statistics).
GitLab issue #331
2016-11-04 01:52:33 -04:00
Roberto Rosario
d473245fb2 Rename the document_html_widget to document_page_html_widget for clarity of purpose. 2016-11-04 01:45:40 -04:00
Roberto Rosario
3df30b63f3 Make sure the method has sensible defaults. 2016-11-04 01:34:12 -04:00
Roberto Rosario
0992e22568 Typecast to integers only when there is querystring data. 2016-11-04 01:33:44 -04:00
Roberto Rosario
011db7c0f6 Convert the document print view to CBV. Tweak the print template. Make 'print all' pages the default. 2016-11-04 01:32:59 -04:00
Roberto Rosario
31b2464899 Add explicit test for deferred fields instances in menu resolution.
Fixes document link appearing in deleted document views. Fixes GitLab issue #331.
2016-11-03 18:33:25 -04:00
Roberto Rosario
b2ba2c70dc Fix typo in user_add view url definition. 2016-11-03 17:47:45 -04:00
Roberto Rosario
a59c4e8fc1 Fix dynamic search tests. 2016-11-03 17:47:30 -04:00
Roberto Rosario
4d9da58890 Update search api test to work with the new url scheme. 2016-11-03 15:50:38 -04:00
Roberto Rosario
b9791287d3 Fix typo defining user_delete view. 2016-11-03 15:50:23 -04:00
Roberto Rosario
2b335e9454 Add test for deleted document restore link. 2016-11-03 15:49:56 -04:00
Roberto Rosario
877772f80d Add another temporary directory to be ignored during tests. 2016-11-03 15:49:28 -04:00
Roberto Rosario
12e500e55d Display a message instead of a UI specific icon when there are not pages to show. 2016-11-03 15:35:03 -04:00
Roberto Rosario
2cdee10d50 Make sure transformation arguments are always valid. 2016-11-03 15:34:32 -04:00
Roberto Rosario
6fbbc7bacb Fix tag url typo. 2016-11-02 19:01:51 -04:00
Roberto Rosario
2777dc1070 Convert document page zoom and rotation views to CBV. 2016-11-02 19:01:30 -04:00
Roberto Rosario
3ab4778814 Remove lazy view string loading from urls.py as per Django's deprecation plan. 2016-11-02 17:38:54 -04:00
Roberto Rosario
696c2be2f3 Fix link global permission check. 2016-11-02 16:09:16 -04:00
Roberto Rosario
43d2539c95 Update OCR backend to work with the new document image caching system. 2016-11-02 05:05:25 -04:00
Roberto Rosario
5893e149e0 Reduce the check_access boilerplate code. 2016-11-02 04:58:05 -04:00
Roberto Rosario
621c988809 Simplify filter_by_access boilerplate code 2016-11-02 03:48:16 -04:00
Roberto Rosario
c0194c63dc Refactor document page image generation and transformation classes
to cache all transformed versions of a document page.
2016-11-02 02:34:57 -04:00
Roberto Rosario
ff67b11110 Improve upgrade process. Make removing obsolete requirements easier. 2016-10-31 15:21:00 -04:00
Roberto Rosario
de6564c264 Fix height calculation and remove disabled "fit" code. Thanks to @startmat for finding this one. Closes GitLab issue #319. 2016-10-31 15:08:43 -04:00
Roberto Rosario
9eb9c93afc Remove obsolete document printing tag 2016-10-31 01:14:39 -04:00
Roberto Rosario
6e3d99670c Complete conversion of download views to CBV views using django-downloadview.
This also removes dependency on the filetransfers library.
2016-10-31 01:00:35 -04:00
Roberto Rosario
24ef702e9c Update some direct model importing to use Django's apps.get_model instead. 2016-10-30 02:46:36 -04:00
Roberto Rosario
aca0491941 Update testing requirements. 2016-10-29 17:06:14 -04:00
Roberto Rosario
52b2ae3c84 Update documentation requirements. 2016-10-29 17:06:03 -04:00
Roberto Rosario
27943dca8c Update project requirements. 2016-10-29 17:05:55 -04:00
Roberto Rosario
1f648c5e86 Add command to execute runserver_plus 2016-10-29 16:28:49 -04:00
Roberto Rosario
ed7955f8e7 Update development requirements. 2016-10-29 16:26:37 -04:00
Roberto Rosario
1e50676f11 Merge branch 'master' into development 2016-10-29 16:22:12 -04:00
Roberto Rosario
6b6a238039 Add safety check Python package 2016-10-29 15:17:22 -04:00
Roberto Rosario
f978bd4982 Tweak installation instructions for easy of interpretation. 2016-10-28 04:56:35 -04:00
Roberto Rosario
b6784ee173 Don't import the base requirements just to build the documentation. 2016-10-28 04:47:49 -04:00
Roberto Rosario
718582f09d Add documentation badge 2016-10-28 04:43:34 -04:00
Roberto Rosario
b9bdf5c315 Fix release list formatting 2016-10-28 04:39:10 -04:00
Roberto Rosario
6c2f00e0d7 Bump version to 2.1.4 2016-10-28 04:26:17 -04:00
Roberto Rosario
49ea4ff2f6 Update release notes and changelog. 2016-10-28 04:26:06 -04:00
Roberto Rosario
2a0c50a313 Update setup with latest version requirements. 2016-10-28 04:25:51 -04:00
Roberto Rosario
6a48de5029 Update translations. 2016-10-28 04:19:15 -04:00
Roberto Rosario
e556c16117 Add migration to remove recent search data. 2016-10-28 03:07:45 -04:00
Roberto Rosario
5c9a34ab5e PEP8 cleanups 2016-10-28 03:06:29 -04:00
Roberto Rosario
5193009447 Update history 2016-10-28 03:04:02 -04:00
Roberto Rosario
5ddd0c861d Merge branch 'development' into feature/per_page_search 2016-10-28 02:51:17 -04:00
Roberto Rosario
80623e4436 Merge branch 'master' into development 2016-10-28 02:50:46 -04:00
Roberto Rosario
c10637aaa4 Update dynamic_search app API to support document page searches. 2016-10-28 02:44:02 -04:00
Roberto Rosario
2ad40a0970 Invert the search boxes order 2016-10-27 05:01:51 -04:00
Roberto Rosario
dbad54bf6b Merge branch 'master' into feature/per_page_search 2016-10-27 04:57:45 -04:00
Roberto Rosario
da250a6a9e Update the FAQ. 2016-10-27 04:57:11 -04:00
Roberto Rosario
3bb47c20db Add CONTRIBUTING document. 2016-10-27 04:53:43 -04:00
Roberto Rosario
eb2a3bba30 Update v2.2 change log 2016-10-27 04:00:21 -04:00
Roberto Rosario
aef395f4df Remove support for recent searches 2016-10-27 03:59:14 -04:00
Roberto Rosario
b8b2e0e929 Initial commit to support per page search. 2016-10-27 02:48:40 -04:00
Roberto Rosario
f66f815ba6 Remove the installation app 2016-10-26 23:04:59 -04:00
Roberto Rosario
62c0918acf Update appearance of install commands to reflect virtualenv activation. 2016-10-26 22:54:20 -04:00
Roberto Rosario
61e2925a61 Update release notes. 2016-10-26 19:39:51 -04:00
Roberto Rosario
d488c8271b Merge branch 'development' 2016-10-26 04:46:36 -04:00
Roberto Rosario
7cc5064df3 Add curl to the GitLab CI script to be able to send the coverage report. 2016-10-26 04:43:11 -04:00
Roberto Rosario
7b9a2bcfcc Ignore GitLab's CI .config temporary file. 2016-10-26 04:26:22 -04:00
Roberto Rosario
fa7c6ae8d7 Set the GitLab ci mysql service db server character set to utf8mb4. 2016-10-26 04:06:00 -04:00
Roberto Rosario
72980f09a6 Update TempfileCheckMixin to show list of oprhaned files. 2016-10-26 04:05:32 -04:00
Roberto Rosario
0b5edb4ad6 Add support to ignore certain temporary file patterns to the TempfileCheckMixin 2016-10-26 02:16:44 -04:00
Roberto Rosario
9d527ae423 Improve the UTF locale generation for the GitLab CI image. 2016-10-26 01:41:22 -04:00
Roberto Rosario
7ead59a408 Force locale previous of tests (GitLab CI). 2016-10-25 19:05:24 -04:00
Roberto Rosario
d779676724 Set the locale to avoid unicode tests from failing. 2016-10-25 18:43:00 -04:00
Roberto Rosario
1f1954161e Merge branch 'development' 2016-10-25 02:50:50 -04:00
Roberto Rosario
6abf3384c7 Update Python-gnupg to version 0.3.9 2016-10-25 02:49:50 -04:00
Roberto Rosario
f59d7ad0bd Add missing events app tests. 2016-10-24 18:50:19 -04:00
Roberto Rosario
d3e6b21146 Encapsulate python-gnupg code into its own backend class. 2016-10-24 18:48:26 -04:00
Roberto Rosario
665b814641 Add shell_plus command to the makefile 2016-10-24 18:43:14 -04:00
Roberto Rosario
56feae6e0e Install DB development libraries for the required GitLab CI service. 2016-10-24 02:27:10 -04:00
Roberto Rosario
3db472b0cd Update the expected HTML content type of failing view tests. 2016-10-24 02:26:43 -04:00
Roberto Rosario
07c8d36545 Add missing python-pip install for GitLab CI 2016-10-24 01:44:37 -04:00
Roberto Rosario
1b9a40dc5c Update GitLab CI to use the ubuntu 16.10 image. 2016-10-24 01:31:52 -04:00
Roberto Rosario
f28b797f0a Update default testing config to use GPG version 1. 2016-10-24 01:21:58 -04:00
Roberto Rosario
35c96034a7 Re-enable mysql testing and install GPG version 1. 2016-10-24 01:21:36 -04:00
Roberto Rosario
d13c444312 Add tesseract homepage link and note on how to add extra languages. 2016-10-24 01:20:43 -04:00
Roberto Rosario
9e7ffc1e99 Update release notes. 2016-10-24 01:20:22 -04:00
Roberto Rosario
07ecc60b63 Update documentation to specify usage of GPG version 1. GitLab issue #324. 2016-10-24 00:59:45 -04:00
Roberto Rosario
03d13ff224 Update documentation configuration option as per deprecation warning. 2016-10-24 00:55:15 -04:00
Roberto Rosario
652b0f13d0 Update release notes 2016-10-21 04:29:23 -04:00
Roberto Rosario
bf29846b54 Set the proper expected response content type in the document download views tests. 2016-10-21 04:27:41 -04:00
Roberto Rosario
89af7e9f12 Add tests for the events_for_object view and fix the content type of the same view response.
Fixes GitLab issue #311 for the events link.
2016-10-21 03:59:36 -04:00
Roberto Rosario
c881641ae8 Don't override the content_type CBV attribute.
These views (get method views) used it to set the content type of the response.
Fixes GitLab issue #311 for the ACL list view.
Note to Django developers: self.content_type should be a private attribute -> self._content_type
2016-10-21 03:46:18 -04:00
Roberto Rosario
a44c76165b Add test view mixin to check for responses content types. Relates to GitLab issue #311. 2016-10-21 03:41:15 -04:00
Roberto Rosario
91144a749f Add ACL list view tests. 2016-10-21 03:35:45 -04:00
Roberto Rosario
221301abd1 Add upcomming 2.1.4 release notes. 2016-10-21 02:22:36 -04:00
Roberto Rosario
8250085703 Statistics navigation links are not tied to querysets or model instances,
don't fail when failing to access their _meta field. Fixes GitLab issue #316.
2016-10-20 03:46:49 -04:00
Roberto Rosario
5fedada0f5 Update required Django version from 1.8.13 to 1.8.15
https://docs.djangoproject.com/en/1.10/releases/1.8.14/
https://docs.djangoproject.com/en/1.10/releases/1.8.15/
2016-10-20 03:07:26 -04:00
Roberto Rosario
ce8377da03 Update changelog. 2016-06-30 16:03:17 -04:00
Roberto Rosario
4b7c4335e1 Improve TempfileCheckMixin. 2016-06-30 16:02:17 -04:00
Roberto Rosario
4f2744f916 Add missing link to the 2.1.3 release notes in the index file. 2016-06-30 14:40:18 -04:00
Roberto Rosario
9483309332 Bump version to 2.1.3. 2016-06-29 19:05:38 -04:00
Roberto Rosario
07ac1cbbbe Add version 2.1.3 release notes and update the changelog. 2016-06-29 19:02:34 -04:00
Roberto Rosario
e62e6a9a08 Remove downloads badge as PyPI downloads tracking is broken and has been marked as "Won't Fix".
https://bitbucket.org/pypa/pypi/issues/396/download-stats-have-stopped-working-again
2016-06-29 18:44:51 -04:00
Roberto Rosario
97089670ee Change the file descriptor check to use open files instead. Add decorator to skip open file check. GitLab issue #309. 2016-06-29 18:40:15 -04:00
Roberto Rosario
063b325986 Fix file descriptor leak in document signature download test. 2016-06-28 03:01:29 -04:00
Roberto Rosario
2ea3c08c97 Add _future_ import to force unicode. 2016-06-28 03:01:04 -04:00
Roberto Rosario
f3f5cff36e Add missing temporary cleanup for the office documents section. 2016-06-28 01:53:53 -04:00
Roberto Rosario
d0aee4f72b Add parameter to fs_cleanup function to close a file descriptor before closing it. GitLab issue #309. 2016-06-27 19:21:42 -04:00
Roberto Rosario
5ac1276f25 Add base test class that includes unclaimed temporary and file descriptor test mixins. GitLab issue #309. 2016-06-27 19:20:42 -04:00
Roberto Rosario
113ad144e0 Add test mixins for file descriptor leaks and unclaimed temporary files. GitLab issue #309. 2016-06-27 19:19:37 -04:00
Roberto Rosario
c531631a37 Update Changelog. 2016-06-23 22:32:12 -04:00
Roberto Rosario
a76a55f70a Incorporate temp file check in teh GenericViewTestCase class. 2016-06-23 22:31:08 -04:00
Roberto Rosario
98e6ba2b50 Cleanup temporary files after running the poppler parser. GitLab issue #309. Thanks to @miek770 for finding the issue and solution. 2016-06-23 20:56:53 -04:00
Roberto Rosario
945158bd60 Normalize handling of temporary file and directory creation. 2016-06-23 20:54:10 -04:00
Roberto Rosario
ab831aa493 Fix setting message, no longer are temp project wide temp folders created by default. 2016-06-23 20:28:39 -04:00
2226 changed files with 96064 additions and 26182 deletions

View File

@@ -1,35 +1,41 @@
image: python:2.7
image: ubuntu:16.10
services:
- mysql
- mysql:latest
- postgres
before_script:
- 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 -qq
- apt-get install -qq python-dev gcc tesseract-ocr tesseract-ocr-deu unpaper 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"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: "mayan_edms"
#test:mysql:
# script:
# - pip install -r requirements/testing.txt
# - pip install -q 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 "ALTER DATABASE $MYSQL_DATABASE CHARACTER SET utf8 COLLATE utf8_unicode_ci;"
# - 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:
# script:
# - pip install -r requirements/testing.txt
# - pip install -q psycopg2
# - 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 runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations
# - bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN
test:mysql:
script:
- apt-get install -qq libmysqlclient-dev
- pip install -r requirements/testing.txt
- 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 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:
script:
- apt-get install -qq libpq-dev
- pip install -r requirements/testing.txt
- pip install psycopg2
- 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 runtests --settings=mayan.settings.testing.gitlab-ci --nomigrations
- bash <(curl https://raw.githubusercontent.com/codecov/codecov-bash/master/codecov) -t $CODECOV_TOKEN

71
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,71 @@
Contributing to Mayan EDMS
==========================
Issues
------
- Before submitting a new issue, check for **open issues** first and join the
discussion.
- If your issue is not attended in a while, **be patient**, the core team is
small and the codebase big.
- Try to reproduce the issue using a **separate, clean installation**, sometimes
the issue can be caused by an error in a configuration file and not with the
code itself.
- **Do not upload** sensitive, private or classified information or files with
your issue. If the issue is triggered by a user file, create a dummy file with the
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 webservers, cloud providers, etc.
- Do not open issues asking for **support or consulting**.
Code
----
1. Fork [the repository](http://gitlab.com/mayan-edms/mayan-edms).
1. Choose the version for which you want to develop. The code is divided in the
following branches:
a. **master:** Current stable version.
a. **series/X.Y:** There will be a **series** branch for each major version
release (1.0, 2.0). The **master** branch will be in sync with the latest
**series** branch.
a. **development:** Unstable branch where the development for the next minor or
major release is happening.
a. **feature/X:** These are branches dealing with a specific bug or feature
that is not yet ready to be merged.
a. The **master** and **series** branches are stable and not braking changes
must be submitted or merged. The **development** and **feature** 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. Submit a merge request for your changes.
Feature requests
----------------
- Opening issues to start a discussion around a new feature or idea are welcomed.
- Be explicit about your idea and provide a simple scenario, others need to really
understand the concepts behind your idea if it is to be implemented.
- Be realistic in your expectation and scope of your idea.
Translations
------------
- Translations are handled using [Transifex](https://www.transifex.com/rosarior/mayan-edms/).
- Join an existing team for the language to which you wish to contribute,
if there is no team for your language, request for one to be created.
- Don't request the creation of a new language and expect others to do all the
work. If you request the creation of a new language try to do some of the
translation. Language teams that don't see activity for a while are deleted.
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.

View File

@@ -1,3 +1,62 @@
2.2 (2016-XX-XX)
================
- Remove the installation app (GitLab #301).
- Add support for document 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
- 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).
2.1.6 (2016-11-23)
=================
- Fix variable name typo in the rotation transformation class.
- Update translations
2.1.5 (2016-11-08)
==================
- Backport resize transformation math operation fix (GitLab #319).
- Update Pillow to 3.1.2 (Security fix).
- Backport zoom transformation performance improvement (GitLab #334).
- Backport trash can navigation link resolution fix (GitLab #331).
- Improve documentation regarding the use of GPG version 1 (GitLab #333).
- Fix ACL create view HTML response type. (GitLab #335).
- Expland staging folder and watch folder explanation.
2.1.4 (2016-10-28)
==================
- Add missing link to the 2.1.3 release notes in the index file.
- Improve TempfileCheckMixin.
- Fix statistics namespace list display view.
- Fix events list display view.
- Update required Django version to 1.8.15.
- Update required python-gnupg version to 0.3.9.
- Improved orphaned temporary files test mixin.
- Re-enable and improve GitLab CI MySQL testing.
- Improved GPG handling.
- New GPG backend system.
- Minor documentation updates.
2.1.3 (2016-06-29)
==================
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296.
- Start using self.setdout instead of print as per documentation.
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
- Normalize handling of temporary file and directory creation.
- Fix GitLab issue #309, "Temp files quickly filling-up my /tmp (1GB tmpfs)".
- Explicitly check for residual temporary files in tests.
- Add missing temporary file cleanup for office documents.
- Fix file descriptor leak in the document signature download test.
2.1.2 (2016-05-20)
==================
- Sort document languages and user profile locale language lists. GitLab issue #292.

View File

@@ -1,12 +1,5 @@
.PHONY: clean-pyc clean-build
define BROWSER_PYSCRIPT
import sys, webbrowser
webbrowser.open(sys.argv[1])
endef
export BROWSER_PYSCRIPT
BROWSER := python -c "$$BROWSER_PYSCRIPT"
help:
@echo
@@ -32,6 +25,10 @@ help:
@echo "release - Package (sdist and wheel) and upload a release."
@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 "safety_check - Run a package safety check."
# Cleaning
@@ -52,16 +49,15 @@ clean-pyc:
# Testing
test:
python -Wall ./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations
./manage.py test $(MODULE) --settings=mayan.settings.testing --nomigrations
test-all:
python -Wall ./manage.py runtests --settings=mayan.settings.testing --nomigrations
./manage.py runtests --settings=mayan.settings.testing --nomigrations
# Documentation
docs_serve:
$(BROWSER) http://127.0.0.1:8000
cd docs;make livehtml
@@ -109,5 +105,18 @@ wheel: clean
# Dev server
runserver:
$(BROWSER) http://127.0.0.1:8000
./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
# Security
safety_check:
safety check

View File

@@ -1,4 +1,4 @@
|PyPI badge| |Build Status| |Coverage badge| |Installs badge| |License badge|
|PyPI badge| |Build Status| |Coverage badge| |Documentation| |License badge| |Python version|
|Logo|
@@ -33,22 +33,13 @@ To install Mayan EDMS, simply do:
$ virtualenv venv
$ source venv/bin/activate
$ pip install mayan-edms
$ mayan-edms.py initialsetup
$ mayan-edms.py runserver
(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.
Contribute
----------
- Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
- Fork `the repository`_ on GitLab to start making your changes to the **development** branch (or branch off of it).
- Write a test which shows that the bug was fixed or that the feature works as expected.
- Add yourself to the `contributors file`_.
- Send a merge request.
.. _Website: http://www.mayan-edms.com
.. _Video demostration: http://bit.ly/pADNXv
@@ -56,20 +47,19 @@ Contribute
.. _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
.. _`the repository`: http://gitlab.com/mayan-edms/mayan-edms
.. _`contributors file`: https://gitlab.com/mayan-edms/mayan-edms/blob/master/docs/topics/contributors.rst
.. |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
.. |Installs badge| image:: http://img.shields.io/pypi/dm/mayan-edms.svg?style=flat
:target: https://crate.io/packages/mayan-edms/
.. |PyPI badge| image:: http://img.shields.io/pypi/v/mayan-edms.svg?style=flat
:target: http://badge.fury.io/py/mayan-edms
.. |License badge| image:: http://img.shields.io/badge/license-Apache%202.0-green.svg?style=flat
.. |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
.. |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|

33
Vagrantfile vendored
View File

@@ -1,33 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider :lxc do |v, override|
override.vm.box = "fgrehm/trusty64-lxc"
end
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
# Development box
config.vm.define "development", autostart: false do |development|
development.vm.network "forwarded_port", guest: 8000, host: 8000
development.vm.synced_folder ".", "/mayan-edms-repository"
development.vm.provision :shell, :path => "contrib/scripts/install/development.sh", privileged: false
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan/settings/celery_redis.py", source: "contrib/settings/celery_redis.py"
development.vm.provision "file", destination: "/home/vagrant/mayan-edms/mayan_edms_worker.sh", source: "contrib/misc/mayan_edms_worker.sh"
end
# Production box
config.vm.define "production", autostart: false do |production|
production.vm.network "forwarded_port", guest: 80, host: 8080
production.vm.provision :shell, :path => "contrib/scripts/install/production.sh", privileged: true
end
end

View File

@@ -1,3 +0,0 @@
#!/bin/sh
DJANGO_SETTINGS_MODULE='mayan.settings.celery_redis' celery -A mayan worker -l DEBUG -Ofair -B

View File

@@ -1,22 +0,0 @@
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:/usr/share/mayan-edms/uwsgi.sock;
client_max_body_size 30M; # Increse if your plan to upload bigger documents
proxy_read_timeout 30s; # Increase if your document uploads take more than 30 seconds
}
location /static {
alias /usr/share/mayan-edms/mayan/media/static;
expires 1h;
}
location /favicon.ico {
alias /usr/share/mayan-edms/mayan/media/static/appearance/images/favicon.ico;
expires 1h;
}
}

View File

@@ -1 +0,0 @@
flake8 --ignore=E501 mayan/apps | grep -v "F401 'models' imported but unused" | grep -v "F811 redefinition of unused 'models'"| grep -v "F401 'db' imported but unused" | grep -v "F812 list comprehension redefines 'user_id'" | grep -v "F812 list comprehension redefines 'document_id'" |less

View File

@@ -1,3 +0,0 @@
#!/bin/sh
find 'fabfile' -depth -name '*.pyc' -exec rm {} \;
tar -czvf contrib/fabfile.tar.gz fabfile

View File

@@ -1,5 +0,0 @@
from .local import *
CELERY_ALWAYS_EAGER = False
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

View File

@@ -1,26 +0,0 @@
[program:mayan-worker]
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production worker -Ofair -l ERROR
directory = /usr/share/mayan-edms
user = www-data
stdout_logfile = /var/log/mayan/worker-stdout.log
stderr_logfile = /var/log/mayan/worker-stderr.log
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 10
killasgroup = true
priority = 998
[program:mayan-beat]
command = /usr/share/mayan-edms/bin/python /usr/share/mayan-edms/bin/mayan-edms.py celery --settings=mayan.settings.production beat -l ERROR
directory = /usr/share/mayan-edms
user = www-data
numprocs = 1
stdout_logfile = /var/log/mayan/beat-stdout.log
stderr_logfile = /var/log/mayan/beat-stderr.log
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 1
killasgroup = true
priority = 998

View File

@@ -1,6 +0,0 @@
[program:mayan-uwsgi]
command = /usr/share/mayan-edms/bin/uwsgi --ini /usr/share/mayan-edms/uwsgi.ini
user = root
autostart = true
autorestart = true
redirect_stderr = true

BIN
docs/_static/api.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/_static/main.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

BIN
docs/_static/setup.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

BIN
docs/_static/tools.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -38,7 +38,6 @@ extensions = ['djangodocs', 'sphinxcontrib.blockdiag']
blockdiag_antialias = True
blockdiag_html_image_format = "SVG"
blockdiag_latex_image_format = "PDF"
blockdiag_tex_image_format = "PDF"
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

View File

@@ -10,12 +10,14 @@ 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 gpgv python-dev python-virtualenv tesseract-ocr poppler-utils -y
virtualenv venv
source venv/bin/activate
pip install mayan-edms
mayan-edms.py initialsetup
mayan-edms.py runserver
$ 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.
@@ -36,7 +38,6 @@ account.
Roadmap <topics/roadmap>
Translations <topics/translations>
Contributors <topics/contributors>
Screenshots <topics/screenshots>
Licensing <topics/license>
FAQ <topics/faq>
Contact <topics/contact>

87
docs/releases/2.1.3.rst Normal file
View File

@@ -0,0 +1,87 @@
===============================
Mayan EDMS v2.1.3 release notes
===============================
Released: June 29, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade.
Temporary files cleanup
-----------------------
When uploading PDF files that had been OCRed by previous software, the text
parser backend that uses Poppler, would leave behind some temporary files in
the /tmp folder. The issue has been resolved and from the fix a test mixin
system check has been devised that will identify places in the codebase with
similar behaviors, reducing the recurrence of similar issues in the future.
Other changes
-------------
- Add help message when initialsetup migration phase fails. Relates to GitLab issue #296
- Start using self.setdout instead of print as per documentation.
- Fix GitLab issue #295, "When editing a user the top bar jumps to the name of the user".
- Normalize handling of temporary file and directory creation.
- Explicitly check for residual temporary files in tests.
- Add missing temporary file cleanup for office documents.
- Fix file descriptor leak in the document signature download test.
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 #295 <https://gitlab.com/mayan-edms/mayan-edms/issues/295>`_ When editing a user the top bar jumps to the name of the user
* `GitLab issue #309 <https://gitlab.com/mayan-edms/mayan-edms/issues/309>`_ Temp files quickly filling-up my /tmp (1GB tmpfs)
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

81
docs/releases/2.1.4.rst Normal file
View File

@@ -0,0 +1,81 @@
===============================
Mayan EDMS v2.1.4 release notes
===============================
Released: October 28, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade.
Other changes
-------------
- Fix statistics namespace list display view
- Fix events list display view
- Update required Django version to 1.8.15
- Update required python-gnupg version to 0.3.9
- Improved orphaned temporary files test mixin
- Re-enable and improve GitLab CI MySQL testing
- Improved GPG handling
- New GPG backend system
- Minor documentation updates
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 #311 <https://gitlab.com/mayan-edms/mayan-edms/issues/311>`_ acl page return ContentType:Document
* `GitLab issue #316 <https://gitlab.com/mayan-edms/mayan-edms/issues/316>`_ Error when trying to access the statistics
* `GitLab issue #324 <https://gitlab.com/mayan-edms/mayan-edms/issues/324>`_ Document signature tests fail in Ubuntu 16.10
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

87
docs/releases/2.1.5.rst Normal file
View File

@@ -0,0 +1,87 @@
===============================
Mayan EDMS v2.1.5 release notes
===============================
Released: November 8, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade.
Other changes
-------------
- Backport resize transformation math operation fix (GitLab #319).
- Update Pillow to 3.1.2
- https://pillow.readthedocs.io/en/3.4.x/releasenotes/3.1.1.html
- https://pillow.readthedocs.io/en/3.4.x/releasenotes/3.1.2.html
- Backport zoom performance improvement (GitLab #334).
- Backport trash can navigation link resolution fix (GitLab #331).
- Improve documentation regarding the use of GPG version 1 (GitLab #333).
- Fix ACL create view HTML response type. (GitLab #335).
- Expland staging folder and watch folder explanation.
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 #319 <https://gitlab.com/mayan-edms/mayan-edms/issues/319>`_ TransformationResize issue with very "long" image
* `GitLab issue #331 <https://gitlab.com/mayan-edms/mayan-edms/issues/331>`_ Trash List View: Items actions should be limited
* `GitLab issue #333 <https://gitlab.com/mayan-edms/mayan-edms/issues/333>`_ "Unable to run gpg - it may not be available."
* `GitLab issue #334 <https://gitlab.com/mayan-edms/mayan-edms/issues/334>`_ Perfomance improvment: prevent unnecessary image.resize in TransformationZoom
* `GitLab issue #335 <https://gitlab.com/mayan-edms/mayan-edms/issues/335>`_ Wrong HTML Content-Type in ACL->NEW
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

73
docs/releases/2.1.6.rst Normal file
View File

@@ -0,0 +1,73 @@
===============================
Mayan EDMS v2.1.6 release notes
===============================
Released: November 23, 2016
What's new
==========
This is a bug-fix release and all users are encouraged to upgrade.
Changes
-------------
- Fix variable name typo in the rotation transformation class.
- Update translations
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/

96
docs/releases/2.2.rst Normal file
View File

@@ -0,0 +1,96 @@
=============================
Mayan EDMS v2.2 release notes
=============================
Released: XX, 2017
What's new
==========
Other changes
-------------
- 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
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
Common steps
~~~~~~~~~~~~
Remove deprecated requirements::
$ pip uninstall -y -r removals.txt 2> /dev/null
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 #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 #307 <https://gitlab.com/mayan-edms/mayan-edms/issues/307>`_ Enter multiple Tags at once
* `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 #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
.. _PyPI: https://pypi.python.org/pypi/mayan-edms/

View File

@@ -22,6 +22,11 @@ versions of the documentation contain the release notes for any later releases.
.. toctree::
:maxdepth: 1
2.2
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1

View File

@@ -2,15 +2,17 @@
Deploying
=========
OS "bare metal"
===============
Below are some ways to deploye and use Mayan EDMS. Do use more than one method.
OS "bare metal" method
======================
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 15.04.
Ubuntu 16.10.
Switch to superuser::
@@ -20,8 +22,12 @@ Install all system dependencies::
apt-get install nginx supervisor redis-server postgresql \
libpq-dev libjpeg-dev libmagic1 libpng-dev libreoffice \
libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv \
tesseract-ocr unpaper poppler-utils -y
libtiff-dev gcc ghostscript gnupg python-dev python-virtualenv \
tesseract-ocr poppler-utils -y
If using Ubuntu 16.10 also install GPG version 1 (as GPG version 2 is the new default for this distribution and not yet supported by Mayan EDMS) ::
apt-get install gnupg1 -y
Change to the directory where the project will be deployed::
@@ -80,6 +86,10 @@ Append the following to the ``mayan/settings/local.py`` file, paying attention t
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'
If using Ubuntu 16.10, also add this line to the ``mayan/settings/local.py`` file::
SIGNATURES_GPG_PATH = '/usr/bin/gpg1'
Migrate the database or initialize the project::
mayan-edms.py initialsetup
@@ -186,11 +196,12 @@ Make the installation directory readable and writable by the webserver user::
Restart the services::
/etc/init.d/nginx restart
/etc/init.d/supervisor restart
systemctl enable supervisor
systemctl restart supervisor
systemctl restart nginx
Docker
======
Docker method
=============
Deploy the Docker image stack::
@@ -205,8 +216,8 @@ with::
docker logs mayan-edms
Docker Compose
==============
Docker Compose method
=====================
Create a file named ``environment`` with the following content::
@@ -248,8 +259,8 @@ with::
docker logs mayanedms_mayan-edms_1
Vagrant
=======
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::

View File

@@ -6,8 +6,8 @@ Development
Mayan EDMS is under active development, and contributions are welcome.
If you have a feature request, suggestion or bug report, please open a new
issue on the `GitLab issue tracker`_. To submit patches, please send a pull
request on GitLab_. Make sure to add yourself to the :ref:`contributors` file.
issue on the `GitLab issue tracker`_. To submit patches, please send a merge
request on GitLab_.
.. _GitLab: https://gitlab.com/mayan-edms/mayan-edms/
.. _`GitLab issue tracker`: https://gitlab.com/mayan-edms/mayan-edms/issues

View File

@@ -90,7 +90,7 @@ When using ``MySQL`` and doing OCR on languages other than English
**Q: Is virtualenv required as specified in the documentation?**
* It is not necessary, it's just a strong recommendation mainly to reduce
* It is not necessary, but it's a strong recommendation mainly to reduce
dependency conflicts by isolation from the main Python system install.
If not using a virtualenv, pip would install Mayan's dependencies
globally coming in conflict with the distribution's prepackaged Python
@@ -116,3 +116,13 @@ http://mayan-edms-ru.blogspot.com/2011/11/blog-post_09.html
**Q: Can you change the display order of documents...i.e can they be in alphabetical order?**
A the moment no, but it is something being considered.
**Q: Does Mayan EDMS work with Python 3?**
Not at the moment. When all the projects and libraries upon which Mayan is
dependent support Python 3 then will the project move to fully support Python 3.
**Q: The watched folder feature is not working**
Make sure that the Celery BEAT scheduler is running correctly as it is the element
that triggers the periodics tasks.

View File

@@ -24,4 +24,3 @@ Introductions to all the key parts of Mayan EDMS you'll need to know:
settings
file_storage
backups
screenshots

View File

@@ -2,8 +2,9 @@
OCR backend
===========
Mayan EDMS ships an OCR backend that uses the FLOSS engine Tesseract, but it can
use other engines. To support other engines a wrapper that subclasess the
Mayan EDMS ships an OCR backend that uses the FLOSS engine Tesseract
(https://github.com/tesseract-ocr/tesseract/), but it can
use other engines. To support other engines crate a wrapper that subclasess the
``OCRBackendBase`` class defined in mayan/apps/ocr/classes. This subclass should
expose the ``execute`` method. For an example of how the Tesseract backend
is implemented take a look at the file ``mayan/apps/ocr/backends/tesseract.py``
@@ -13,3 +14,8 @@ OCR_BACKEND and point it to your new OCR backend class path.
The default value of OCR_BACKEND is ``"ocr.backends.tesseract.Tesseract"``
To add support to OCR more languages when using Tesseract, install the
corresponding language file. If using a Debian based OS, this command will
display the available language files:
apt-cache search tesseract-ocr

View File

@@ -1,64 +0,0 @@
===========
Screenshots
===========
.. figure:: /_static/main.png
:figwidth: 40%
:scale: 30 %
:alt: Home screen
:align: left
Home screen
.. figure:: /_static/page_view.png
:figwidth: 40%
:scale: 30 %
:alt: Page view
:align: right
Page view
.. figure:: /_static/document_view.png
:figwidth: 40%
:scale: 30 %
:alt: Document view
:align: left
Document view
.. figure:: /_static/api.png
:figwidth: 40%
:scale: 30 %
:alt: REST API
:align: right
REST API
.. figure:: /_static/tools.png
:figwidth: 40%
:scale: 30 %
:alt: Tools
:align: left
Tools
.. figure:: /_static/setup.png
:figwidth: 40%
:scale: 30 %
:alt: Setup
:align: right
Setup
.. figure:: /_static/statistics.png
:figwidth: 40%
:scale: 30 %
:alt: Statistics
:align: left
Statistics

View File

@@ -21,4 +21,6 @@ keys no longer needed can also be deleted from this menu.
Only `GNU Privacy Guard`_ signatures are support at the moment.
Only version 1 of `GNU Privacy Guard`_ is supported for now.
.. _`GNU Privacy Guard`: www.gnupg.org/

View File

@@ -9,9 +9,6 @@ The current document sources supported are:
- Web - ``HTML`` forms with a ``Browse`` button that will open the file dialog
when clicked to allow selection of files in the user's computer to be
uploaded as documents.
- Staging folder - Folder where networked attached scanned can save image
files. The files in these staging folders are scanned and a preview is
generated to help the process of upload.
- POP3 email - Provide the email, server and credential of a ``POP3`` based
email to be scanned periodically for email. The body of the email is uploaded
as a document and the attachments of the email are uploaded as separate
@@ -20,6 +17,19 @@ The current document sources supported are:
the ``IMAP`` protocol.
- Watch folder - A filesystem folder that is scanned periodically for files.
Any file in the watch folder is automatically uploaded.
- Staging folder - Folder where networked attached scanned can save image
files. The files in these staging folders are scanned and a preview is
generated to help the process of upload. Staging folders and Watch folders
work in a similar way with the main difference being that Staging folders are
interactive while Watch folders are automatic; documents in a Watch folder
are uploaded periodically and documents in a Staging folder remain indefinitely
there until an user uploads them. A preview for files in a Staging folder is
also provided. An example of Staging folder use is when multiple people
are scanning documents but only one person must be allowed to upload those
documents. This one person examines the scans quality and decides what to
upload and what to reject and have re-scanned. Watch folders can be used
when the quality of the scans is irrelevant or when they will be known
to be of good quality, such as when receiving e-faxes as PDFs.
Document source can be configure to allow document bundles to uploaded as
compressed files which are decompressed and their content uploaded as separate

View File

@@ -4,7 +4,20 @@ import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mayan.settings")
from django.core.management import execute_from_command_line
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
execute_from_command_line(sys.argv)

View File

@@ -1,8 +1,8 @@
from __future__ import unicode_literals
__title__ = 'Mayan EDMS'
__version__ = '2.1.2'
__build__ = 0x020102
__version__ = '2.1.6'
__build__ = 0x020106
__author__ = 'Roberto Rosario'
__author_email__ = 'roberto.rosario@mayan-edms.com'
__description__ = 'Free Open Source Electronic Document Management System'

View File

@@ -1,6 +1,6 @@
from __future__ import unicode_literals
from django.contrib.contenttypes.models import ContentType
from django.apps import apps
from django.utils.translation import ugettext_lazy as _
from navigation import Link
@@ -10,6 +10,10 @@ from .permissions import permission_acl_view, permission_acl_edit
def get_kwargs_factory(variable_name):
def get_kwargs(context):
ContentType = apps.get_model(
app_label='contenttypes', model_name='ContentType'
)
content_type = ContentType.objects.get_for_model(
context[variable_name]
)

View File

@@ -1,42 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: ar\n"
"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
"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:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "الصلاحيات"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -52,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "لا شيء"
@@ -75,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -172,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: bg\n"
"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Разрешения"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -45,13 +46,19 @@ msgstr "Недостатъчен достъп."
#: models.py:44
msgid "Access entry"
msgstr ""
msgstr "достъп вписване"
#: models.py:45
msgid "Access entries"
msgstr "достъп вписвания"
#: 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:60
#: models.py:64
msgid "None"
msgstr "Няма"
@@ -61,11 +68,11 @@ msgstr "Контролни списъци за достъп"
#: permissions.py:10
msgid "Edit ACLs"
msgstr ""
msgstr "Редактиране на контролни списъци за достъп"
#: permissions.py:13
msgid "View ACLs"
msgstr ""
msgstr "Преглед на контролни списъци за достъп"
#: views.py:78
#, python-format
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,42 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: bs_BA\n"
"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Language: 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:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Dozvole"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -52,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "Nijedno"
@@ -75,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -172,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: da\n"
"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr ""
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "Ingen"
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,42 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Translators:
# Berny <berny@bernhard-marx.de>, 2015
# Tobias Paepke <tobias.paepke@paepke.net>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Mathias Behrle <mathiasb@m9s.biz>\n"
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-"
"edms/language/de_DE/)\n"
"Language: de_DE\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"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "Zugriffsberechtigungen"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Berechtigungen"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Rolle"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Löschen"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr "Neue Berechtigung"
@@ -52,7 +54,13 @@ msgstr "Berechtigungseintrag"
msgid "Access entries"
msgstr "Berechtigungseinträge"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Keine"
@@ -75,6 +83,7 @@ msgstr "Neue Zugriffsberechtigung für %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr "ACL \"%s\" löschen"
@@ -98,8 +107,7 @@ msgstr "Berechtigungen von Rolle \"%(role)s\" für \"%(object)s\""
#: views.py:242
msgid "Disabled permissions are inherited from a parent object."
msgstr ""
"Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt."
msgstr "Deaktivierte Berechtigungen sind von einem übergeordneten Objekt vererbt."
#~ msgid "New holder"
#~ msgstr "New holder"
@@ -173,9 +181,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -195,10 +200,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\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/"
@@ -18,11 +18,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
#, fuzzy
msgid "Permissions"
msgstr "permissions"
@@ -33,11 +33,11 @@ msgstr "permissions"
msgid "Role"
msgstr "Roles"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#, fuzzy
#| msgid "View ACLs"
msgid "New ACL"
@@ -57,7 +57,13 @@ msgstr "access entry"
msgid "Access entries"
msgstr "access entries"
#: models.py:60
#: 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#: models.py:64
msgid "None"
msgstr ""
@@ -191,9 +197,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."

View File

@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-05-09 01:48+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"
@@ -21,11 +21,11 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "LCAs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permisos"
@@ -34,11 +34,11 @@ msgstr "Permisos"
msgid "Role"
msgstr "Rol"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Borrar"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr "Nueva LCA"
@@ -55,7 +55,13 @@ msgstr "Entrada de acceso"
msgid "Access entries"
msgstr "Entradas de acceso"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Ninguno"
@@ -176,9 +182,6 @@ msgstr "Los permisos inactivos se heredan de un objeto precedente."
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: fa\n"
"Language-Team: Persian (http://www.transifex.com/rosarior/mayan-edms/language/fa/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fa\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "مجوزها"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "نقش"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "حذف"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr "ورودی دسترسی"
msgid "Access entries"
msgstr "ورودیهای دسترسی"
#: models.py:60
#: 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:64
msgid "None"
msgstr "هیچکدام."
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Translators:
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2015
@@ -9,34 +9,35 @@ msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Christophe CHAUVET <christophe.chauvet@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/rosarior/mayan-edms/language/"
"fr/)\n"
"Language: fr\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"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "Droits"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permissions"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Rôle"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Suppression"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr "Nouveau droit"
@@ -52,7 +53,13 @@ msgstr "Entrée d'accès"
msgid "Access entries"
msgstr "Entrées d'accès"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Aucun"
@@ -75,6 +82,7 @@ msgstr "Nouvelle liste de contrôle d'accès pour: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr "Supprimer le droit: %s"
@@ -172,9 +180,6 @@ msgstr "La désactivation de permission est hérité de l'objet parent"
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +199,8 @@ msgstr "La désactivation de permission est hérité de l'objet parent"
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: hu\n"
"Language-Team: Hungarian (http://www.transifex.com/rosarior/mayan-edms/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACL-ek"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr ""
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "Semmi"
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2015-09-24 05:15+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"
"Language: id\n"
"Language-Team: Indonesian (http://www.transifex.com/rosarior/mayan-edms/language/id/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr ""
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr ""
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr ""
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,43 +1,45 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Italian (http://www.transifex.com/rosarior/mayan-edms/"
"language/it/)\n"
"Language: it\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"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permessi"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Ruolo"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Cancella"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
msgstr "Nuova ACL"
#: managers.py:85
msgid "Insufficient access."
@@ -51,7 +53,13 @@ msgstr "Voce di accesso"
msgid "Access entries"
msgstr "Voci di accesso"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Nessuna "
@@ -70,12 +78,13 @@ msgstr "Visualizza ACL"
#: views.py:78
#, python-format
msgid "New access control lists for: %s"
msgstr ""
msgstr "Nuova lista di controllo accesso per: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
msgstr "Cancella ACL: %s"
#: views.py:151
#, python-format
@@ -93,11 +102,11 @@ msgstr "Autorizzazioni concesse "
#: views.py:222
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
msgstr ""
msgstr "Permessi del ruolo \"%(role)s\" per \"%(object)s\""
#: views.py:242
msgid "Disabled permissions are inherited from a parent object."
msgstr ""
msgstr "Il permesso disabilita è ereditato dall'oggetto padre"
#~ msgid "New holder"
#~ msgstr "New holder"
@@ -171,9 +180,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +199,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,42 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Justin Albstbstmeijer <justin@albstmeijer.nl>\n"
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/rosarior/mayan-"
"edms/language/nl_NL/)\n"
"Language: nl_NL\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"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "Authorisatielijsten"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permissies"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Gebruikersrol"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Verwijder"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr "Nieuwe authorisatielijst"
@@ -52,7 +54,13 @@ msgstr "Authorisatie invoer"
msgid "Access entries"
msgstr "Authorisaties invoer"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Geen"
@@ -75,6 +83,7 @@ msgstr "Nieuwe authorisatielijsten voor: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr "Verwijder authorisatielijst: %s"
@@ -172,9 +181,6 @@ msgstr "Uitgeschakelde permissies zijn geërfd van een parent object."
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +200,8 @@ msgstr "Uitgeschakelde permissies zijn geërfd van een parent object."
#~ 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 "%(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"

View File

@@ -1,43 +1,43 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Translators:
# Wojciech Warczakowski <w.warczakowski@gmail.com>, 2016
# Wojtek Warczakowski <w.warczakowski@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Wojciech Warczakowski <w.warczakowski@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/rosarior/mayan-edms/language/"
"pl/)\n"
"Language: pl\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"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"Language: pl\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "Listy ACL"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Uprawnienia"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Rola"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Usuń"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr "Nowa lista ACL"
@@ -53,7 +53,13 @@ msgstr "Zgłoszenie dostępu"
msgid "Access entries"
msgstr "Zgłoszenia dostępu"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Brak"
@@ -76,6 +82,7 @@ msgstr "Nowe listy ACL dla: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr "Usuń listę ACL: %s"
@@ -173,9 +180,6 @@ msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego."
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -195,10 +199,8 @@ msgstr "Domyślne uprawnienia są dziedziczone z obiektu nadrzędnego."
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: pt\n"
"Language-Team: Portuguese (http://www.transifex.com/rosarior/mayan-edms/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACL's"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permissões"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Eliminar"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "Nenhum"
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,43 +1,45 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Translators:
# Aline Freitas <aline@alinefreitas.com.br>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/rosarior/mayan-"
"edms/language/pt_BR/)\n"
"Language: pt_BR\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"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permissões"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr "Regras"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr "Excluir"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
msgstr "Nova ACL"
#: managers.py:85
msgid "Insufficient access."
@@ -51,7 +53,13 @@ msgstr "Acesso entrada"
msgid "Access entries"
msgstr "Entradas de acesso"
#: models.py:60
#: 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:64
msgid "None"
msgstr "Nenhum"
@@ -70,12 +78,13 @@ msgstr "Visualizar ACLs"
#: views.py:78
#, python-format
msgid "New access control lists for: %s"
msgstr ""
msgstr "Nova lista de controle de acesso para: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
msgstr "Apagar ACL: %s"
#: views.py:151
#, python-format
@@ -84,20 +93,20 @@ msgstr "listas de controle de acesso para: %s"
#: views.py:162
msgid "Available permissions"
msgstr ""
msgstr "Permissões disponíveis"
#: views.py:163
msgid "Granted permissions"
msgstr ""
msgstr "Permissões outorgadas"
#: views.py:222
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
msgstr ""
msgstr "Permissões do papel \"%(role)s\" para \"%(object)s\""
#: views.py:242
msgid "Disabled permissions are inherited from a parent object."
msgstr ""
msgstr "As permissões inativas foram herdadas de um objeto precedente."
#~ msgid "New holder"
#~ msgstr "New holder"
@@ -171,9 +180,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +199,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,42 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: ro_RO\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/rosarior/mayan-edms/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
"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:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACL-uri"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Permisiuni"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
msgstr "Șterge"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -52,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "Nici unul"
@@ -75,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -172,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,61 +1,67 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: ru\n"
"Language-Team: Russian (http://www.transifex.com/rosarior/mayan-edms/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=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"
"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:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
msgstr "СУДы"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "Разрешения"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
msgstr "Роль"
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
msgstr "Удалить"
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
msgstr "Создать СУД"
#: managers.py:85
msgid "Insufficient access."
msgstr "Недостаточный доступ."
msgstr "Неполный доступ."
#: models.py:44
msgid "Access entry"
msgstr ""
msgstr "Элемент доступа"
#: models.py:45
msgid "Access entries"
msgstr "Элементы доступа"
#: 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:60
#: models.py:64
msgid "None"
msgstr "Ни один"
msgstr "Пусто"
#: permissions.py:7
msgid "Access control lists"
@@ -63,43 +69,44 @@ msgstr "Списки контроля доступа"
#: permissions.py:10
msgid "Edit ACLs"
msgstr "Редактировать списки ACL"
msgstr "Редактировать СУДы"
#: permissions.py:13
msgid "View ACLs"
msgstr "Просмотр списков ACL"
msgstr "Просмотр СУДов"
#: views.py:78
#, python-format
msgid "New access control lists for: %s"
msgstr ""
msgstr "Новый СУД для: %s"
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
msgstr "Удалить СУД: %s"
#: views.py:151
#, python-format
msgid "Access control lists for: %s"
msgstr ""
msgstr "СУДы для: %s"
#: views.py:162
msgid "Available permissions"
msgstr ""
msgstr "Доступные разрешения"
#: views.py:163
msgid "Granted permissions"
msgstr ""
msgstr "Предоставленные разрешения"
#: views.py:222
#, python-format
msgid "Role \"%(role)s\" permission's for \"%(object)s\""
msgstr ""
msgstr "Права роли \"%(role)s\" для \"%(object)s\""
#: views.py:242
msgid "Disabled permissions are inherited from a parent object."
msgstr ""
msgstr "Отключенные права наследуются от родительского объекта."
#~ msgid "New holder"
#~ msgstr "New holder"
@@ -173,9 +180,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -195,10 +199,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,72 +1,78 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: sl_SI\n"
"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/rosarior/mayan-edms/language/sl_SI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3);\n"
"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:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr ""
msgstr "Pravice"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr ""
msgstr "Pravice"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
#: managers.py:85
msgid "Insufficient access."
msgstr ""
msgstr "Nezadosten dostop"
#: models.py:44
msgid "Access entry"
msgstr ""
msgstr "Vstopna točka"
#: models.py:45
msgid "Access entries"
msgstr "Vstopne točke"
#: 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:60
#: models.py:64
msgid "None"
msgstr "Brez"
#: permissions.py:7
msgid "Access control lists"
msgstr ""
msgstr "Seznami za nadzor dostopa"
#: permissions.py:10
msgid "Edit ACLs"
msgstr ""
msgstr "Uredi dostopne pravice"
#: permissions.py:13
msgid "View ACLs"
msgstr ""
msgstr "Preglej dostopne pravice"
#: views.py:78
#, python-format
@@ -75,13 +81,14 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
#: views.py:151
#, python-format
msgid "Access control lists for: %s"
msgstr ""
msgstr "Dostopne pravice za %s"
#: views.py:162
msgid "Available permissions"
@@ -172,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -194,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: vi_VN\n"
"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/rosarior/mayan-edms/language/vi_VN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: vi_VN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "ACLs"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr ""
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr ""
msgid "Access entries"
msgstr ""
#: models.py:60
#: 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:64
msgid "None"
msgstr "None"
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -1,41 +1,42 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# 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: 2016-04-27 14:09-0400\n"
"PO-Revision-Date: 2016-03-21 21:03+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"
"Language: zh_CN\n"
"Language-Team: Chinese (China) (http://www.transifex.com/rosarior/mayan-edms/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: apps.py:14 links.py:30
#: apps.py:14 links.py:31
msgid "ACLs"
msgstr "访问控制列表"
#: apps.py:22 links.py:38 models.py:36
#: apps.py:22 links.py:40 models.py:36
msgid "Permissions"
msgstr "权限"
#: apps.py:26 models.py:38
#| msgid "Roles"
msgid "Role"
msgstr ""
#: links.py:26
#: links.py:27
msgid "Delete"
msgstr ""
#: links.py:34
#: links.py:35
#| msgid "View ACLs"
msgid "New ACL"
msgstr ""
@@ -51,7 +52,13 @@ msgstr "访问入口"
msgid "Access entries"
msgstr "多个访问入口"
#: models.py:60
#: 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:64
msgid "None"
msgstr "无"
@@ -74,6 +81,7 @@ msgstr ""
#: views.py:109
#, python-format
#| msgid "Default ACLs"
msgid "Delete ACL: %s"
msgstr ""
@@ -171,9 +179,6 @@ msgstr ""
#~ 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 "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgstr "Permission \"%(permission)s\" granted to %(actor)s for %(object)s."
#~ msgid ""
#~ "%(actor)s, already had the permission \"%(permission)s\" granted for "
#~ "%(object)s."
@@ -193,10 +198,8 @@ msgstr ""
#~ 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 "%(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"

View File

@@ -9,6 +9,7 @@ from django.db.models import Q
from django.utils.translation import ugettext
from common.utils import return_attrib
from permissions import Permission
from permissions.models import StoredPermission
from .classes import ModelPermission
@@ -51,78 +52,100 @@ class AccessControlListManager(models.Manager):
return True
try:
stored_permissions = [
permission.stored_permission for permission in permissions
]
except TypeError:
# Not a list of permissions, just one
stored_permissions = [permissions.stored_permission]
if related:
obj = return_attrib(obj, related)
try:
parent_accessor = ModelPermission.get_inheritance(obj._meta.model)
except KeyError:
pass
else:
return Permission.check_permissions(
requester=user, permissions=permissions
)
except PermissionDenied:
try:
return self.check_access(
permissions, user, getattr(obj, parent_accessor)
stored_permissions = [
permission.stored_permission for permission in permissions
]
except TypeError:
# Not a list of permissions, just one
stored_permissions = (permissions.stored_permission,)
if related:
obj = return_attrib(obj, related)
try:
parent_accessor = ModelPermission.get_inheritance(
model=obj._meta.model
)
except PermissionDenied:
except AttributeError:
# AttributeError means non model objects: ie Statistics
# These can't have ACLS so we raise PermissionDenied
raise PermissionDenied
except KeyError:
pass
else:
try:
return self.check_access(
permissions, user, getattr(obj, parent_accessor)
)
except PermissionDenied:
pass
user_roles = []
for group in user.organization_groups.all():
for role in group.roles.all():
if set(stored_permissions).intersection(set(self.get_inherited_permissions(role=role, obj=obj))):
return True
user_roles = []
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))):
return True
user_roles.append(role)
user_roles.append(role)
if not self.model.on_organization.filter(content_type=ContentType.objects.get_for_model(obj), object_id=obj.pk, permissions__in=stored_permissions, role__in=user_roles).exists():
raise PermissionDenied(ugettext('Insufficient access.'))
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():
raise PermissionDenied(ugettext('Insufficient access.'))
def filter_by_access(self, permission, user, queryset):
if user.is_superuser or user.is_staff:
return queryset
user_roles = []
for group in user.organization_groups.all():
for role in group.roles.all():
user_roles.append(role)
try:
parent_accessor = ModelPermission.get_inheritance(queryset.model)
except KeyError:
parent_acl_query = Q()
else:
instance = queryset.first()
if instance:
parent_object = getattr(instance, parent_accessor)
parent_content_type = ContentType.objects.get_for_model(
parent_object
Permission.check_permissions(
requester=user, permissions=(permission,)
)
except PermissionDenied:
user_roles = []
for group in user.groups.all():
for role in group.roles.all():
user_roles.append(role)
try:
parent_accessor = ModelPermission.get_inheritance(
model=queryset.model
)
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:
except KeyError:
parent_acl_query = Q()
else:
instance = queryset.first()
if instance:
parent_object = getattr(instance, parent_accessor)
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()
# Directly granted access
content_type = ContentType.objects.get_for_model(queryset.model)
acl_query = Q(pk__in=self.filter(
content_type=content_type, role__in=user_roles,
permissions=permission.stored_permission
).values_list('object_id', flat=True))
# Directly granted access
content_type = ContentType.objects.get_for_model(queryset.model)
acl_query = Q(pk__in=self.filter(
content_type=content_type, role__in=user_roles,
permissions=permission.stored_permission
).values_list('object_id', flat=True))
return queryset.filter(parent_acl_query | acl_query)
return queryset.filter(parent_acl_query | acl_query)
else:
return queryset

View File

@@ -1,21 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import organizations.shortcuts
class Migration(migrations.Migration):
dependencies = [
('organizations', '0002_add_data_default_organization'),
('acls', '0002_auto_20150703_0513'),
]
operations = [
migrations.AddField(
model_name='accesscontrollist',
name='organization',
field=models.ForeignKey(default=organizations.shortcuts.get_current_organization, to='organizations.Organization'),
),
]

View File

@@ -8,9 +8,6 @@ from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from organizations.models import Organization
from organizations.managers import CurrentOrganizationManager
from organizations.shortcuts import get_current_organization
from permissions.models import Role, StoredPermission
from .managers import AccessControlListManager
@@ -33,9 +30,6 @@ class AccessControlList(models.Model):
ct_field='content_type',
fk_field='object_id',
)
organization = models.ForeignKey(
Organization, default=get_current_organization
)
# TODO: limit choices to the permissions valid for the content_object
permissions = models.ManyToManyField(
StoredPermission, blank=True, related_name='acls',
@@ -44,7 +38,6 @@ class AccessControlList(models.Model):
role = models.ForeignKey(Role, related_name='acls', verbose_name=_('Role'))
objects = AccessControlListManager()
on_organization = CurrentOrganizationManager()
class Meta:
unique_together = ('content_type', 'object_id', 'role')

View File

@@ -1,17 +1,16 @@
from __future__ import absolute_import, unicode_literals
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.core.exceptions import PermissionDenied
from django.test import TestCase, override_settings
from documents.models import Document, DocumentType
from documents.permissions import permission_document_view
from documents.tests import TEST_SMALL_DOCUMENT_PATH, TEST_DOCUMENT_TYPE
from organizations.tests.base import OrganizationTestCase
from permissions.classes import Permission
from permissions.models import Role
from permissions.tests.literals import TEST_ROLE_LABEL
from user_management.models import MayanGroup
from user_management.tests.literals import TEST_USER_USERNAME, TEST_GROUP
from ..models import AccessControlList
@@ -20,15 +19,13 @@ TEST_DOCUMENT_TYPE_2 = 'test document type 2'
@override_settings(OCR_AUTO_OCR=False)
class PermissionTestCase(OrganizationTestCase):
class PermissionTestCase(TestCase):
def setUp(self):
super(PermissionTestCase, self).setUp()
self.document_type_1 = DocumentType.on_organization.create(
self.document_type_1 = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE
)
self.document_type_2 = DocumentType.on_organization.create(
self.document_type_2 = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_2
)
@@ -47,23 +44,21 @@ class PermissionTestCase(OrganizationTestCase):
file_object=file_object
)
self.user = get_user_model().on_organization.create(
self.user = get_user_model().objects.create(
username=TEST_USER_USERNAME
)
self.group = MayanGroup.on_organization.create(name=TEST_GROUP)
self.role = Role.on_organization.create(label=TEST_ROLE_LABEL)
self.group = Group.objects.create(name=TEST_GROUP)
self.role = Role.objects.create(label=TEST_ROLE_LABEL)
self.group.users.add(self.user)
self.role.organization_groups.add(self.group)
self.group.user_set.add(self.user)
self.role.groups.add(self.group)
Permission.invalidate_cache()
def tearDown(self):
for document_type in DocumentType.on_organization.all():
for document_type in DocumentType.objects.all():
document_type.delete()
super(PermissionTestCase, self).tearDown()
def test_check_access_without_permissions(self):
with self.assertRaises(PermissionDenied):
AccessControlList.objects.check_access(
@@ -80,7 +75,7 @@ class PermissionTestCase(OrganizationTestCase):
)
def test_check_access_with_acl(self):
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
@@ -94,9 +89,7 @@ class PermissionTestCase(OrganizationTestCase):
self.fail('PermissionDenied exception was not expected.')
def test_filtering_with_permissions(self):
self.role.permissions.add(permission_document_view.stored_permission)
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
@@ -109,7 +102,7 @@ class PermissionTestCase(OrganizationTestCase):
)
def test_check_access_with_inherited_acl(self):
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_type_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
@@ -123,12 +116,12 @@ class PermissionTestCase(OrganizationTestCase):
self.fail('PermissionDenied exception was not expected.')
def test_check_access_with_inherited_acl_and_local_acl(self):
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_type_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_3, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
@@ -142,9 +135,7 @@ class PermissionTestCase(OrganizationTestCase):
self.fail('PermissionDenied exception was not expected.')
def test_filtering_with_inherited_permissions(self):
self.role.permissions.add(permission_document_view.stored_permission)
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_type_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
@@ -153,6 +144,10 @@ class PermissionTestCase(OrganizationTestCase):
permission=permission_document_view, user=self.user,
queryset=Document.objects.all()
)
# Since document_1 and document_2 are of document_type_1
# they are the only ones that should be returned
self.assertTrue(self.document_1 in result)
self.assertTrue(self.document_2 in result)
self.assertTrue(self.document_3 not in result)
@@ -160,12 +155,12 @@ class PermissionTestCase(OrganizationTestCase):
def test_filtering_with_inherited_permissions_and_local_acl(self):
self.role.permissions.add(permission_document_view.stored_permission)
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_type_1, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document_3, role=self.role
)
acl.permissions.add(permission_document_view.stored_permission)

View File

@@ -8,7 +8,7 @@ from user_management.tests import (
)
from ..models import AccessControlList
from ..permissions import permission_acl_edit
from ..permissions import permission_acl_edit, permission_acl_view
class AccessControlListViewTestCase(GenericDocumentViewTestCase):
@@ -26,6 +26,35 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
def test_acl_create_view_no_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
response = self.get(
viewname='acls:acl_create', kwargs=self.view_arguments, data={
'role': self.role.pk
}
)
self.assertEquals(response.status_code, 403)
self.assertEqual(AccessControlList.objects.count(), 0)
def test_acl_create_view_with_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
self.role.permissions.add(
permission_acl_edit.stored_permission
)
response = self.get(
viewname='acls:acl_create', kwargs=self.view_arguments, data={
'role': self.role.pk
}, follow=True
)
self.assertContains(
response, text=self.document.label, status_code=200
)
def test_acl_create_view_post_no_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
response = self.post(
viewname='acls:acl_create', kwargs=self.view_arguments, data={
'role': self.role.pk
@@ -33,9 +62,9 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
)
self.assertEquals(response.status_code, 403)
self.assertEqual(AccessControlList.on_organization.count(), 0)
self.assertEqual(AccessControlList.objects.count(), 0)
def test_acl_create_view_with_permission(self):
def test_acl_create_view_with_post_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
self.role.permissions.add(
@@ -49,7 +78,7 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
)
self.assertContains(response, text='created', status_code=200)
self.assertEqual(AccessControlList.on_organization.count(), 1)
self.assertEqual(AccessControlList.objects.count(), 1)
def test_acl_create_duplicate_view_with_permission(self):
"""
@@ -57,7 +86,7 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
Result: Should redirect to existing ACL for object + role combination
"""
acl = AccessControlList.on_organization.create(
acl = AccessControlList.objects.create(
content_object=self.document, role=self.role
)
@@ -76,8 +105,8 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
self.assertContains(
response, text='vailable permissions', status_code=200
)
self.assertEqual(AccessControlList.on_organization.count(), 1)
self.assertEqual(AccessControlList.on_organization.first().pk, acl.pk)
self.assertEqual(AccessControlList.objects.count(), 1)
self.assertEqual(AccessControlList.objects.first().pk, acl.pk)
def test_orphan_acl_create_view_with_permission(self):
"""
@@ -108,4 +137,61 @@ class AccessControlListViewTestCase(GenericDocumentViewTestCase):
)
self.assertNotContains(response, text='optgroup', status_code=200)
self.assertEqual(AccessControlList.on_organization.count(), 1)
self.assertEqual(AccessControlList.objects.count(), 1)
def test_acl_list_view_no_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
document = self.document.add_as_recent_document_for_user(
self.user
).document
acl = AccessControlList.objects.create(
content_object=document, role=self.role
)
acl.permissions.add(permission_acl_edit.stored_permission)
content_type = ContentType.objects.get_for_model(document)
view_arguments = {
'app_label': content_type.app_label,
'model': content_type.model,
'object_id': document.pk
}
response = self.get(
viewname='acls:acl_list', kwargs=view_arguments
)
self.assertNotContains(response, text=document.label, status_code=403)
self.assertNotContains(response, text='otal: 1', status_code=403)
def test_acl_list_view_with_permission(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
self.role.permissions.add(
permission_acl_view.stored_permission
)
document = self.document.add_as_recent_document_for_user(
self.user
).document
acl = AccessControlList.objects.create(
content_object=document, role=self.role
)
acl.permissions.add(permission_acl_view.stored_permission)
content_type = ContentType.objects.get_for_model(document)
view_arguments = {
'app_label': content_type.app_label,
'model': content_type.model,
'object_id': document.pk
}
response = self.get(
viewname='acls:acl_list', kwargs=view_arguments
)
self.assertContains(response, text=document.label, status_code=200)
self.assertContains(response, text='otal: 1', status_code=200)

View File

@@ -1,13 +1,12 @@
from __future__ import unicode_literals
from django.conf.urls import patterns, url
from django.conf.urls import url
from .views import (
ACLCreateView, ACLDeleteView, ACLListView, ACLPermissionsView
)
urlpatterns = patterns(
'acls.views',
urlpatterns = [
url(
r'^(?P<app_label>[-\w]+)/(?P<model>[-\w]+)/(?P<object_id>\d+)/create/$',
ACLCreateView.as_view(), name='acl_create'
@@ -21,4 +20,4 @@ urlpatterns = patterns(
r'^(?P<pk>\d+)/permissions/$', ACLPermissionsView.as_view(),
name='acl_permissions'
),
)
]

View File

@@ -4,7 +4,6 @@ import itertools
import logging
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404
@@ -14,7 +13,7 @@ from common.views import (
AssignRemoveView, SingleObjectCreateView, SingleObjectDeleteView,
SingleObjectListView
)
from permissions import Permission, PermissionNamespace
from permissions import PermissionNamespace
from permissions.models import StoredPermission
from .classes import ModelPermission
@@ -26,35 +25,37 @@ logger = logging.getLogger(__name__)
class ACLCreateView(SingleObjectCreateView):
fields = ('role',)
model = AccessControlList
def dispatch(self, request, *args, **kwargs):
self.content_type = get_object_or_404(
self.object_content_type = get_object_or_404(
ContentType, app_label=self.kwargs['app_label'],
model=self.kwargs['model']
)
try:
self.content_object = self.content_type.get_object_for_this_type(
self.content_object = self.object_content_type.get_object_for_this_type(
pk=self.kwargs['object_id']
)
except self.content_type.model_class().DoesNotExist:
except self.object_content_type.model_class().DoesNotExist:
raise Http404
try:
Permission.check_permissions(
request.user, permissions=(permission_acl_edit,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_edit, request.user, self.content_object
)
AccessControlList.objects.check_access(
permissions=permission_acl_edit, user=request.user,
obj=self.content_object
)
return super(ACLCreateView, self).dispatch(request, *args, **kwargs)
def get_instance_extra_data(self):
return {
'content_object': self.content_object
}
def form_valid(self, form):
try:
acl = AccessControlList.on_organization.get(
content_type=self.content_type,
acl = AccessControlList.objects.get(
content_type=self.object_content_type,
object_id=self.content_object.pk,
role=form.cleaned_data['role']
)
@@ -73,14 +74,6 @@ class ACLCreateView(SingleObjectCreateView):
) % self.content_object
}
def get_instance_extra_data(self):
return {
'content_object': self.content_object
}
def get_queryset(self):
return AccessControlList.on_organization.all()
def get_success_url(self):
if self.object.pk:
return reverse('acls:acl_permissions', args=(self.object.pk,))
@@ -89,17 +82,15 @@ class ACLCreateView(SingleObjectCreateView):
class ACLDeleteView(SingleObjectDeleteView):
model = AccessControlList
def dispatch(self, request, *args, **kwargs):
acl = get_object_or_404(AccessControlList, pk=self.kwargs['pk'])
try:
Permission.check_permissions(
request.user, permissions=(permission_acl_edit,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_edit, request.user, acl.content_object
)
AccessControlList.objects.check_access(
permissions=permission_acl_edit, user=request.user,
obj=acl.content_object
)
return super(ACLDeleteView, self).dispatch(request, *args, **kwargs)
@@ -118,32 +109,25 @@ class ACLDeleteView(SingleObjectDeleteView):
)
)
def get_queryset(self):
return AccessControlList.on_organization.all()
class ACLListView(SingleObjectListView):
def dispatch(self, request, *args, **kwargs):
self.content_type = get_object_or_404(
self.object_content_type = get_object_or_404(
ContentType, app_label=self.kwargs['app_label'],
model=self.kwargs['model']
)
try:
self.content_object = self.content_type.get_object_for_this_type(
self.content_object = self.object_content_type.get_object_for_this_type(
pk=self.kwargs['object_id']
)
except self.content_type.model_class().DoesNotExist:
except self.object_content_type.model_class().DoesNotExist:
raise Http404
try:
Permission.check_permissions(
request.user, permissions=(permission_acl_view,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_view, request.user, self.content_object
)
AccessControlList.objects.check_access(
permissions=permission_acl_view, user=request.user,
obj=self.content_object
)
return super(ACLListView, self).dispatch(request, *args, **kwargs)
@@ -155,8 +139,8 @@ class ACLListView(SingleObjectListView):
}
def get_queryset(self):
return AccessControlList.on_organization.filter(
content_type=self.content_type, object_id=self.content_object.pk
return AccessControlList.objects.filter(
content_type=self.object_content_type, object_id=self.content_object.pk
)
@@ -186,14 +170,10 @@ class ACLPermissionsView(AssignRemoveView):
def dispatch(self, request, *args, **kwargs):
acl = get_object_or_404(AccessControlList, pk=self.kwargs['pk'])
try:
Permission.check_permissions(
request.user, permissions=(permission_acl_edit,)
)
except PermissionDenied:
AccessControlList.objects.check_access(
permission_acl_edit, request.user, acl.content_object
)
AccessControlList.objects.check_access(
permissions=permission_acl_edit, user=request.user,
obj=acl.content_object
)
return super(
ACLPermissionsView, self

View File

@@ -3,7 +3,8 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from common import MayanAppConfig
from common.classes import Package
from .licenses import * # NOQA
class AppearanceApp(MayanAppConfig):
@@ -12,144 +13,3 @@ class AppearanceApp(MayanAppConfig):
def ready(self):
super(AppearanceApp, self).ready()
Package(label='Bootstrap', license_text='''
The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')
Package(label='Animate.css', license_text='''
Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT)
''')
Package(label='Bootswatch', license_text='''
The MIT License (MIT)
Copyright (c) 2013 Thomas Park
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')
Package(label='fancyBox', license_text='''
fancyBox licensed under Creative Commons Attribution-NonCommercial 3.0 license.
''')
Package(label='jquery_lazyload', license_text='''
All code licensed under the MIT License. All images licensed under Creative Commons Attribution 3.0 Unported License. In other words you are basically free to do whatever you want. Just don't remove my name from the source.
''')
Package(label='ScrollView', license_text='''
Copyright (c) 2009 Toshimitsu Takahashi
Released under the MIT license.
''')
Package(label='Font Awesome', license_text='''
Font License
Applies to all desktop and webfont files in the following directory: font-awesome/fonts/.
License: SIL OFL 1.1
URL: http://scripts.sil.org/OFL
Code License
Applies to all CSS and LESS files in the following directories: font-awesome/css/, font-awesome/less/, and font-awesome/scss/.
License: MIT License
URL: http://opensource.org/licenses/mit-license.html
''')
Package(label='jQuery', license_text='''
Copyright jQuery Foundation and other contributors, https://jquery.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.
''')
Package(label='django-widget-tweaks', license_text='''
Copyright (c) 2011-2015 Mikhail Korobov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')

View File

@@ -0,0 +1,144 @@
from __future__ import unicode_literals
from common.classes import Package
Package(label='Bootstrap', license_text='''
The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')
Package(label='Animate.css', license_text='''
Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT)
''')
Package(label='Bootswatch', license_text='''
The MIT License (MIT)
Copyright (c) 2013 Thomas Park
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')
Package(label='fancyBox', license_text='''
fancyBox licensed under Creative Commons Attribution-NonCommercial 3.0 license.
''')
Package(label='jquery_lazyload', license_text='''
All code licensed under the MIT License. All images licensed under Creative Commons Attribution 3.0 Unported License. In other words you are basically free to do whatever you want. Just don't remove my name from the source.
''')
Package(label='ScrollView', license_text='''
Copyright (c) 2009 Toshimitsu Takahashi
Released under the MIT license.
''')
Package(label='Font Awesome', license_text='''
Font License
Applies to all desktop and webfont files in the following directory: font-awesome/fonts/.
License: SIL OFL 1.1
URL: http://scripts.sil.org/OFL
Code License
Applies to all CSS and LESS files in the following directories: font-awesome/css/, font-awesome/less/, and font-awesome/scss/.
License: MIT License
URL: http://opensource.org/licenses/mit-license.html
''')
Package(label='jQuery', license_text='''
Copyright jQuery Foundation and other contributors, https://jquery.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.
''')
Package(label='django-widget-tweaks', license_text='''
Copyright (c) 2011-2015 Mikhail Korobov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
''')

View File

@@ -1,23 +1,21 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
"PO-Revision-Date: 2016-03-21 21:06+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/"
"ar/)\n"
"Language: ar\n"
"Language-Team: Arabic (http://www.transifex.com/rosarior/mayan-edms/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
"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:11
msgid "Appearance"
@@ -45,8 +43,8 @@ msgstr ""
#: templates/500.html:11
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
"There's been an error. It's been reported to the site administrators via "
"e-mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/500.html:14
@@ -171,7 +169,7 @@ msgstr "ارسال"
msgid "Cancel"
msgstr "إلغاء"
#: templates/appearance/generic_list_horizontal.html:20
#: templates/appearance/generic_list_horizontal.html:21
#: templates/appearance/generic_list_subtemplate.html:108
msgid "No results"
msgstr ""
@@ -229,9 +227,7 @@ msgstr "First time login"
msgid ""
"You have just finished installing <strong>Mayan EDMS</strong>, "
"congratulations!"
msgstr ""
"You have just finished installing <strong>Mayan EDMS</strong>, "
"congratulations!"
msgstr "You have just finished installing <strong>Mayan EDMS</strong>, congratulations!"
#: templates/appearance/login.html:25
msgid "Login using the following credentials:"
@@ -256,9 +252,7 @@ msgstr "Password: <strong>%(password)s</strong>"
msgid ""
"Be sure to change the password to increase security and to disable this "
"message."
msgstr ""
"Be sure to change the password to increase security and to disable this "
"message."
msgstr "Be sure to change the password to increase security and to disable this message."
#: templates/appearance/login.html:45 templates/appearance/login.html.py:54
msgid "Sign in"

View File

@@ -1,21 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
"PO-Revision-Date: 2016-03-21 21:06+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/"
"language/bg/)\n"
"Language: bg\n"
"Language-Team: Bulgarian (http://www.transifex.com/rosarior/mayan-edms/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:11
@@ -44,8 +43,8 @@ msgstr ""
#: templates/500.html:11
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
"There's been an error. It's been reported to the site administrators via "
"e-mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/500.html:14
@@ -170,7 +169,7 @@ msgstr "Подаване"
msgid "Cancel"
msgstr "Отказ"
#: templates/appearance/generic_list_horizontal.html:20
#: templates/appearance/generic_list_horizontal.html:21
#: templates/appearance/generic_list_subtemplate.html:108
msgid "No results"
msgstr ""
@@ -228,8 +227,7 @@ msgstr "Логване за първи път"
msgid ""
"You have just finished installing <strong>Mayan EDMS</strong>, "
"congratulations!"
msgstr ""
"Вие приключихте инсталирането на <strong>Mayan EDMS</strong>, поздравления!"
msgstr "Вие приключихте инсталирането на <strong>Mayan EDMS</strong>, поздравления!"
#: templates/appearance/login.html:25
msgid "Login using the following credentials:"
@@ -254,9 +252,7 @@ msgstr "Парола: <strong>%(password)s</strong>"
msgid ""
"Be sure to change the password to increase security and to disable this "
"message."
msgstr ""
"Моля променете паролата, за да повишите нивото на сигурност и да "
"деактивирате това съобщение."
msgstr "Моля променете паролата, за да повишите нивото на сигурност и да деактивирате това съобщение."
#: templates/appearance/login.html:45 templates/appearance/login.html.py:54
msgid "Sign in"

View File

@@ -1,23 +1,21 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
"PO-Revision-Date: 2016-03-21 21:06+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/"
"rosarior/mayan-edms/language/bs_BA/)\n"
"Language: bs_BA\n"
"Language-Team: Bosnian (Bosnia and Herzegovina) (http://www.transifex.com/rosarior/mayan-edms/language/bs_BA/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Language: 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:11
msgid "Appearance"
@@ -45,8 +43,8 @@ msgstr ""
#: templates/500.html:11
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
"There's been an error. It's been reported to the site administrators via "
"e-mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/500.html:14
@@ -171,7 +169,7 @@ msgstr "Podnijeti"
msgid "Cancel"
msgstr "Otkazati"
#: templates/appearance/generic_list_horizontal.html:20
#: templates/appearance/generic_list_horizontal.html:21
#: templates/appearance/generic_list_subtemplate.html:108
msgid "No results"
msgstr ""
@@ -229,8 +227,7 @@ msgstr "Prijava - prvi put"
msgid ""
"You have just finished installing <strong>Mayan EDMS</strong>, "
"congratulations!"
msgstr ""
"Upravo ste završili instalaciju <strong>Mayan EDMS</strong>, čestitamo!"
msgstr "Upravo ste završili instalaciju <strong>Mayan EDMS</strong>, čestitamo!"
#: templates/appearance/login.html:25
msgid "Login using the following credentials:"
@@ -255,9 +252,7 @@ msgstr "Pasvord: <strong>%(password)s</strong>"
msgid ""
"Be sure to change the password to increase security and to disable this "
"message."
msgstr ""
"Ne zaboravite promijeniti pasvord da pojačate sigurnost i onemogućite dalje "
"prikazivanje ove poruke."
msgstr "Ne zaboravite promijeniti pasvord da pojačate sigurnost i onemogućite dalje prikazivanje ove poruke."
#: templates/appearance/login.html:45 templates/appearance/login.html.py:54
msgid "Sign in"

View File

@@ -1,21 +1,20 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
"PO-Revision-Date: 2016-03-21 21:06+0000\n"
"Last-Translator: Roberto Rosario\n"
"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/"
"da/)\n"
"Language: da\n"
"Language-Team: Danish (http://www.transifex.com/rosarior/mayan-edms/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:11
@@ -44,8 +43,8 @@ msgstr ""
#: templates/500.html:11
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
"There's been an error. It's been reported to the site administrators via "
"e-mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/500.html:14
@@ -170,7 +169,7 @@ msgstr ""
msgid "Cancel"
msgstr ""
#: templates/appearance/generic_list_horizontal.html:20
#: templates/appearance/generic_list_horizontal.html:21
#: templates/appearance/generic_list_subtemplate.html:108
msgid "No results"
msgstr ""

View File

@@ -1,22 +1,21 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#
# Translators:
# Berny <berny@bernhard-marx.de>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Mayan EDMS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-04-27 14:09-0400\n"
"POT-Creation-Date: 2016-11-23 02:52-0400\n"
"PO-Revision-Date: 2016-03-21 21:06+0000\n"
"Last-Translator: Mathias Behrle <mathiasb@m9s.biz>\n"
"Language-Team: German (Germany) (http://www.transifex.com/rosarior/mayan-"
"edms/language/de_DE/)\n"
"Language: de_DE\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"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps.py:11
@@ -45,19 +44,15 @@ msgstr "Serverfehler"
#: templates/500.html:11
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
"Es kam zu einem Fehler. Der Fehler wurde per E-Mail and die Administratoren "
"gemeldet und sollte bald behoben werden. Vielen Dank für Ihre Geduld."
"There's been an error. It's been reported to the site administrators via "
"e-mail and should be fixed shortly. Thanks for your patience."
msgstr "Es kam zu einem Fehler. Der Fehler wurde per E-Mail and die Administratoren gemeldet und sollte bald behoben werden. Vielen Dank für Ihre Geduld."
#: templates/500.html:14
msgid ""
"If you need assistance, you may reference this error via the following "
"identifier:"
msgstr ""
"Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung "
"referenzieren: "
msgstr "Wenn Sie Hilfe brauchen, können Sie den Fehler über folgende Kennung referenzieren: "
#: templates/appearance/about.html:8 templates/appearance/about.html.py:57
msgid "About"
@@ -175,7 +170,7 @@ msgstr "Absenden"
msgid "Cancel"
msgstr "Abbrechen"
#: templates/appearance/generic_list_horizontal.html:20
#: templates/appearance/generic_list_horizontal.html:21
#: templates/appearance/generic_list_subtemplate.html:108
msgid "No results"
msgstr "Kein Ergebnis"
@@ -185,9 +180,7 @@ msgstr "Kein Ergebnis"
msgid ""
"Total (%(start)s - %(end)s out of %(total)s) (Page %(page_number)s of "
"%(total_pages)s)"
msgstr ""
"Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von "
"%(total_pages)s)"
msgstr "Gesamt (%(start)s - %(end)s von %(total)s) (Seite %(page_number)s von %(total_pages)s)"
#: templates/appearance/generic_list_subtemplate.html:14
#: templates/appearance/generic_list_subtemplate.html:17
@@ -235,9 +228,7 @@ msgstr "Erstanmeldung"
msgid ""
"You have just finished installing <strong>Mayan EDMS</strong>, "
"congratulations!"
msgstr ""
"Herzlichen Glückwunsch! Sie haben die Installation von <strong>Mayan EDMS</"
"strong> erfolgreich abgeschlossen. "
msgstr "Herzlichen Glückwunsch! Sie haben die Installation von <strong>Mayan EDMS</strong> erfolgreich abgeschlossen. "
#: templates/appearance/login.html:25
msgid "Login using the following credentials:"
@@ -262,9 +253,7 @@ msgstr "Passwort: <strong>%(password)s</strong>"
msgid ""
"Be sure to change the password to increase security and to disable this "
"message."
msgstr ""
"Bitte ändern Sie das Passwort, um die Sicherheit zu erhöhen und diese "
"Nachricht zu deaktivieren."
msgstr "Bitte ändern Sie das Passwort, um die Sicherheit zu erhöhen und diese Nachricht zu deaktivieren."
#: templates/appearance/login.html:45 templates/appearance/login.html.py:54
msgid "Sign in"

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