From 9d26fa86ffc65294cdc3c6120d482d6cb3b19502 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 7 Jan 2016 11:10:33 +0100 Subject: [PATCH 01/41] Fixing error message when creating membership for existing user in the project --- taiga/auth/services.py | 2 +- taiga/locale/ca/LC_MESSAGES/django.po | 8 ++++---- taiga/locale/de/LC_MESSAGES/django.po | 10 +++++----- taiga/locale/en/LC_MESSAGES/django.po | 4 ++-- taiga/locale/es/LC_MESSAGES/django.po | 10 +++++----- taiga/locale/fi/LC_MESSAGES/django.po | 8 ++++---- taiga/locale/fr/LC_MESSAGES/django.po | 10 +++++----- taiga/locale/it/LC_MESSAGES/django.po | 10 +++++----- taiga/locale/nl/LC_MESSAGES/django.po | 8 ++++---- taiga/locale/pl/LC_MESSAGES/django.po | 8 ++++---- taiga/locale/pt_BR/LC_MESSAGES/django.po | 8 ++++---- taiga/locale/ru/LC_MESSAGES/django.po | 10 +++++----- taiga/locale/zh-Hant/LC_MESSAGES/django.po | 8 ++++---- 13 files changed, 52 insertions(+), 52 deletions(-) diff --git a/taiga/auth/services.py b/taiga/auth/services.py index 70da5281..777311aa 100644 --- a/taiga/auth/services.py +++ b/taiga/auth/services.py @@ -141,7 +141,7 @@ def private_register_for_existing_user(token:str, username:str, password:str): membership.user = user membership.save(update_fields=["user"]) except IntegrityError: - raise exc.IntegrityError(_("Membership with user is already exists.")) + raise exc.IntegrityError(_("This user is already a member of the project.")) send_register_email(user) return user diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index 063a8865..4231447c 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 13:35+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Catalan (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/ca/)\n" @@ -58,8 +58,8 @@ msgid "User is already registered." msgstr "Aquest usuari ja està registrat" #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Aquest usuari ja es membre" +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po index 92c3539e..e50e4743 100644 --- a/taiga/locale/de/LC_MESSAGES/django.po +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -17,9 +17,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-11 09:45+0000\n" -"Last-Translator: Guido Brand\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"Last-Translator: Taiga Dev Team \n" "Language-Team: German (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/de/)\n" "MIME-Version: 1.0\n" @@ -68,8 +68,8 @@ msgid "User is already registered." msgstr "Der Benutzer ist schon registriert." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Der Benutzer für diese Mitgliedschaft existiert bereits." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index f54add46..b6d0fae0 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Taiga Dev Team \n" @@ -54,7 +54,7 @@ msgid "User is already registered." msgstr "" #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." +msgid "This user is already a member of the project." msgstr "" #: taiga/auth/services.py:170 diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index c04a0dd3..45427d54 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 21:24+0000\n" -"Last-Translator: Jesus Marin \n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"Last-Translator: Taiga Dev Team \n" "Language-Team: Spanish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/es/)\n" "MIME-Version: 1.0\n" @@ -62,8 +62,8 @@ msgid "User is already registered." msgstr "Este usuario ya está registrado." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Ya existe una membresía asociada a este usuario." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index ebc557e3..3c5e2065 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 08:25+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Finnish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/fi/)\n" @@ -59,8 +59,8 @@ msgid "User is already registered." msgstr "Käyttäjä on jo rekisteröitynyt." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Jäsenyys on jo olemassa." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 43a5dc7f..71c9fa5a 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -18,9 +18,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-17 20:48+0000\n" -"Last-Translator: Regis TEDONE \n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"Last-Translator: Taiga Dev Team \n" "Language-Team: French (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/fr/)\n" "MIME-Version: 1.0\n" @@ -68,8 +68,8 @@ msgid "User is already registered." msgstr "Cet utilisateur est déjà inscrit." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Cet utilisateur est déjà membre." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index be121f5c..56959497 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -13,9 +13,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-10 14:10+0000\n" -"Last-Translator: Andrea Raimondi \n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"Last-Translator: Taiga Dev Team \n" "Language-Team: Italian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/it/)\n" "MIME-Version: 1.0\n" @@ -64,8 +64,8 @@ msgid "User is already registered." msgstr "L'Utente è già registrato." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "L'utente risulta già associato." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po index a9f6772b..b3c24261 100644 --- a/taiga/locale/nl/LC_MESSAGES/django.po +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 13:41+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Dutch (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/nl/)\n" @@ -58,8 +58,8 @@ msgid "User is already registered." msgstr "Gebruiker is al geregistreerd." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Lidmaatschap met gebruiker bestaat al." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/pl/LC_MESSAGES/django.po b/taiga/locale/pl/LC_MESSAGES/django.po index 52b696ff..d2e1e8f9 100644 --- a/taiga/locale/pl/LC_MESSAGES/django.po +++ b/taiga/locale/pl/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 08:25+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Polish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/pl/)\n" @@ -60,8 +60,8 @@ msgid "User is already registered." msgstr "Użytkownik już zarejestrowany" #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Członkowstwo z użytkownikiem już istnieje." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/pt_BR/LC_MESSAGES/django.po b/taiga/locale/pt_BR/LC_MESSAGES/django.po index 21b3b2b5..e3fca96d 100644 --- a/taiga/locale/pt_BR/LC_MESSAGES/django.po +++ b/taiga/locale/pt_BR/LC_MESSAGES/django.po @@ -18,8 +18,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 08:25+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/taiga-agile-llc/" "taiga-back/language/pt_BR/)\n" @@ -67,8 +67,8 @@ msgid "User is already registered." msgstr "Este usuário já está registrado." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Esse usuário já é membro." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/ru/LC_MESSAGES/django.po b/taiga/locale/ru/LC_MESSAGES/django.po index 451c5c66..b3c236d1 100644 --- a/taiga/locale/ru/LC_MESSAGES/django.po +++ b/taiga/locale/ru/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-07 12:59+0000\n" -"Last-Translator: Dmitriy Volkov \n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"Last-Translator: Taiga Dev Team \n" "Language-Team: Russian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/ru/)\n" "MIME-Version: 1.0\n" @@ -63,8 +63,8 @@ msgid "User is already registered." msgstr "Пользователь уже зарегистрирован." #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "Членство с этим пользователем уже существует." +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index e871dced..8263e82c 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-05 11:11+0100\n" -"PO-Revision-Date: 2015-11-02 08:25+0000\n" +"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"PO-Revision-Date: 2016-01-07 10:12+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Chinese Traditional (http://www.transifex.com/taiga-agile-llc/" "taiga-back/language/zh-Hant/)\n" @@ -60,8 +60,8 @@ msgid "User is already registered." msgstr "使用者已被註冊。" #: taiga/auth/services.py:144 -msgid "Membership with user is already exists." -msgstr "使用者的成員資格已存在。" +msgid "This user is already a member of the project." +msgstr "" #: taiga/auth/services.py:170 msgid "Error on creating new user." From 5c5ce487b6ed6a62fcc23eebe879a5f3ea0804ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Thu, 7 Jan 2016 11:19:24 +0100 Subject: [PATCH 02/41] Update CHANGELOG --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a605221f..ee8e2426 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,15 @@ # Changelog # +## 1.10.0 ??? (Unreleased) + +### Features +- ... + +### Misc +- Lots of small and not so small bugfixes. + + ## 1.9.1 Taiga Tribe (2016-01-05) ### Features @@ -20,7 +29,6 @@ ## 1.9.0 Abies Siberica (2015-11-02) ### Features - - Project can be starred or unstarred and the fans list can be obtained. - US, tasks and Issues can be upvoted or downvoted and the voters list can be obtained. - Now users can watch public issues, tasks and user stories. From 2ad5fda8643a427e78cc8b48c89d688c7bee2b14 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 14:53:19 +0200 Subject: [PATCH 03/41] Fix my email on copyright preamble on main source files. --- taiga/__init__.py | 2 +- taiga/auth/api.py | 2 +- taiga/auth/backends.py | 2 +- taiga/auth/permissions.py | 2 +- taiga/auth/serializers.py | 2 +- taiga/auth/services.py | 2 +- taiga/auth/signals.py | 2 +- taiga/auth/tokens.py | 2 +- taiga/base/__init__.py | 2 +- taiga/base/api/__init__.py | 2 +- taiga/base/api/authentication.py | 2 +- taiga/base/api/fields.py | 2 +- taiga/base/api/generics.py | 2 +- taiga/base/api/mixins.py | 2 +- taiga/base/api/negotiation.py | 2 +- taiga/base/api/pagination.py | 2 +- taiga/base/api/parsers.py | 2 +- taiga/base/api/permissions.py | 2 +- taiga/base/api/relations.py | 2 +- taiga/base/api/renderers.py | 2 +- taiga/base/api/request.py | 2 +- taiga/base/api/reverse.py | 2 +- taiga/base/api/serializers.py | 2 +- taiga/base/api/settings.py | 2 +- taiga/base/api/static/api/css/bootstrap-tweaks.css | 2 +- taiga/base/api/static/api/css/default.css | 2 +- taiga/base/api/static/api/css/prettify.css | 2 +- taiga/base/api/static/api/js/default.js | 2 +- taiga/base/api/static/api/js/prettify-min.js | 2 +- taiga/base/api/templatetags/api.py | 2 +- taiga/base/api/throttling.py | 2 +- taiga/base/api/urlpatterns.py | 2 +- taiga/base/api/urls.py | 2 +- taiga/base/api/utils.py | 2 +- taiga/base/api/utils/__init__.py | 2 +- taiga/base/api/utils/breadcrumbs.py | 2 +- taiga/base/api/utils/encoders.py | 2 +- taiga/base/api/utils/formatting.py | 2 +- taiga/base/api/utils/mediatypes.py | 2 +- taiga/base/api/views.py | 2 +- taiga/base/api/viewsets.py | 2 +- taiga/base/apps.py | 2 +- taiga/base/connectors/exceptions.py | 2 +- taiga/base/decorators.py | 2 +- taiga/base/exceptions.py | 2 +- taiga/base/fields.py | 2 +- taiga/base/filters.py | 2 +- taiga/base/formats/en/formats.py | 2 +- taiga/base/formats/es/formats.py | 2 +- taiga/base/mails.py | 2 +- taiga/base/management/commands/test_emails.py | 2 +- taiga/base/middleware/cors.py | 2 +- taiga/base/neighbors.py | 2 +- taiga/base/response.py | 2 +- taiga/base/routers.py | 2 +- taiga/base/status.py | 2 +- taiga/base/storage.py | 2 +- taiga/base/tags.py | 2 +- taiga/base/throttling.py | 2 +- taiga/base/utils/contenttypes.py | 2 +- taiga/base/utils/db.py | 2 +- taiga/base/utils/dicts.py | 2 +- taiga/base/utils/diff.py | 2 +- taiga/base/utils/functions.py | 2 +- taiga/base/utils/iterators.py | 2 +- taiga/base/utils/json.py | 2 +- taiga/base/utils/sequence.py | 2 +- taiga/base/utils/signals.py | 2 +- taiga/base/utils/slug.py | 2 +- taiga/base/utils/text.py | 2 +- taiga/base/utils/urls.py | 2 +- taiga/celery.py | 2 +- taiga/contrib_routers.py | 2 +- taiga/deferred.py | 2 +- taiga/events/__init__.py | 2 +- taiga/events/apps.py | 2 +- taiga/events/backends/__init__.py | 2 +- taiga/events/backends/base.py | 2 +- taiga/events/backends/postgresql.py | 2 +- taiga/events/backends/rabbitmq.py | 2 +- taiga/events/events.py | 2 +- taiga/events/management/commands/emit_notification_message.py | 2 +- taiga/events/middleware.py | 2 +- taiga/events/signal_handlers.py | 2 +- taiga/export_import/api.py | 2 +- taiga/export_import/dump_service.py | 2 +- taiga/export_import/management/commands/dump_project.py | 2 +- taiga/export_import/management/commands/load_dump.py | 2 +- taiga/export_import/mixins.py | 2 +- taiga/export_import/permissions.py | 2 +- taiga/export_import/renderers.py | 2 +- taiga/export_import/serializers.py | 2 +- taiga/export_import/service.py | 2 +- taiga/export_import/tasks.py | 2 +- taiga/export_import/throttling.py | 2 +- taiga/external_apps/admin.py | 2 +- taiga/external_apps/api.py | 2 +- taiga/external_apps/auth_backends.py | 2 +- taiga/external_apps/encryption.py | 2 +- taiga/external_apps/models.py | 2 +- taiga/external_apps/permissions.py | 2 +- taiga/external_apps/serializers.py | 2 +- taiga/external_apps/services.py | 2 +- taiga/feedback/__init__.py | 2 +- taiga/feedback/admin.py | 2 +- taiga/feedback/api.py | 2 +- taiga/feedback/apps.py | 2 +- taiga/feedback/models.py | 2 +- taiga/feedback/permissions.py | 2 +- taiga/feedback/routers.py | 2 +- taiga/feedback/serializers.py | 2 +- taiga/feedback/services.py | 2 +- taiga/front/templatetags/functions.py | 2 +- taiga/front/urls.py | 2 +- taiga/hooks/api.py | 2 +- taiga/hooks/bitbucket/api.py | 2 +- taiga/hooks/bitbucket/event_hooks.py | 2 +- taiga/hooks/bitbucket/services.py | 2 +- taiga/hooks/event_hooks.py | 2 +- taiga/hooks/exceptions.py | 2 +- taiga/hooks/github/api.py | 2 +- taiga/hooks/github/event_hooks.py | 2 +- taiga/hooks/github/services.py | 2 +- taiga/hooks/gitlab/api.py | 2 +- taiga/hooks/gitlab/event_hooks.py | 2 +- taiga/hooks/gitlab/services.py | 2 +- taiga/locale/api.py | 2 +- taiga/locale/permissions.py | 2 +- taiga/mdrender/__init__.py | 2 +- taiga/mdrender/extensions/target_link.py | 2 +- taiga/mdrender/extensions/wikilinks.py | 2 +- taiga/mdrender/service.py | 2 +- taiga/mdrender/templatetags/functions.py | 2 +- taiga/permissions/permissions.py | 2 +- taiga/permissions/service.py | 2 +- taiga/projects/__init__.py | 2 +- taiga/projects/admin.py | 2 +- taiga/projects/api.py | 2 +- taiga/projects/apps.py | 2 +- taiga/projects/attachments/__init__.py | 2 +- taiga/projects/attachments/admin.py | 2 +- taiga/projects/attachments/api.py | 2 +- taiga/projects/attachments/apps.py | 2 +- taiga/projects/attachments/models.py | 2 +- taiga/projects/attachments/permissions.py | 2 +- taiga/projects/attachments/serializers.py | 2 +- taiga/projects/choices.py | 2 +- taiga/projects/custom_attributes/admin.py | 2 +- taiga/projects/custom_attributes/api.py | 2 +- taiga/projects/custom_attributes/choices.py | 2 +- taiga/projects/custom_attributes/models.py | 2 +- taiga/projects/custom_attributes/permissions.py | 2 +- taiga/projects/custom_attributes/serializers.py | 2 +- taiga/projects/custom_attributes/services.py | 2 +- taiga/projects/custom_attributes/signals.py | 2 +- taiga/projects/history/api.py | 2 +- taiga/projects/history/choices.py | 2 +- taiga/projects/history/freeze_impl.py | 2 +- taiga/projects/history/mixins.py | 2 +- taiga/projects/history/models.py | 2 +- taiga/projects/history/permissions.py | 2 +- taiga/projects/history/serializers.py | 2 +- taiga/projects/history/services.py | 2 +- taiga/projects/history/templatetags/functions.py | 2 +- taiga/projects/issues/__init__.py | 2 +- taiga/projects/issues/admin.py | 2 +- taiga/projects/issues/api.py | 2 +- taiga/projects/issues/apps.py | 2 +- taiga/projects/issues/models.py | 2 +- taiga/projects/issues/permissions.py | 2 +- taiga/projects/issues/serializers.py | 2 +- taiga/projects/issues/services.py | 2 +- taiga/projects/issues/signals.py | 2 +- taiga/projects/likes/admin.py | 2 +- taiga/projects/likes/mixins/serializers.py | 2 +- taiga/projects/likes/mixins/viewsets.py | 2 +- taiga/projects/likes/models.py | 2 +- taiga/projects/likes/serializers.py | 2 +- taiga/projects/likes/services.py | 2 +- taiga/projects/likes/utils.py | 2 +- taiga/projects/management/commands/sample_data.py | 2 +- taiga/projects/milestones/admin.py | 2 +- taiga/projects/milestones/api.py | 2 +- taiga/projects/milestones/models.py | 2 +- taiga/projects/milestones/permissions.py | 2 +- taiga/projects/milestones/serializers.py | 2 +- taiga/projects/milestones/services.py | 2 +- taiga/projects/mixins/blocked.py | 2 +- taiga/projects/mixins/on_destroy.py | 2 +- taiga/projects/mixins/ordering.py | 2 +- taiga/projects/models.py | 2 +- taiga/projects/notifications/admin.py | 2 +- taiga/projects/notifications/api.py | 2 +- taiga/projects/notifications/choices.py | 2 +- .../notifications/management/commands/send_notifications.py | 2 +- taiga/projects/notifications/mixins.py | 2 +- taiga/projects/notifications/models.py | 2 +- taiga/projects/notifications/permissions.py | 2 +- taiga/projects/notifications/serializers.py | 2 +- taiga/projects/notifications/services.py | 2 +- taiga/projects/notifications/utils.py | 2 +- taiga/projects/notifications/validators.py | 2 +- taiga/projects/occ/__init__.py | 2 +- taiga/projects/occ/mixins.py | 2 +- taiga/projects/permissions.py | 2 +- taiga/projects/references/api.py | 2 +- taiga/projects/references/models.py | 2 +- taiga/projects/references/permissions.py | 2 +- taiga/projects/references/sequences.py | 2 +- taiga/projects/references/serializers.py | 2 +- taiga/projects/references/services.py | 2 +- taiga/projects/serializers.py | 2 +- taiga/projects/services/__init__.py | 2 +- taiga/projects/services/bulk_update_order.py | 2 +- taiga/projects/services/filters.py | 2 +- taiga/projects/services/modules_config.py | 2 +- taiga/projects/services/stats.py | 2 +- taiga/projects/services/tags_colors.py | 2 +- taiga/projects/signals.py | 2 +- taiga/projects/tasks/__init__.py | 2 +- taiga/projects/tasks/admin.py | 2 +- taiga/projects/tasks/api.py | 2 +- taiga/projects/tasks/apps.py | 2 +- taiga/projects/tasks/models.py | 2 +- taiga/projects/tasks/permissions.py | 2 +- taiga/projects/tasks/serializers.py | 2 +- taiga/projects/tasks/services.py | 2 +- taiga/projects/tasks/signals.py | 2 +- taiga/projects/translations.py | 2 +- taiga/projects/userstories/__init__.py | 2 +- taiga/projects/userstories/admin.py | 2 +- taiga/projects/userstories/api.py | 2 +- taiga/projects/userstories/apps.py | 2 +- taiga/projects/userstories/models.py | 2 +- taiga/projects/userstories/permissions.py | 2 +- taiga/projects/userstories/serializers.py | 2 +- taiga/projects/userstories/services.py | 2 +- taiga/projects/userstories/signals.py | 2 +- taiga/projects/userstories/validators.py | 2 +- taiga/projects/validators.py | 2 +- taiga/projects/votes/admin.py | 2 +- taiga/projects/votes/mixins/serializers.py | 2 +- taiga/projects/votes/mixins/viewsets.py | 2 +- taiga/projects/votes/models.py | 2 +- taiga/projects/votes/serializers.py | 2 +- taiga/projects/votes/services.py | 2 +- taiga/projects/votes/utils.py | 2 +- taiga/projects/wiki/admin.py | 2 +- taiga/projects/wiki/api.py | 2 +- taiga/projects/wiki/models.py | 2 +- taiga/projects/wiki/permissions.py | 2 +- taiga/projects/wiki/serializers.py | 2 +- taiga/routers.py | 2 +- taiga/searches/api.py | 2 +- taiga/searches/serializers.py | 2 +- taiga/searches/services.py | 2 +- taiga/timeline/__init__.py | 2 +- taiga/timeline/api.py | 2 +- taiga/timeline/apps.py | 2 +- .../commands/_clear_unnecessary_new_membership_entries.py | 2 +- .../management/commands/_rebuild_timeline_for_user_creation.py | 2 +- .../management/commands/_update_timeline_for_updated_tasks.py | 2 +- taiga/timeline/management/commands/rebuild_timeline.py | 2 +- .../commands/rebuild_timeline_iterating_per_projects.py | 2 +- taiga/timeline/models.py | 2 +- taiga/timeline/permissions.py | 2 +- taiga/timeline/serializers.py | 2 +- taiga/timeline/service.py | 2 +- taiga/timeline/signals.py | 2 +- taiga/timeline/timeline_implementations.py | 2 +- taiga/urls.py | 2 +- taiga/users/admin.py | 2 +- taiga/users/api.py | 2 +- taiga/users/filters.py | 2 +- taiga/users/forms.py | 2 +- taiga/users/gravatar.py | 2 +- taiga/users/models.py | 2 +- taiga/users/permissions.py | 2 +- taiga/users/serializers.py | 2 +- taiga/users/services.py | 2 +- taiga/users/signals.py | 2 +- taiga/users/validators.py | 2 +- taiga/userstorage/api.py | 2 +- taiga/userstorage/filters.py | 2 +- taiga/userstorage/models.py | 2 +- taiga/userstorage/permissions.py | 2 +- taiga/userstorage/serializers.py | 2 +- taiga/webhooks/__init__.py | 2 +- taiga/webhooks/api.py | 2 +- taiga/webhooks/apps.py | 2 +- taiga/webhooks/models.py | 2 +- taiga/webhooks/permissions.py | 2 +- taiga/webhooks/serializers.py | 2 +- taiga/webhooks/signal_handlers.py | 2 +- taiga/webhooks/tasks.py | 2 +- 295 files changed, 295 insertions(+), 295 deletions(-) diff --git a/taiga/__init__.py b/taiga/__init__.py index 8cca4ea3..45426195 100644 --- a/taiga/__init__.py +++ b/taiga/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/api.py b/taiga/auth/api.py index 03994310..51670b1e 100644 --- a/taiga/auth/api.py +++ b/taiga/auth/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/backends.py b/taiga/auth/backends.py index 3bf9b971..318c29f6 100644 --- a/taiga/auth/backends.py +++ b/taiga/auth/backends.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/permissions.py b/taiga/auth/permissions.py index 38ef4662..d4b558d8 100644 --- a/taiga/auth/permissions.py +++ b/taiga/auth/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/auth/serializers.py b/taiga/auth/serializers.py index 7a33e7ea..4bea0e80 100644 --- a/taiga/auth/serializers.py +++ b/taiga/auth/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/services.py b/taiga/auth/services.py index 777311aa..2431d5b1 100644 --- a/taiga/auth/services.py +++ b/taiga/auth/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/signals.py b/taiga/auth/signals.py index 90cba30f..9fcb0ca9 100644 --- a/taiga/auth/signals.py +++ b/taiga/auth/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/auth/tokens.py b/taiga/auth/tokens.py index b35fb771..f02de9bc 100644 --- a/taiga/auth/tokens.py +++ b/taiga/auth/tokens.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/__init__.py b/taiga/base/__init__.py index 9ad96b3a..a056c496 100644 --- a/taiga/base/__init__.py +++ b/taiga/base/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/__init__.py b/taiga/base/api/__init__.py index c377aeef..b0618e18 100644 --- a/taiga/base/api/__init__.py +++ b/taiga/base/api/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/authentication.py b/taiga/base/api/authentication.py index 693b17c8..f51dbb28 100644 --- a/taiga/base/api/authentication.py +++ b/taiga/base/api/authentication.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/fields.py b/taiga/base/api/fields.py index 465fbf8e..f55c6f1a 100644 --- a/taiga/base/api/fields.py +++ b/taiga/base/api/fields.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/generics.py b/taiga/base/api/generics.py index db1e0e0b..ba0f2c5d 100644 --- a/taiga/base/api/generics.py +++ b/taiga/base/api/generics.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/mixins.py b/taiga/base/api/mixins.py index d8a32342..e0f6fb04 100644 --- a/taiga/base/api/mixins.py +++ b/taiga/base/api/mixins.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/negotiation.py b/taiga/base/api/negotiation.py index 7749d48e..20eb48d7 100644 --- a/taiga/base/api/negotiation.py +++ b/taiga/base/api/negotiation.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/pagination.py b/taiga/base/api/pagination.py index 19d58f97..c93ac2d6 100644 --- a/taiga/base/api/pagination.py +++ b/taiga/base/api/pagination.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/parsers.py b/taiga/base/api/parsers.py index 6799ce13..2dfebbff 100644 --- a/taiga/base/api/parsers.py +++ b/taiga/base/api/parsers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/permissions.py b/taiga/base/api/permissions.py index fabf161e..7bb0dc70 100644 --- a/taiga/base/api/permissions.py +++ b/taiga/base/api/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/relations.py b/taiga/base/api/relations.py index 8215ff34..56924e28 100644 --- a/taiga/base/api/relations.py +++ b/taiga/base/api/relations.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/renderers.py b/taiga/base/api/renderers.py index 951d2dd1..057feeac 100644 --- a/taiga/base/api/renderers.py +++ b/taiga/base/api/renderers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/request.py b/taiga/base/api/request.py index 9cf69817..3ae941ad 100644 --- a/taiga/base/api/request.py +++ b/taiga/base/api/request.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/reverse.py b/taiga/base/api/reverse.py index 8c79494d..c91fab5d 100644 --- a/taiga/base/api/reverse.py +++ b/taiga/base/api/reverse.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/serializers.py b/taiga/base/api/serializers.py index 10b677ea..4797fe3b 100644 --- a/taiga/base/api/serializers.py +++ b/taiga/base/api/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/settings.py b/taiga/base/api/settings.py index 42f2fce9..3712e7e4 100644 --- a/taiga/base/api/settings.py +++ b/taiga/base/api/settings.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/static/api/css/bootstrap-tweaks.css b/taiga/base/api/static/api/css/bootstrap-tweaks.css index 6b30f2d1..ae3bf003 100644 --- a/taiga/base/api/static/api/css/bootstrap-tweaks.css +++ b/taiga/base/api/static/api/css/bootstrap-tweaks.css @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2016 Andrey Antukh + * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán * This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/static/api/css/default.css b/taiga/base/api/static/api/css/default.css index f9a400d0..c3a63595 100644 --- a/taiga/base/api/static/api/css/default.css +++ b/taiga/base/api/static/api/css/default.css @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2016 Andrey Antukh + * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán * This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/static/api/css/prettify.css b/taiga/base/api/static/api/css/prettify.css index 598734e2..9dbee133 100644 --- a/taiga/base/api/static/api/css/prettify.css +++ b/taiga/base/api/static/api/css/prettify.css @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2016 Andrey Antukh + * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán * This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/static/api/js/default.js b/taiga/base/api/static/api/js/default.js index 8996f763..892e059f 100644 --- a/taiga/base/api/static/api/js/default.js +++ b/taiga/base/api/static/api/js/default.js @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2016 Andrey Antukh + * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán * This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/static/api/js/prettify-min.js b/taiga/base/api/static/api/js/prettify-min.js index 7c37d5c3..27b6653b 100644 --- a/taiga/base/api/static/api/js/prettify-min.js +++ b/taiga/base/api/static/api/js/prettify-min.js @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2016 Andrey Antukh + * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán * This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/templatetags/api.py b/taiga/base/api/templatetags/api.py index 5f097b60..bff26111 100644 --- a/taiga/base/api/templatetags/api.py +++ b/taiga/base/api/templatetags/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/throttling.py b/taiga/base/api/throttling.py index 5f8c74d8..7529acb8 100644 --- a/taiga/base/api/throttling.py +++ b/taiga/base/api/throttling.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/urlpatterns.py b/taiga/base/api/urlpatterns.py index 249017ae..e5288036 100644 --- a/taiga/base/api/urlpatterns.py +++ b/taiga/base/api/urlpatterns.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/urls.py b/taiga/base/api/urls.py index ba7eb521..2a73c13e 100644 --- a/taiga/base/api/urls.py +++ b/taiga/base/api/urls.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils.py b/taiga/base/api/utils.py index b5a8b960..01ef21ba 100644 --- a/taiga/base/api/utils.py +++ b/taiga/base/api/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils/__init__.py b/taiga/base/api/utils/__init__.py index 61a219d5..cb91e0c5 100644 --- a/taiga/base/api/utils/__init__.py +++ b/taiga/base/api/utils/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils/breadcrumbs.py b/taiga/base/api/utils/breadcrumbs.py index d0ff8c7b..6cb08ef7 100644 --- a/taiga/base/api/utils/breadcrumbs.py +++ b/taiga/base/api/utils/breadcrumbs.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils/encoders.py b/taiga/base/api/utils/encoders.py index f87a77b6..40818fe4 100644 --- a/taiga/base/api/utils/encoders.py +++ b/taiga/base/api/utils/encoders.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils/formatting.py b/taiga/base/api/utils/formatting.py index 44d89218..299c9bbd 100644 --- a/taiga/base/api/utils/formatting.py +++ b/taiga/base/api/utils/formatting.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/utils/mediatypes.py b/taiga/base/api/utils/mediatypes.py index 90e53bdf..67b1b6e7 100644 --- a/taiga/base/api/utils/mediatypes.py +++ b/taiga/base/api/utils/mediatypes.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/views.py b/taiga/base/api/views.py index a718893d..eea84ebb 100644 --- a/taiga/base/api/views.py +++ b/taiga/base/api/views.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/api/viewsets.py b/taiga/base/api/viewsets.py index 714172e3..2fe68ca3 100644 --- a/taiga/base/api/viewsets.py +++ b/taiga/base/api/viewsets.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/apps.py b/taiga/base/apps.py index 04c717fd..0c08417f 100644 --- a/taiga/base/apps.py +++ b/taiga/base/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/connectors/exceptions.py b/taiga/base/connectors/exceptions.py index 839037e8..d296f5c3 100644 --- a/taiga/base/connectors/exceptions.py +++ b/taiga/base/connectors/exceptions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/decorators.py b/taiga/base/decorators.py index 62b405cf..00989d87 100644 --- a/taiga/base/decorators.py +++ b/taiga/base/decorators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/exceptions.py b/taiga/base/exceptions.py index a4c9d661..b498a194 100644 --- a/taiga/base/exceptions.py +++ b/taiga/base/exceptions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/fields.py b/taiga/base/fields.py index 0fc5316c..aa43023e 100644 --- a/taiga/base/fields.py +++ b/taiga/base/fields.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/filters.py b/taiga/base/filters.py index f8901b17..be9ad4f0 100644 --- a/taiga/base/filters.py +++ b/taiga/base/filters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/formats/en/formats.py b/taiga/base/formats/en/formats.py index 3f949e39..f4addfd3 100644 --- a/taiga/base/formats/en/formats.py +++ b/taiga/base/formats/en/formats.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/formats/es/formats.py b/taiga/base/formats/es/formats.py index d36c3090..c97f0e20 100644 --- a/taiga/base/formats/es/formats.py +++ b/taiga/base/formats/es/formats.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/mails.py b/taiga/base/mails.py index 6ab29280..33c19ba4 100644 --- a/taiga/base/mails.py +++ b/taiga/base/mails.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/management/commands/test_emails.py b/taiga/base/management/commands/test_emails.py index f29621e1..09fa3a1c 100644 --- a/taiga/base/management/commands/test_emails.py +++ b/taiga/base/management/commands/test_emails.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/middleware/cors.py b/taiga/base/middleware/cors.py index 1bdb3342..06df90c3 100644 --- a/taiga/base/middleware/cors.py +++ b/taiga/base/middleware/cors.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/neighbors.py b/taiga/base/neighbors.py index a1edbef3..74e40caa 100644 --- a/taiga/base/neighbors.py +++ b/taiga/base/neighbors.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/response.py b/taiga/base/response.py index da665972..dfa701a3 100644 --- a/taiga/base/response.py +++ b/taiga/base/response.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/routers.py b/taiga/base/routers.py index 996276ff..d21ddbee 100644 --- a/taiga/base/routers.py +++ b/taiga/base/routers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/status.py b/taiga/base/status.py index f717f8c8..534aff38 100644 --- a/taiga/base/status.py +++ b/taiga/base/status.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/storage.py b/taiga/base/storage.py index 88edb6d1..4960d4df 100644 --- a/taiga/base/storage.py +++ b/taiga/base/storage.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/tags.py b/taiga/base/tags.py index 8e59ce7d..b89e60cc 100644 --- a/taiga/base/tags.py +++ b/taiga/base/tags.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/throttling.py b/taiga/base/throttling.py index b13915e3..d3c385b7 100644 --- a/taiga/base/throttling.py +++ b/taiga/base/throttling.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/contenttypes.py b/taiga/base/utils/contenttypes.py index 9f9c14cc..4fa241b3 100644 --- a/taiga/base/utils/contenttypes.py +++ b/taiga/base/utils/contenttypes.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/db.py b/taiga/base/utils/db.py index f9fd4b9d..5047b490 100644 --- a/taiga/base/utils/db.py +++ b/taiga/base/utils/db.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/dicts.py b/taiga/base/utils/dicts.py index 10a477b6..bd970b7e 100644 --- a/taiga/base/utils/dicts.py +++ b/taiga/base/utils/dicts.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/diff.py b/taiga/base/utils/diff.py index 8c7c4f0d..82cf8eb8 100644 --- a/taiga/base/utils/diff.py +++ b/taiga/base/utils/diff.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/functions.py b/taiga/base/utils/functions.py index 560fc1c8..82ef94a8 100644 --- a/taiga/base/utils/functions.py +++ b/taiga/base/utils/functions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/utils/iterators.py b/taiga/base/utils/iterators.py index 8be43791..9cd24cd6 100644 --- a/taiga/base/utils/iterators.py +++ b/taiga/base/utils/iterators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/utils/json.py b/taiga/base/utils/json.py index d9293519..dcb4f748 100644 --- a/taiga/base/utils/json.py +++ b/taiga/base/utils/json.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/sequence.py b/taiga/base/utils/sequence.py index 77ac2ca6..fc431f4e 100644 --- a/taiga/base/utils/sequence.py +++ b/taiga/base/utils/sequence.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/signals.py b/taiga/base/utils/signals.py index cc4fff9b..170b7c77 100644 --- a/taiga/base/utils/signals.py +++ b/taiga/base/utils/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/base/utils/slug.py b/taiga/base/utils/slug.py index 83943f09..3c5ee60a 100644 --- a/taiga/base/utils/slug.py +++ b/taiga/base/utils/slug.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/text.py b/taiga/base/utils/text.py index 7338974e..2431e47e 100644 --- a/taiga/base/utils/text.py +++ b/taiga/base/utils/text.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/base/utils/urls.py b/taiga/base/utils/urls.py index bd3fe96c..852767a6 100644 --- a/taiga/base/utils/urls.py +++ b/taiga/base/utils/urls.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/celery.py b/taiga/celery.py index f03594b4..d69078ba 100644 --- a/taiga/celery.py +++ b/taiga/celery.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/contrib_routers.py b/taiga/contrib_routers.py index ea1cdc2f..99bd2d12 100644 --- a/taiga/contrib_routers.py +++ b/taiga/contrib_routers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/deferred.py b/taiga/deferred.py index 8788ed00..b73ac83e 100644 --- a/taiga/deferred.py +++ b/taiga/deferred.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/events/__init__.py b/taiga/events/__init__.py index 35f5be4a..bea6d7a0 100644 --- a/taiga/events/__init__.py +++ b/taiga/events/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/events/apps.py b/taiga/events/apps.py index 385b4bf4..db74dac8 100644 --- a/taiga/events/apps.py +++ b/taiga/events/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/events/backends/__init__.py b/taiga/events/backends/__init__.py index bdd3825e..8cfcd038 100644 --- a/taiga/events/backends/__init__.py +++ b/taiga/events/backends/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/events/backends/base.py b/taiga/events/backends/base.py index 9ff0a9b2..0bcaf69e 100644 --- a/taiga/events/backends/base.py +++ b/taiga/events/backends/base.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/backends/postgresql.py b/taiga/events/backends/postgresql.py index 57ae500c..4072120a 100644 --- a/taiga/events/backends/postgresql.py +++ b/taiga/events/backends/postgresql.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/backends/rabbitmq.py b/taiga/events/backends/rabbitmq.py index 3702d47d..2e65163c 100644 --- a/taiga/events/backends/rabbitmq.py +++ b/taiga/events/backends/rabbitmq.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/events.py b/taiga/events/events.py index 1e7aa64c..394495a9 100644 --- a/taiga/events/events.py +++ b/taiga/events/events.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/management/commands/emit_notification_message.py b/taiga/events/management/commands/emit_notification_message.py index 4d075e92..f6500a25 100644 --- a/taiga/events/management/commands/emit_notification_message.py +++ b/taiga/events/management/commands/emit_notification_message.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/events/middleware.py b/taiga/events/middleware.py index 669d6167..4d2e349f 100644 --- a/taiga/events/middleware.py +++ b/taiga/events/middleware.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/signal_handlers.py b/taiga/events/signal_handlers.py index f2db51a8..69f5d47c 100644 --- a/taiga/events/signal_handlers.py +++ b/taiga/events/signal_handlers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/api.py b/taiga/export_import/api.py index 6bc0d1b4..13278356 100644 --- a/taiga/export_import/api.py +++ b/taiga/export_import/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/dump_service.py b/taiga/export_import/dump_service.py index 7508dd7c..b19540f1 100644 --- a/taiga/export_import/dump_service.py +++ b/taiga/export_import/dump_service.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/management/commands/dump_project.py b/taiga/export_import/management/commands/dump_project.py index 5db2319d..3c042b31 100644 --- a/taiga/export_import/management/commands/dump_project.py +++ b/taiga/export_import/management/commands/dump_project.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/management/commands/load_dump.py b/taiga/export_import/management/commands/load_dump.py index 6e2680d2..8cb1238a 100644 --- a/taiga/export_import/management/commands/load_dump.py +++ b/taiga/export_import/management/commands/load_dump.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/mixins.py b/taiga/export_import/mixins.py index c05c6154..f2bd52b4 100644 --- a/taiga/export_import/mixins.py +++ b/taiga/export_import/mixins.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/permissions.py b/taiga/export_import/permissions.py index 15d7209d..dd9fb6c3 100644 --- a/taiga/export_import/permissions.py +++ b/taiga/export_import/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/renderers.py b/taiga/export_import/renderers.py index b1ac06fb..9cbf9cb4 100644 --- a/taiga/export_import/renderers.py +++ b/taiga/export_import/renderers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index 6d5a6138..aeba0e12 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/service.py b/taiga/export_import/service.py index f61ced4a..f7091244 100644 --- a/taiga/export_import/service.py +++ b/taiga/export_import/service.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/tasks.py b/taiga/export_import/tasks.py index 73c66c96..129bf286 100644 --- a/taiga/export_import/tasks.py +++ b/taiga/export_import/tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/export_import/throttling.py b/taiga/export_import/throttling.py index a05e4cf2..77943ee1 100644 --- a/taiga/export_import/throttling.py +++ b/taiga/export_import/throttling.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/admin.py b/taiga/external_apps/admin.py index ea098236..775543c5 100644 --- a/taiga/external_apps/admin.py +++ b/taiga/external_apps/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/api.py b/taiga/external_apps/api.py index 407b0c88..e909cf6e 100644 --- a/taiga/external_apps/api.py +++ b/taiga/external_apps/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/auth_backends.py b/taiga/external_apps/auth_backends.py index 13ce1e5d..28e7894a 100644 --- a/taiga/external_apps/auth_backends.py +++ b/taiga/external_apps/auth_backends.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/encryption.py b/taiga/external_apps/encryption.py index 9693ac4c..a41ec3f9 100644 --- a/taiga/external_apps/encryption.py +++ b/taiga/external_apps/encryption.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/models.py b/taiga/external_apps/models.py index a2496c4a..4018442f 100644 --- a/taiga/external_apps/models.py +++ b/taiga/external_apps/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/permissions.py b/taiga/external_apps/permissions.py index 8bb0f9e9..a386daef 100644 --- a/taiga/external_apps/permissions.py +++ b/taiga/external_apps/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/serializers.py b/taiga/external_apps/serializers.py index a4c83e71..9d76e63d 100644 --- a/taiga/external_apps/serializers.py +++ b/taiga/external_apps/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/external_apps/services.py b/taiga/external_apps/services.py index 1794cb6c..d6027f7b 100644 --- a/taiga/external_apps/services.py +++ b/taiga/external_apps/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/__init__.py b/taiga/feedback/__init__.py index 2b68fc6e..288ca6b6 100644 --- a/taiga/feedback/__init__.py +++ b/taiga/feedback/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/admin.py b/taiga/feedback/admin.py index 2eac4260..6246dee3 100644 --- a/taiga/feedback/admin.py +++ b/taiga/feedback/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/api.py b/taiga/feedback/api.py index ae529102..87de64cd 100644 --- a/taiga/feedback/api.py +++ b/taiga/feedback/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/apps.py b/taiga/feedback/apps.py index dae893ec..10d666ca 100644 --- a/taiga/feedback/apps.py +++ b/taiga/feedback/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/models.py b/taiga/feedback/models.py index f291006e..2af54af9 100644 --- a/taiga/feedback/models.py +++ b/taiga/feedback/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/permissions.py b/taiga/feedback/permissions.py index ead7f1d3..105d11e3 100644 --- a/taiga/feedback/permissions.py +++ b/taiga/feedback/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/routers.py b/taiga/feedback/routers.py index ac7cd1fc..25c3eb89 100644 --- a/taiga/feedback/routers.py +++ b/taiga/feedback/routers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/serializers.py b/taiga/feedback/serializers.py index bd42472d..6d5c7f3c 100644 --- a/taiga/feedback/serializers.py +++ b/taiga/feedback/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/feedback/services.py b/taiga/feedback/services.py index 80421fea..3b1b170e 100644 --- a/taiga/feedback/services.py +++ b/taiga/feedback/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/templatetags/functions.py b/taiga/front/templatetags/functions.py index 411a7146..383e67a4 100644 --- a/taiga/front/templatetags/functions.py +++ b/taiga/front/templatetags/functions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/urls.py b/taiga/front/urls.py index 4e85a885..d6082865 100644 --- a/taiga/front/urls.py +++ b/taiga/front/urls.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/api.py b/taiga/hooks/api.py index 0a2f9cc9..56090c4c 100644 --- a/taiga/hooks/api.py +++ b/taiga/hooks/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/bitbucket/api.py b/taiga/hooks/bitbucket/api.py index 49b3284e..ae32a4b2 100644 --- a/taiga/hooks/bitbucket/api.py +++ b/taiga/hooks/bitbucket/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/bitbucket/event_hooks.py b/taiga/hooks/bitbucket/event_hooks.py index 7d26f72b..b9ea7446 100644 --- a/taiga/hooks/bitbucket/event_hooks.py +++ b/taiga/hooks/bitbucket/event_hooks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/bitbucket/services.py b/taiga/hooks/bitbucket/services.py index 30772f89..93e5467e 100644 --- a/taiga/hooks/bitbucket/services.py +++ b/taiga/hooks/bitbucket/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/event_hooks.py b/taiga/hooks/event_hooks.py index 1614e2f4..20ecf900 100644 --- a/taiga/hooks/event_hooks.py +++ b/taiga/hooks/event_hooks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/exceptions.py b/taiga/hooks/exceptions.py index 6847ba6d..4cf12ef9 100644 --- a/taiga/hooks/exceptions.py +++ b/taiga/hooks/exceptions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/github/api.py b/taiga/hooks/github/api.py index b3437d1a..577a0575 100644 --- a/taiga/hooks/github/api.py +++ b/taiga/hooks/github/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/github/event_hooks.py b/taiga/hooks/github/event_hooks.py index 47f5b47a..6df55d21 100644 --- a/taiga/hooks/github/event_hooks.py +++ b/taiga/hooks/github/event_hooks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/github/services.py b/taiga/hooks/github/services.py index 0f37b4fa..544f28ff 100644 --- a/taiga/hooks/github/services.py +++ b/taiga/hooks/github/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/gitlab/api.py b/taiga/hooks/gitlab/api.py index fe33df65..e1a69a53 100644 --- a/taiga/hooks/gitlab/api.py +++ b/taiga/hooks/gitlab/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/gitlab/event_hooks.py b/taiga/hooks/gitlab/event_hooks.py index 5324f2fb..e3f4daf3 100644 --- a/taiga/hooks/gitlab/event_hooks.py +++ b/taiga/hooks/gitlab/event_hooks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/hooks/gitlab/services.py b/taiga/hooks/gitlab/services.py index 32e77e13..c49cbade 100644 --- a/taiga/hooks/gitlab/services.py +++ b/taiga/hooks/gitlab/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/locale/api.py b/taiga/locale/api.py index 3cacf7d9..ad638eb9 100644 --- a/taiga/locale/api.py +++ b/taiga/locale/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/locale/permissions.py b/taiga/locale/permissions.py index 2ce79d8e..56fece12 100644 --- a/taiga/locale/permissions.py +++ b/taiga/locale/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/mdrender/__init__.py b/taiga/mdrender/__init__.py index 0a4dc435..ab949765 100644 --- a/taiga/mdrender/__init__.py +++ b/taiga/mdrender/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/mdrender/extensions/target_link.py b/taiga/mdrender/extensions/target_link.py index 0e183c3f..21fd08c8 100644 --- a/taiga/mdrender/extensions/target_link.py +++ b/taiga/mdrender/extensions/target_link.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Alejandro Alonso diff --git a/taiga/mdrender/extensions/wikilinks.py b/taiga/mdrender/extensions/wikilinks.py index aacadf38..fdeba954 100644 --- a/taiga/mdrender/extensions/wikilinks.py +++ b/taiga/mdrender/extensions/wikilinks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/mdrender/service.py b/taiga/mdrender/service.py index 24d64638..afac9a08 100644 --- a/taiga/mdrender/service.py +++ b/taiga/mdrender/service.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/mdrender/templatetags/functions.py b/taiga/mdrender/templatetags/functions.py index 853ca1cf..c1e32565 100644 --- a/taiga/mdrender/templatetags/functions.py +++ b/taiga/mdrender/templatetags/functions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/permissions/permissions.py b/taiga/permissions/permissions.py index 8cb72868..d3e9cb33 100644 --- a/taiga/permissions/permissions.py +++ b/taiga/permissions/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/permissions/service.py b/taiga/permissions/service.py index da47a8aa..c97fcb8c 100644 --- a/taiga/permissions/service.py +++ b/taiga/permissions/service.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/__init__.py b/taiga/projects/__init__.py index c5859639..88de7036 100644 --- a/taiga/projects/__init__.py +++ b/taiga/projects/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index 632f0f79..43468a16 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/api.py b/taiga/projects/api.py index fb333cb0..6e6c18b1 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/apps.py b/taiga/projects/apps.py index 3eb2749b..ff243c1f 100644 --- a/taiga/projects/apps.py +++ b/taiga/projects/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/__init__.py b/taiga/projects/attachments/__init__.py index 28c3b166..11a8c9e4 100644 --- a/taiga/projects/attachments/__init__.py +++ b/taiga/projects/attachments/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/admin.py b/taiga/projects/attachments/admin.py index b725aa60..cb4c9d9f 100644 --- a/taiga/projects/attachments/admin.py +++ b/taiga/projects/attachments/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/api.py b/taiga/projects/attachments/api.py index d2936a4f..7990ad6a 100644 --- a/taiga/projects/attachments/api.py +++ b/taiga/projects/attachments/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/apps.py b/taiga/projects/attachments/apps.py index ceed72de..dcc66fe0 100644 --- a/taiga/projects/attachments/apps.py +++ b/taiga/projects/attachments/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/models.py b/taiga/projects/attachments/models.py index 2a0cfe8d..2040262b 100644 --- a/taiga/projects/attachments/models.py +++ b/taiga/projects/attachments/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/permissions.py b/taiga/projects/attachments/permissions.py index 4ec542d5..dad64570 100644 --- a/taiga/projects/attachments/permissions.py +++ b/taiga/projects/attachments/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/attachments/serializers.py b/taiga/projects/attachments/serializers.py index b9ba6aad..7ab43dcb 100644 --- a/taiga/projects/attachments/serializers.py +++ b/taiga/projects/attachments/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/choices.py b/taiga/projects/choices.py index 1bae9ac6..c9b08efa 100644 --- a/taiga/projects/choices.py +++ b/taiga/projects/choices.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/admin.py b/taiga/projects/custom_attributes/admin.py index 56d7bb90..661d6934 100644 --- a/taiga/projects/custom_attributes/admin.py +++ b/taiga/projects/custom_attributes/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/api.py b/taiga/projects/custom_attributes/api.py index 486344ba..4a2147f0 100644 --- a/taiga/projects/custom_attributes/api.py +++ b/taiga/projects/custom_attributes/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/choices.py b/taiga/projects/custom_attributes/choices.py index 88bc1177..5a606412 100644 --- a/taiga/projects/custom_attributes/choices.py +++ b/taiga/projects/custom_attributes/choices.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/models.py b/taiga/projects/custom_attributes/models.py index 3f4af228..20711839 100644 --- a/taiga/projects/custom_attributes/models.py +++ b/taiga/projects/custom_attributes/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/permissions.py b/taiga/projects/custom_attributes/permissions.py index 43460ad9..41c32cf5 100644 --- a/taiga/projects/custom_attributes/permissions.py +++ b/taiga/projects/custom_attributes/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/serializers.py b/taiga/projects/custom_attributes/serializers.py index 760c8604..b1d0cb85 100644 --- a/taiga/projects/custom_attributes/serializers.py +++ b/taiga/projects/custom_attributes/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/services.py b/taiga/projects/custom_attributes/services.py index cd371cf1..54ee7289 100644 --- a/taiga/projects/custom_attributes/services.py +++ b/taiga/projects/custom_attributes/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/custom_attributes/signals.py b/taiga/projects/custom_attributes/signals.py index 1f6c4671..40897228 100644 --- a/taiga/projects/custom_attributes/signals.py +++ b/taiga/projects/custom_attributes/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/api.py b/taiga/projects/history/api.py index c6af2880..e257efc3 100644 --- a/taiga/projects/history/api.py +++ b/taiga/projects/history/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/choices.py b/taiga/projects/history/choices.py index c4a6af78..19987ae0 100644 --- a/taiga/projects/history/choices.py +++ b/taiga/projects/history/choices.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/freeze_impl.py b/taiga/projects/history/freeze_impl.py index 0a68806e..1c8cfe4d 100644 --- a/taiga/projects/history/freeze_impl.py +++ b/taiga/projects/history/freeze_impl.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/mixins.py b/taiga/projects/history/mixins.py index faec3b00..890eed1e 100644 --- a/taiga/projects/history/mixins.py +++ b/taiga/projects/history/mixins.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/models.py b/taiga/projects/history/models.py index 2663bf2c..24526235 100644 --- a/taiga/projects/history/models.py +++ b/taiga/projects/history/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/permissions.py b/taiga/projects/history/permissions.py index 5f8c1f04..7dcc2311 100644 --- a/taiga/projects/history/permissions.py +++ b/taiga/projects/history/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/serializers.py b/taiga/projects/history/serializers.py index 5caad806..01c3b9a4 100644 --- a/taiga/projects/history/serializers.py +++ b/taiga/projects/history/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/history/services.py b/taiga/projects/history/services.py index 9f520812..399b486f 100644 --- a/taiga/projects/history/services.py +++ b/taiga/projects/history/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/templatetags/functions.py b/taiga/projects/history/templatetags/functions.py index 35236fc6..e425db6c 100644 --- a/taiga/projects/history/templatetags/functions.py +++ b/taiga/projects/history/templatetags/functions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/__init__.py b/taiga/projects/issues/__init__.py index b511b6e7..690db69e 100644 --- a/taiga/projects/issues/__init__.py +++ b/taiga/projects/issues/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/admin.py b/taiga/projects/issues/admin.py index a1e0ecfe..38b22a08 100644 --- a/taiga/projects/issues/admin.py +++ b/taiga/projects/issues/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index 60633f58..849c73ec 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/apps.py b/taiga/projects/issues/apps.py index 27fd6e82..8ce5055d 100644 --- a/taiga/projects/issues/apps.py +++ b/taiga/projects/issues/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/models.py b/taiga/projects/issues/models.py index 84840ebd..b987bbe5 100644 --- a/taiga/projects/issues/models.py +++ b/taiga/projects/issues/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/permissions.py b/taiga/projects/issues/permissions.py index 6684f144..93277ed2 100644 --- a/taiga/projects/issues/permissions.py +++ b/taiga/projects/issues/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/serializers.py b/taiga/projects/issues/serializers.py index d5f3af66..11f921e2 100644 --- a/taiga/projects/issues/serializers.py +++ b/taiga/projects/issues/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/services.py b/taiga/projects/issues/services.py index 08d76051..010cc796 100644 --- a/taiga/projects/issues/services.py +++ b/taiga/projects/issues/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/issues/signals.py b/taiga/projects/issues/signals.py index 17bc0c2b..5265ed1f 100644 --- a/taiga/projects/issues/signals.py +++ b/taiga/projects/issues/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/likes/admin.py b/taiga/projects/likes/admin.py index a1d7fc8a..95100d95 100644 --- a/taiga/projects/likes/admin.py +++ b/taiga/projects/likes/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/likes/mixins/serializers.py b/taiga/projects/likes/mixins/serializers.py index faf8d278..416f157a 100644 --- a/taiga/projects/likes/mixins/serializers.py +++ b/taiga/projects/likes/mixins/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/likes/mixins/viewsets.py b/taiga/projects/likes/mixins/viewsets.py index f552d2e6..554a8e6d 100644 --- a/taiga/projects/likes/mixins/viewsets.py +++ b/taiga/projects/likes/mixins/viewsets.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/likes/models.py b/taiga/projects/likes/models.py index c87e45f7..83e8f028 100644 --- a/taiga/projects/likes/models.py +++ b/taiga/projects/likes/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/likes/serializers.py b/taiga/projects/likes/serializers.py index 93119a41..97941325 100644 --- a/taiga/projects/likes/serializers.py +++ b/taiga/projects/likes/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/likes/services.py b/taiga/projects/likes/services.py index 78a44a01..82eae57a 100644 --- a/taiga/projects/likes/services.py +++ b/taiga/projects/likes/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/likes/utils.py b/taiga/projects/likes/utils.py index e519d774..5bb7a737 100644 --- a/taiga/projects/likes/utils.py +++ b/taiga/projects/likes/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/management/commands/sample_data.py b/taiga/projects/management/commands/sample_data.py index 01db5dbe..660eec32 100644 --- a/taiga/projects/management/commands/sample_data.py +++ b/taiga/projects/management/commands/sample_data.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/admin.py b/taiga/projects/milestones/admin.py index 95519eb9..cb58cf1f 100644 --- a/taiga/projects/milestones/admin.py +++ b/taiga/projects/milestones/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/api.py b/taiga/projects/milestones/api.py index aca1ab24..e036f9b2 100644 --- a/taiga/projects/milestones/api.py +++ b/taiga/projects/milestones/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/models.py b/taiga/projects/milestones/models.py index 30936e9a..d2de4e91 100644 --- a/taiga/projects/milestones/models.py +++ b/taiga/projects/milestones/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/permissions.py b/taiga/projects/milestones/permissions.py index ac459755..4e8f55af 100644 --- a/taiga/projects/milestones/permissions.py +++ b/taiga/projects/milestones/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/serializers.py b/taiga/projects/milestones/serializers.py index 964c1e1b..7858b167 100644 --- a/taiga/projects/milestones/serializers.py +++ b/taiga/projects/milestones/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/milestones/services.py b/taiga/projects/milestones/services.py index 2599db35..7228bdf5 100644 --- a/taiga/projects/milestones/services.py +++ b/taiga/projects/milestones/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/mixins/blocked.py b/taiga/projects/mixins/blocked.py index 2d5a4fa0..65216151 100644 --- a/taiga/projects/mixins/blocked.py +++ b/taiga/projects/mixins/blocked.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/mixins/on_destroy.py b/taiga/projects/mixins/on_destroy.py index a46977c9..c3dc73e8 100644 --- a/taiga/projects/mixins/on_destroy.py +++ b/taiga/projects/mixins/on_destroy.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/mixins/ordering.py b/taiga/projects/mixins/ordering.py index d9e6c5ee..42a48497 100644 --- a/taiga/projects/mixins/ordering.py +++ b/taiga/projects/mixins/ordering.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 95fbdd8c..c1aa397a 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/admin.py b/taiga/projects/notifications/admin.py index 2b4cd930..b01849e3 100644 --- a/taiga/projects/notifications/admin.py +++ b/taiga/projects/notifications/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/api.py b/taiga/projects/notifications/api.py index 8be8ab5c..8bc0d122 100644 --- a/taiga/projects/notifications/api.py +++ b/taiga/projects/notifications/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/choices.py b/taiga/projects/notifications/choices.py index f9eac02f..58acb930 100644 --- a/taiga/projects/notifications/choices.py +++ b/taiga/projects/notifications/choices.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/management/commands/send_notifications.py b/taiga/projects/notifications/management/commands/send_notifications.py index c2034895..797edf52 100644 --- a/taiga/projects/notifications/management/commands/send_notifications.py +++ b/taiga/projects/notifications/management/commands/send_notifications.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/mixins.py b/taiga/projects/notifications/mixins.py index bb90d113..1d73f980 100644 --- a/taiga/projects/notifications/mixins.py +++ b/taiga/projects/notifications/mixins.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/models.py b/taiga/projects/notifications/models.py index ae0c897f..e0e59b5a 100644 --- a/taiga/projects/notifications/models.py +++ b/taiga/projects/notifications/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/permissions.py b/taiga/projects/notifications/permissions.py index 1ea57b4d..c25b0d19 100644 --- a/taiga/projects/notifications/permissions.py +++ b/taiga/projects/notifications/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/serializers.py b/taiga/projects/notifications/serializers.py index 42c4cb18..dd35e05f 100644 --- a/taiga/projects/notifications/serializers.py +++ b/taiga/projects/notifications/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/services.py b/taiga/projects/notifications/services.py index b77efe73..ce35d69f 100644 --- a/taiga/projects/notifications/services.py +++ b/taiga/projects/notifications/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/notifications/utils.py b/taiga/projects/notifications/utils.py index b4257669..9e0a2f66 100644 --- a/taiga/projects/notifications/utils.py +++ b/taiga/projects/notifications/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/notifications/validators.py b/taiga/projects/notifications/validators.py index 7870e263..b73539a4 100644 --- a/taiga/projects/notifications/validators.py +++ b/taiga/projects/notifications/validators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/occ/__init__.py b/taiga/projects/occ/__init__.py index 0786ec9e..8c1a944a 100644 --- a/taiga/projects/occ/__init__.py +++ b/taiga/projects/occ/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/occ/mixins.py b/taiga/projects/occ/mixins.py index 789c7599..65e4e34b 100644 --- a/taiga/projects/occ/mixins.py +++ b/taiga/projects/occ/mixins.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/permissions.py b/taiga/projects/permissions.py index 1c839d3b..b12a9d53 100644 --- a/taiga/projects/permissions.py +++ b/taiga/projects/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/api.py b/taiga/projects/references/api.py index 60559931..e80226dc 100644 --- a/taiga/projects/references/api.py +++ b/taiga/projects/references/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/models.py b/taiga/projects/references/models.py index e6fd734d..f53b2e19 100644 --- a/taiga/projects/references/models.py +++ b/taiga/projects/references/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/permissions.py b/taiga/projects/references/permissions.py index 0708321e..ab52019f 100644 --- a/taiga/projects/references/permissions.py +++ b/taiga/projects/references/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/sequences.py b/taiga/projects/references/sequences.py index c9bf9af2..212c1a94 100644 --- a/taiga/projects/references/sequences.py +++ b/taiga/projects/references/sequences.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/serializers.py b/taiga/projects/references/serializers.py index 6b2ff303..84236868 100644 --- a/taiga/projects/references/serializers.py +++ b/taiga/projects/references/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/references/services.py b/taiga/projects/references/services.py index d1059b71..e65f5eec 100644 --- a/taiga/projects/references/services.py +++ b/taiga/projects/references/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index 752d494b..257e45d6 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/__init__.py b/taiga/projects/services/__init__.py index 11d9ab78..3c9ad43c 100644 --- a/taiga/projects/services/__init__.py +++ b/taiga/projects/services/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/bulk_update_order.py b/taiga/projects/services/bulk_update_order.py index de359991..ba44da38 100644 --- a/taiga/projects/services/bulk_update_order.py +++ b/taiga/projects/services/bulk_update_order.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/filters.py b/taiga/projects/services/filters.py index bcca6ca5..539f9f7e 100644 --- a/taiga/projects/services/filters.py +++ b/taiga/projects/services/filters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/modules_config.py b/taiga/projects/services/modules_config.py index 31925f2e..3443ea88 100644 --- a/taiga/projects/services/modules_config.py +++ b/taiga/projects/services/modules_config.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/stats.py b/taiga/projects/services/stats.py index dca20819..34cefb92 100644 --- a/taiga/projects/services/stats.py +++ b/taiga/projects/services/stats.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/services/tags_colors.py b/taiga/projects/services/tags_colors.py index fb9a99b0..766af9d0 100644 --- a/taiga/projects/services/tags_colors.py +++ b/taiga/projects/services/tags_colors.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/signals.py b/taiga/projects/signals.py index 622d5727..3db0bc48 100644 --- a/taiga/projects/signals.py +++ b/taiga/projects/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/__init__.py b/taiga/projects/tasks/__init__.py index 83ace66e..4d2b4e72 100644 --- a/taiga/projects/tasks/__init__.py +++ b/taiga/projects/tasks/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/admin.py b/taiga/projects/tasks/admin.py index fc6c4435..c25ed8e1 100644 --- a/taiga/projects/tasks/admin.py +++ b/taiga/projects/tasks/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/api.py b/taiga/projects/tasks/api.py index 8a9c401b..b4b37fdd 100644 --- a/taiga/projects/tasks/api.py +++ b/taiga/projects/tasks/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/apps.py b/taiga/projects/tasks/apps.py index 5415c3c2..011022d3 100644 --- a/taiga/projects/tasks/apps.py +++ b/taiga/projects/tasks/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/models.py b/taiga/projects/tasks/models.py index 369fab0a..3946d889 100644 --- a/taiga/projects/tasks/models.py +++ b/taiga/projects/tasks/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/permissions.py b/taiga/projects/tasks/permissions.py index 7591e346..33f2fe00 100644 --- a/taiga/projects/tasks/permissions.py +++ b/taiga/projects/tasks/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/serializers.py b/taiga/projects/tasks/serializers.py index 09a42763..ec541430 100644 --- a/taiga/projects/tasks/serializers.py +++ b/taiga/projects/tasks/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/services.py b/taiga/projects/tasks/services.py index 8bd22993..cc2de396 100644 --- a/taiga/projects/tasks/services.py +++ b/taiga/projects/tasks/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/tasks/signals.py b/taiga/projects/tasks/signals.py index f12c7671..75cf0b38 100644 --- a/taiga/projects/tasks/signals.py +++ b/taiga/projects/tasks/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/translations.py b/taiga/projects/translations.py index 193ed97f..c07f5fe2 100644 --- a/taiga/projects/translations.py +++ b/taiga/projects/translations.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/__init__.py b/taiga/projects/userstories/__init__.py index 01da2fe5..d578b292 100644 --- a/taiga/projects/userstories/__init__.py +++ b/taiga/projects/userstories/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/admin.py b/taiga/projects/userstories/admin.py index 9fd7a72d..88601931 100644 --- a/taiga/projects/userstories/admin.py +++ b/taiga/projects/userstories/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index e2a2f066..73a48499 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/apps.py b/taiga/projects/userstories/apps.py index 53515191..5f9e5dd5 100644 --- a/taiga/projects/userstories/apps.py +++ b/taiga/projects/userstories/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/models.py b/taiga/projects/userstories/models.py index ce734d1e..fa54226f 100644 --- a/taiga/projects/userstories/models.py +++ b/taiga/projects/userstories/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/permissions.py b/taiga/projects/userstories/permissions.py index c5cb7eb2..9c501f45 100644 --- a/taiga/projects/userstories/permissions.py +++ b/taiga/projects/userstories/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/serializers.py b/taiga/projects/userstories/serializers.py index 5e761d14..2232b8af 100644 --- a/taiga/projects/userstories/serializers.py +++ b/taiga/projects/userstories/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index 9ca9ce8b..1d9859a0 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/signals.py b/taiga/projects/userstories/signals.py index 33039926..f0d789b9 100644 --- a/taiga/projects/userstories/signals.py +++ b/taiga/projects/userstories/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/userstories/validators.py b/taiga/projects/userstories/validators.py index 21464ded..00e9117a 100644 --- a/taiga/projects/userstories/validators.py +++ b/taiga/projects/userstories/validators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/validators.py b/taiga/projects/validators.py index c2368030..a33dff44 100644 --- a/taiga/projects/validators.py +++ b/taiga/projects/validators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/votes/admin.py b/taiga/projects/votes/admin.py index 3e0dc590..8664cd35 100644 --- a/taiga/projects/votes/admin.py +++ b/taiga/projects/votes/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/votes/mixins/serializers.py b/taiga/projects/votes/mixins/serializers.py index 9147af78..d320de9c 100644 --- a/taiga/projects/votes/mixins/serializers.py +++ b/taiga/projects/votes/mixins/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/votes/mixins/viewsets.py b/taiga/projects/votes/mixins/viewsets.py index 3495e7a8..14ce9409 100644 --- a/taiga/projects/votes/mixins/viewsets.py +++ b/taiga/projects/votes/mixins/viewsets.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/votes/models.py b/taiga/projects/votes/models.py index e4e592c1..5a784fc0 100644 --- a/taiga/projects/votes/models.py +++ b/taiga/projects/votes/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/votes/serializers.py b/taiga/projects/votes/serializers.py index 9dbb7af8..78d10c89 100644 --- a/taiga/projects/votes/serializers.py +++ b/taiga/projects/votes/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/votes/services.py b/taiga/projects/votes/services.py index 2ddbdbcf..e9301f85 100644 --- a/taiga/projects/votes/services.py +++ b/taiga/projects/votes/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/votes/utils.py b/taiga/projects/votes/utils.py index 2b38c79e..7b3acf9a 100644 --- a/taiga/projects/votes/utils.py +++ b/taiga/projects/votes/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/projects/wiki/admin.py b/taiga/projects/wiki/admin.py index 7ea2e979..7dcd76f7 100644 --- a/taiga/projects/wiki/admin.py +++ b/taiga/projects/wiki/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/wiki/api.py b/taiga/projects/wiki/api.py index 27a5ea7b..19dc4907 100644 --- a/taiga/projects/wiki/api.py +++ b/taiga/projects/wiki/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/wiki/models.py b/taiga/projects/wiki/models.py index 067c65b4..ee1a0b39 100644 --- a/taiga/projects/wiki/models.py +++ b/taiga/projects/wiki/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/wiki/permissions.py b/taiga/projects/wiki/permissions.py index a0365645..ec6b4cbe 100644 --- a/taiga/projects/wiki/permissions.py +++ b/taiga/projects/wiki/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/projects/wiki/serializers.py b/taiga/projects/wiki/serializers.py index 84cc7c07..4a1a0b2b 100644 --- a/taiga/projects/wiki/serializers.py +++ b/taiga/projects/wiki/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/routers.py b/taiga/routers.py index 999a948b..40c0a7f5 100644 --- a/taiga/routers.py +++ b/taiga/routers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/searches/api.py b/taiga/searches/api.py index 206dcb13..0f92e26a 100644 --- a/taiga/searches/api.py +++ b/taiga/searches/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/searches/serializers.py b/taiga/searches/serializers.py index de409ba0..70fb8644 100644 --- a/taiga/searches/serializers.py +++ b/taiga/searches/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/searches/services.py b/taiga/searches/services.py index 82acdf18..2ed4bcbb 100644 --- a/taiga/searches/services.py +++ b/taiga/searches/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/__init__.py b/taiga/timeline/__init__.py index 937a3b98..d93ec69c 100644 --- a/taiga/timeline/__init__.py +++ b/taiga/timeline/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/api.py b/taiga/timeline/api.py index 5545f467..fef52224 100644 --- a/taiga/timeline/api.py +++ b/taiga/timeline/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/apps.py b/taiga/timeline/apps.py index 83119502..7919c8d4 100644 --- a/taiga/timeline/apps.py +++ b/taiga/timeline/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py b/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py index 23ce6ce0..2d1b22f4 100644 --- a/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py +++ b/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py b/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py index f1b763fa..c5667645 100644 --- a/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py +++ b/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py b/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py index c26b52b3..467830ca 100644 --- a/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py +++ b/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/management/commands/rebuild_timeline.py b/taiga/timeline/management/commands/rebuild_timeline.py index 3179a9d6..e67ecff7 100644 --- a/taiga/timeline/management/commands/rebuild_timeline.py +++ b/taiga/timeline/management/commands/rebuild_timeline.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py b/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py index 95b4db30..5e00909c 100644 --- a/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py +++ b/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/models.py b/taiga/timeline/models.py index b16bfc14..a93ed529 100644 --- a/taiga/timeline/models.py +++ b/taiga/timeline/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/permissions.py b/taiga/timeline/permissions.py index 9f41c5f3..39bc1ce5 100644 --- a/taiga/timeline/permissions.py +++ b/taiga/timeline/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/serializers.py b/taiga/timeline/serializers.py index 3a6e3d65..f01b1ba0 100644 --- a/taiga/timeline/serializers.py +++ b/taiga/timeline/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/service.py b/taiga/timeline/service.py index 9d180885..5b1c7e7c 100644 --- a/taiga/timeline/service.py +++ b/taiga/timeline/service.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index b899d6ea..e307235a 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/timeline/timeline_implementations.py b/taiga/timeline/timeline_implementations.py index f71ee80d..184caa0d 100644 --- a/taiga/timeline/timeline_implementations.py +++ b/taiga/timeline/timeline_implementations.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/urls.py b/taiga/urls.py index f92cc8a0..826b049f 100644 --- a/taiga/urls.py +++ b/taiga/urls.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/admin.py b/taiga/users/admin.py index c5ac01a7..ee4c53ac 100644 --- a/taiga/users/admin.py +++ b/taiga/users/admin.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/api.py b/taiga/users/api.py index 387a964a..b4ea6e4e 100644 --- a/taiga/users/api.py +++ b/taiga/users/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/filters.py b/taiga/users/filters.py index 5858c41a..d3323088 100644 --- a/taiga/users/filters.py +++ b/taiga/users/filters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/forms.py b/taiga/users/forms.py index 7331943f..faa52597 100644 --- a/taiga/users/forms.py +++ b/taiga/users/forms.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/gravatar.py b/taiga/users/gravatar.py index 70615a00..c13ab7df 100644 --- a/taiga/users/gravatar.py +++ b/taiga/users/gravatar.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/users/models.py b/taiga/users/models.py index 080e897f..f179aedd 100644 --- a/taiga/users/models.py +++ b/taiga/users/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/permissions.py b/taiga/users/permissions.py index ec7761d9..9ef2e8a1 100644 --- a/taiga/users/permissions.py +++ b/taiga/users/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/serializers.py b/taiga/users/serializers.py index cb05e2ed..f868b895 100644 --- a/taiga/users/serializers.py +++ b/taiga/users/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/services.py b/taiga/users/services.py index 91d08582..f42c3b63 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/signals.py b/taiga/users/signals.py index 75fc1587..07b56c9a 100644 --- a/taiga/users/signals.py +++ b/taiga/users/signals.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/users/validators.py b/taiga/users/validators.py index ade82141..fd2cf680 100644 --- a/taiga/users/validators.py +++ b/taiga/users/validators.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/taiga/userstorage/api.py b/taiga/userstorage/api.py index eea83500..6cce8b50 100644 --- a/taiga/userstorage/api.py +++ b/taiga/userstorage/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/userstorage/filters.py b/taiga/userstorage/filters.py index c183d526..a649626b 100644 --- a/taiga/userstorage/filters.py +++ b/taiga/userstorage/filters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/userstorage/models.py b/taiga/userstorage/models.py index 8db16c1a..303fc294 100644 --- a/taiga/userstorage/models.py +++ b/taiga/userstorage/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/userstorage/permissions.py b/taiga/userstorage/permissions.py index 0d2207b3..10be62d6 100644 --- a/taiga/userstorage/permissions.py +++ b/taiga/userstorage/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/userstorage/serializers.py b/taiga/userstorage/serializers.py index 5f5d0493..d3402b42 100644 --- a/taiga/userstorage/serializers.py +++ b/taiga/userstorage/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/__init__.py b/taiga/webhooks/__init__.py index 4a91f101..70168cff 100644 --- a/taiga/webhooks/__init__.py +++ b/taiga/webhooks/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/api.py b/taiga/webhooks/api.py index 5c8a5766..1897f301 100644 --- a/taiga/webhooks/api.py +++ b/taiga/webhooks/api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/apps.py b/taiga/webhooks/apps.py index b17a2df0..8c6bbba6 100644 --- a/taiga/webhooks/apps.py +++ b/taiga/webhooks/apps.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/models.py b/taiga/webhooks/models.py index df8c4c19..ee4ff2cc 100644 --- a/taiga/webhooks/models.py +++ b/taiga/webhooks/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/permissions.py b/taiga/webhooks/permissions.py index e28f183c..82150620 100644 --- a/taiga/webhooks/permissions.py +++ b/taiga/webhooks/permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/serializers.py b/taiga/webhooks/serializers.py index 65847ee9..e5ba40fe 100644 --- a/taiga/webhooks/serializers.py +++ b/taiga/webhooks/serializers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/signal_handlers.py b/taiga/webhooks/signal_handlers.py index af964b0a..63c8f6ca 100644 --- a/taiga/webhooks/signal_handlers.py +++ b/taiga/webhooks/signal_handlers.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/taiga/webhooks/tasks.py b/taiga/webhooks/tasks.py index fd7136c5..9dd703bf 100644 --- a/taiga/webhooks/tasks.py +++ b/taiga/webhooks/tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013 Andrey Antukh +# Copyright (C) 2013 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify From 501145bdcdf9ca6dec1420b7966276c03a005c99 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 15:01:20 +0200 Subject: [PATCH 04/41] Fix my email on copyright preamble on test source files. --- tests/conftest.py | 2 +- tests/factories.py | 2 +- tests/fixtures.py | 2 +- .../test_issues_custom_attributes_resource.py | 2 +- .../test_tasks_custom_attributes_resource.py | 2 +- .../test_userstories_custom_attributes_resource.py | 2 +- tests/integration/test_auth_api.py | 2 +- tests/integration/test_custom_attributes_issues.py | 2 +- tests/integration/test_custom_attributes_tasks.py | 2 +- tests/integration/test_custom_attributes_user_stories.py | 2 +- tests/integration/test_exporter_api.py | 2 +- tests/integration/test_fan_projects.py | 2 +- tests/integration/test_history.py | 2 +- tests/integration/test_importer_api.py | 2 +- tests/integration/test_mdrender.py | 2 +- tests/integration/test_milestones.py | 2 +- tests/integration/test_neighbors.py | 2 +- tests/integration/test_notifications.py | 2 +- tests/integration/test_occ.py | 2 +- tests/integration/test_references_sequences.py | 2 +- tests/integration/test_roles.py | 2 +- tests/integration/test_searches.py | 2 +- tests/integration/test_throwttling.py | 2 +- tests/integration/test_timeline.py | 2 +- tests/integration/test_us_autoclosing.py | 2 +- tests/integration/test_userstorage_api.py | 2 +- tests/integration/test_vote_issues.py | 2 +- tests/integration/test_vote_tasks.py | 2 +- tests/integration/test_vote_userstories.py | 2 +- tests/integration/test_votes.py | 2 +- tests/integration/test_watch_issues.py | 2 +- tests/integration/test_watch_milestones.py | 2 +- tests/integration/test_watch_projects.py | 2 +- tests/integration/test_watch_tasks.py | 2 +- tests/integration/test_watch_userstories.py | 2 +- tests/integration/test_watch_wikipages.py | 2 +- tests/integration/test_webhooks.py | 2 +- tests/models.py | 2 +- tests/unit/conftest.py | 2 +- tests/unit/test_base_api_permissions.py | 2 +- tests/unit/test_deferred.py | 2 +- tests/unit/test_export.py | 2 +- tests/unit/test_gravatar.py | 2 +- tests/unit/test_mdrender.py | 2 +- tests/unit/test_permissions.py | 2 +- tests/unit/test_slug.py | 2 +- tests/unit/test_timeline.py | 2 +- tests/unit/test_tokens.py | 2 +- tests/unit/test_utils.py | 2 +- tests/utils.py | 2 +- 50 files changed, 50 insertions(+), 50 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 9f83de14..118c9a0e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/factories.py b/tests/factories.py index 27a6fa81..92862158 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/fixtures.py b/tests/fixtures.py index f58dbc18..a5db2c84 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py index 06135bda..cd29e646 100644 --- a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py index 908b2dd9..b673e362 100644 --- a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py index c3cc6916..5cc7914e 100644 --- a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_auth_api.py b/tests/integration/test_auth_api.py index bc29698c..1536c0b5 100644 --- a/tests/integration/test_auth_api.py +++ b/tests/integration/test_auth_api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_custom_attributes_issues.py b/tests/integration/test_custom_attributes_issues.py index 1726c22e..bdf669ec 100644 --- a/tests/integration/test_custom_attributes_issues.py +++ b/tests/integration/test_custom_attributes_issues.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_custom_attributes_tasks.py b/tests/integration/test_custom_attributes_tasks.py index c3394b85..e1c68a1f 100644 --- a/tests/integration/test_custom_attributes_tasks.py +++ b/tests/integration/test_custom_attributes_tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_custom_attributes_user_stories.py b/tests/integration/test_custom_attributes_user_stories.py index f348fd18..1657b3ed 100644 --- a/tests/integration/test_custom_attributes_user_stories.py +++ b/tests/integration/test_custom_attributes_user_stories.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_exporter_api.py b/tests/integration/test_exporter_api.py index aebc9655..ca96ffe4 100644 --- a/tests/integration/test_exporter_api.py +++ b/tests/integration/test_exporter_api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_fan_projects.py b/tests/integration/test_fan_projects.py index 6f60e50b..a6a832eb 100644 --- a/tests/integration/test_fan_projects.py +++ b/tests/integration/test_fan_projects.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015 Andrey Antukh +# Copyright (C) 2015 Andrey Antukh # Copyright (C) 2015 Jesús Espino # Copyright (C) 2015 David Barragán # Copyright (C) 2015 Anler Hernández diff --git a/tests/integration/test_history.py b/tests/integration/test_history.py index 127fec05..c92018d1 100644 --- a/tests/integration/test_history.py +++ b/tests/integration/test_history.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_importer_api.py b/tests/integration/test_importer_api.py index a44a5a46..eaee57eb 100644 --- a/tests/integration/test_importer_api.py +++ b/tests/integration/test_importer_api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_mdrender.py b/tests/integration/test_mdrender.py index 921c03a6..277011f1 100644 --- a/tests/integration/test_mdrender.py +++ b/tests/integration/test_mdrender.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_milestones.py b/tests/integration/test_milestones.py index 6f22bd36..9dea0ed8 100644 --- a/tests/integration/test_milestones.py +++ b/tests/integration/test_milestones.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_neighbors.py b/tests/integration/test_neighbors.py index afa5c1fe..aa0fe5af 100644 --- a/tests/integration/test_neighbors.py +++ b/tests/integration/test_neighbors.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_notifications.py b/tests/integration/test_notifications.py index 4e442f21..f35f7327 100644 --- a/tests/integration/test_notifications.py +++ b/tests/integration/test_notifications.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_occ.py b/tests/integration/test_occ.py index ba11e8dc..d8251fcf 100644 --- a/tests/integration/test_occ.py +++ b/tests/integration/test_occ.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_references_sequences.py b/tests/integration/test_references_sequences.py index 67157daf..7d342363 100644 --- a/tests/integration/test_references_sequences.py +++ b/tests/integration/test_references_sequences.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_roles.py b/tests/integration/test_roles.py index 157cfbd0..9f6f2bf3 100644 --- a/tests/integration/test_roles.py +++ b/tests/integration/test_roles.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_searches.py b/tests/integration/test_searches.py index 06c95325..9ccff901 100644 --- a/tests/integration/test_searches.py +++ b/tests/integration/test_searches.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_throwttling.py b/tests/integration/test_throwttling.py index 9d0b220a..74fd0532 100644 --- a/tests/integration/test_throwttling.py +++ b/tests/integration/test_throwttling.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/integration/test_timeline.py b/tests/integration/test_timeline.py index 7e3f7104..61c46964 100644 --- a/tests/integration/test_timeline.py +++ b/tests/integration/test_timeline.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_us_autoclosing.py b/tests/integration/test_us_autoclosing.py index 947fc802..a3e6bd4d 100644 --- a/tests/integration/test_us_autoclosing.py +++ b/tests/integration/test_us_autoclosing.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_userstorage_api.py b/tests/integration/test_userstorage_api.py index 60900a06..e3ae9eb9 100644 --- a/tests/integration/test_userstorage_api.py +++ b/tests/integration/test_userstorage_api.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_vote_issues.py b/tests/integration/test_vote_issues.py index fbd2cdff..62b4b9d0 100644 --- a/tests/integration/test_vote_issues.py +++ b/tests/integration/test_vote_issues.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_vote_tasks.py b/tests/integration/test_vote_tasks.py index ce6b8c40..6d975625 100644 --- a/tests/integration/test_vote_tasks.py +++ b/tests/integration/test_vote_tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_vote_userstories.py b/tests/integration/test_vote_userstories.py index a1626e59..086d4ae6 100644 --- a/tests/integration/test_vote_userstories.py +++ b/tests/integration/test_vote_userstories.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_votes.py b/tests/integration/test_votes.py index d192ffed..f2e191a4 100644 --- a/tests/integration/test_votes.py +++ b/tests/integration/test_votes.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_issues.py b/tests/integration/test_watch_issues.py index 6c9f2c8f..56376494 100644 --- a/tests/integration/test_watch_issues.py +++ b/tests/integration/test_watch_issues.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_milestones.py b/tests/integration/test_watch_milestones.py index 409ade56..f8fc8bdd 100644 --- a/tests/integration/test_watch_milestones.py +++ b/tests/integration/test_watch_milestones.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_projects.py b/tests/integration/test_watch_projects.py index 5ea1dd2f..2c96296d 100644 --- a/tests/integration/test_watch_projects.py +++ b/tests/integration/test_watch_projects.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_tasks.py b/tests/integration/test_watch_tasks.py index 88abfb57..46187cec 100644 --- a/tests/integration/test_watch_tasks.py +++ b/tests/integration/test_watch_tasks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_userstories.py b/tests/integration/test_watch_userstories.py index 7a1b05ec..45fff4ca 100644 --- a/tests/integration/test_watch_userstories.py +++ b/tests/integration/test_watch_userstories.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_watch_wikipages.py b/tests/integration/test_watch_wikipages.py index 6565f27f..f5a04c5b 100644 --- a/tests/integration/test_watch_wikipages.py +++ b/tests/integration/test_watch_wikipages.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/integration/test_webhooks.py b/tests/integration/test_webhooks.py index cf698bc8..e9e709bc 100644 --- a/tests/integration/test_webhooks.py +++ b/tests/integration/test_webhooks.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/models.py b/tests/models.py index 0610c340..41644fe5 100644 --- a/tests/models.py +++ b/tests/models.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index da106fd8..558cef74 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/test_base_api_permissions.py b/tests/unit/test_base_api_permissions.py index fe5bc6a7..4f2191b4 100644 --- a/tests/unit/test_base_api_permissions.py +++ b/tests/unit/test_base_api_permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/unit/test_deferred.py b/tests/unit/test_deferred.py index dc97fa83..1f5fe693 100644 --- a/tests/unit/test_deferred.py +++ b/tests/unit/test_deferred.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/unit/test_export.py b/tests/unit/test_export.py index a2c39a12..5176b213 100644 --- a/tests/unit/test_export.py +++ b/tests/unit/test_export.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/unit/test_gravatar.py b/tests/unit/test_gravatar.py index ef303b22..931e22db 100644 --- a/tests/unit/test_gravatar.py +++ b/tests/unit/test_gravatar.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/unit/test_mdrender.py b/tests/unit/test_mdrender.py index 6de7aa4f..a4fb28af 100644 --- a/tests/unit/test_mdrender.py +++ b/tests/unit/test_mdrender.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/test_permissions.py b/tests/unit/test_permissions.py index f35784c7..7525f2b9 100644 --- a/tests/unit/test_permissions.py +++ b/tests/unit/test_permissions.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/unit/test_slug.py b/tests/unit/test_slug.py index e53946d4..054f3b7e 100644 --- a/tests/unit/test_slug.py +++ b/tests/unit/test_slug.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/test_timeline.py b/tests/unit/test_timeline.py index 2e0b6374..37390715 100644 --- a/tests/unit/test_timeline.py +++ b/tests/unit/test_timeline.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/test_tokens.py b/tests/unit/test_tokens.py index 666fa5e2..512615e7 100644 --- a/tests/unit/test_tokens.py +++ b/tests/unit/test_tokens.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 483f2528..a5eb6427 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/tests/utils.py b/tests/utils.py index 6f83d418..9683f0df 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Anler Hernández From 327f6590ba4653877a50db6609b5db668d45ca7c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 15:02:06 +0200 Subject: [PATCH 05/41] Fix my email on copyright preamble on settings source files. --- settings/__init__.py | 2 +- settings/celery.py | 2 +- settings/common.py | 2 +- settings/development.py | 2 +- settings/local.py.example | 2 +- settings/sr.py | 2 +- settings/testing.py | 2 +- settings/travis.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/settings/__init__.py b/settings/__init__.py index d7cec60a..bc3fb777 100644 --- a/settings/__init__.py +++ b/settings/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/celery.py b/settings/celery.py index e157da58..af811f8f 100644 --- a/settings/celery.py +++ b/settings/celery.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/common.py b/settings/common.py index b937b7e1..a889d384 100644 --- a/settings/common.py +++ b/settings/common.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/development.py b/settings/development.py index 8eb52f12..0c1b7496 100644 --- a/settings/development.py +++ b/settings/development.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/local.py.example b/settings/local.py.example index 2a6ce20a..28f5abb9 100644 --- a/settings/local.py.example +++ b/settings/local.py.example @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/sr.py b/settings/sr.py index f0a04360..33e6ea40 100644 --- a/settings/sr.py +++ b/settings/sr.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/testing.py b/settings/testing.py index ee648e05..c2ea27b0 100644 --- a/settings/testing.py +++ b/settings/testing.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify diff --git a/settings/travis.py b/settings/travis.py index 9b041643..4607041f 100644 --- a/settings/travis.py +++ b/settings/travis.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # This program is free software: you can redistribute it and/or modify From 8e2db6ce7ada9f8c25aa8970e36a0f8966c24aba Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 15:02:44 +0200 Subject: [PATCH 06/41] Fix my email on AUTHORS.rst file. --- AUTHORS.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 54224670..3bae5fe3 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,6 +1,6 @@ The PRIMARY AUTHORS are: -- Andrey Antukh +- Andrey Antukh - Jesus Espino Garcia - David Barragán Merino - Alejandro Alonso From 028e45fa5e763c5452324962e3b49f91c5b2431d Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 15:57:05 +0200 Subject: [PATCH 07/41] Add proper drf license preamble on related source files. --- taiga/base/api/__init__.py | 25 ++++++++++++++++- taiga/base/api/authentication.py | 25 ++++++++++++++++- taiga/base/api/fields.py | 25 ++++++++++++++++- taiga/base/api/generics.py | 25 ++++++++++++++++- taiga/base/api/mixins.py | 25 ++++++++++++++++- taiga/base/api/negotiation.py | 25 ++++++++++++++++- taiga/base/api/parsers.py | 25 ++++++++++++++++- taiga/base/api/relations.py | 25 ++++++++++++++++- taiga/base/api/renderers.py | 25 ++++++++++++++++- taiga/base/api/request.py | 25 ++++++++++++++++- taiga/base/api/reverse.py | 25 ++++++++++++++++- taiga/base/api/serializers.py | 27 +++++++++++++++++-- taiga/base/api/settings.py | 27 +++++++++++++++++-- .../api/static/api/css/bootstrap-tweaks.css | 25 ++++++++++++++++- taiga/base/api/static/api/css/default.css | 25 ++++++++++++++++- taiga/base/api/static/api/css/prettify.css | 25 ++++++++++++++++- taiga/base/api/static/api/js/default.js | 26 ++++++++++++++++-- taiga/base/api/static/api/js/prettify-min.js | 22 ++++++++++++++- taiga/base/api/templatetags/api.py | 25 ++++++++++++++++- taiga/base/api/throttling.py | 25 ++++++++++++++++- taiga/base/api/urlpatterns.py | 25 ++++++++++++++++- taiga/base/api/urls.py | 25 ++++++++++++++++- taiga/base/api/utils.py | 25 ++++++++++++++++- taiga/base/api/utils/__init__.py | 25 ++++++++++++++++- taiga/base/api/utils/breadcrumbs.py | 25 ++++++++++++++++- taiga/base/api/utils/encoders.py | 25 ++++++++++++++++- taiga/base/api/utils/formatting.py | 25 ++++++++++++++++- taiga/base/api/utils/mediatypes.py | 25 ++++++++++++++++- taiga/base/api/views.py | 25 ++++++++++++++++- taiga/base/api/viewsets.py | 25 ++++++++++++++++- taiga/base/exceptions.py | 27 +++++++++++++++++-- taiga/base/response.py | 25 ++++++++++++++++- taiga/base/status.py | 27 +++++++++++++++++-- 33 files changed, 793 insertions(+), 38 deletions(-) diff --git a/taiga/base/api/__init__.py b/taiga/base/api/__init__.py index b0618e18..937543a8 100644 --- a/taiga/base/api/__init__.py +++ b/taiga/base/api/__init__.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. VERSION = "2.3.13-taiga" # Based on django-resframework 2.3.13 diff --git a/taiga/base/api/authentication.py b/taiga/base/api/authentication.py index f51dbb28..19ae6d02 100644 --- a/taiga/base/api/authentication.py +++ b/taiga/base/api/authentication.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Provides various authentication policies. diff --git a/taiga/base/api/fields.py b/taiga/base/api/fields.py index f55c6f1a..0832f451 100644 --- a/taiga/base/api/fields.py +++ b/taiga/base/api/fields.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Serializer fields perform validation on incoming data. diff --git a/taiga/base/api/generics.py b/taiga/base/api/generics.py index ba0f2c5d..58b0f98a 100644 --- a/taiga/base/api/generics.py +++ b/taiga/base/api/generics.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django.core.exceptions import ImproperlyConfigured from django.http import Http404 diff --git a/taiga/base/api/mixins.py b/taiga/base/api/mixins.py index e0f6fb04..1e07ce64 100644 --- a/taiga/base/api/mixins.py +++ b/taiga/base/api/mixins.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import warnings diff --git a/taiga/base/api/negotiation.py b/taiga/base/api/negotiation.py index 20eb48d7..0cb6a3ba 100644 --- a/taiga/base/api/negotiation.py +++ b/taiga/base/api/negotiation.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Content negotiation deals with selecting an appropriate renderer given the diff --git a/taiga/base/api/parsers.py b/taiga/base/api/parsers.py index 2dfebbff..797131eb 100644 --- a/taiga/base/api/parsers.py +++ b/taiga/base/api/parsers.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Parsers are used to parse the content of incoming HTTP requests. diff --git a/taiga/base/api/relations.py b/taiga/base/api/relations.py index 56924e28..467b330f 100644 --- a/taiga/base/api/relations.py +++ b/taiga/base/api/relations.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Serializer fields that deal with relationships. diff --git a/taiga/base/api/renderers.py b/taiga/base/api/renderers.py index 057feeac..26eb52ab 100644 --- a/taiga/base/api/renderers.py +++ b/taiga/base/api/renderers.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Renderers are used to serialize a response into specific media types. diff --git a/taiga/base/api/request.py b/taiga/base/api/request.py index 3ae941ad..a0364300 100644 --- a/taiga/base/api/request.py +++ b/taiga/base/api/request.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ The Request class is used as a wrapper around the standard request object. diff --git a/taiga/base/api/reverse.py b/taiga/base/api/reverse.py index c91fab5d..90261e14 100644 --- a/taiga/base/api/reverse.py +++ b/taiga/base/api/reverse.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Provide reverse functions that return fully qualified URLs diff --git a/taiga/base/api/serializers.py b/taiga/base/api/serializers.py index 4797fe3b..72f1c0a7 100644 --- a/taiga/base/api/serializers.py +++ b/taiga/base/api/serializers.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: -# Copyright (c) 2011-2016, Tom Christie +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# +# Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ diff --git a/taiga/base/api/settings.py b/taiga/base/api/settings.py index 3712e7e4..57ffc0db 100644 --- a/taiga/base/api/settings.py +++ b/taiga/base/api/settings.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: -# Copyright (c) 2011-2016, Tom Christie +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# +# Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ diff --git a/taiga/base/api/static/api/css/bootstrap-tweaks.css b/taiga/base/api/static/api/css/bootstrap-tweaks.css index ae3bf003..035d6952 100644 --- a/taiga/base/api/static/api/css/bootstrap-tweaks.css +++ b/taiga/base/api/static/api/css/bootstrap-tweaks.css @@ -15,8 +15,31 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * This code is partially taken from django-rest-framework: + * The code is partially taken (and modified) from django rest framework + * that is licensed under the following terms: + * * Copyright (c) 2011-2014, Tom Christie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* diff --git a/taiga/base/api/static/api/css/default.css b/taiga/base/api/static/api/css/default.css index c3a63595..0c7abb09 100644 --- a/taiga/base/api/static/api/css/default.css +++ b/taiga/base/api/static/api/css/default.css @@ -15,8 +15,31 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * This code is partially taken from django-rest-framework: + * The code is partially taken (and modified) from django rest framework + * that is licensed under the following terms: + * * Copyright (c) 2011-2014, Tom Christie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* The navbar is fixed at >= 980px wide, so add padding to the body to prevent diff --git a/taiga/base/api/static/api/css/prettify.css b/taiga/base/api/static/api/css/prettify.css index 9dbee133..03bac748 100644 --- a/taiga/base/api/static/api/css/prettify.css +++ b/taiga/base/api/static/api/css/prettify.css @@ -15,8 +15,31 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * This code is partially taken from django-rest-framework: + * The code is partially taken (and modified) from django rest framework + * that is licensed under the following terms: + * * Copyright (c) 2011-2014, Tom Christie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ .com { color: #93a1a1; } .lit { color: #195f91; } diff --git a/taiga/base/api/static/api/js/default.js b/taiga/base/api/static/api/js/default.js index 892e059f..9960c59d 100644 --- a/taiga/base/api/static/api/js/default.js +++ b/taiga/base/api/static/api/js/default.js @@ -15,11 +15,33 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * This code is partially taken from django-rest-framework: + * The code is partially taken (and modified) from django rest framework + * that is licensed under the following terms: + * * Copyright (c) 2011-2014, Tom Christie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - function getCookie(c_name) { // From http://www.w3schools.com/js/js_cookies.asp diff --git a/taiga/base/api/static/api/js/prettify-min.js b/taiga/base/api/static/api/js/prettify-min.js index 27b6653b..43b6cb35 100644 --- a/taiga/base/api/static/api/js/prettify-min.js +++ b/taiga/base/api/static/api/js/prettify-min.js @@ -15,8 +15,28 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * - * This code is partially taken from django-rest-framework: * Copyright (c) 2011-2014, Tom Christie + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= diff --git a/taiga/base/api/templatetags/api.py b/taiga/base/api/templatetags/api.py index bff26111..a28c0024 100644 --- a/taiga/base/api/templatetags/api.py +++ b/taiga/base/api/templatetags/api.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django import template from django.core.urlresolvers import reverse, NoReverseMatch diff --git a/taiga/base/api/throttling.py b/taiga/base/api/throttling.py index 7529acb8..64c074e4 100644 --- a/taiga/base/api/throttling.py +++ b/taiga/base/api/throttling.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Provides various throttling policies. diff --git a/taiga/base/api/urlpatterns.py b/taiga/base/api/urlpatterns.py index e5288036..b1485567 100644 --- a/taiga/base/api/urlpatterns.py +++ b/taiga/base/api/urlpatterns.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django.core.urlresolvers import RegexURLResolver diff --git a/taiga/base/api/urls.py b/taiga/base/api/urls.py index 2a73c13e..d7b45b2e 100644 --- a/taiga/base/api/urls.py +++ b/taiga/base/api/urls.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Login and logout views for the browsable API. diff --git a/taiga/base/api/utils.py b/taiga/base/api/utils.py index 01ef21ba..c0c21e6c 100644 --- a/taiga/base/api/utils.py +++ b/taiga/base/api/utils.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django.http import Http404 from django.shortcuts import get_object_or_404 as _get_object_or_404 diff --git a/taiga/base/api/utils/__init__.py b/taiga/base/api/utils/__init__.py index cb91e0c5..05c90de1 100644 --- a/taiga/base/api/utils/__init__.py +++ b/taiga/base/api/utils/__init__.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django.http import Http404 from django.shortcuts import get_object_or_404 as _get_object_or_404 diff --git a/taiga/base/api/utils/breadcrumbs.py b/taiga/base/api/utils/breadcrumbs.py index 6cb08ef7..334f3662 100644 --- a/taiga/base/api/utils/breadcrumbs.py +++ b/taiga/base/api/utils/breadcrumbs.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from django.core.urlresolvers import resolve, get_script_prefix diff --git a/taiga/base/api/utils/encoders.py b/taiga/base/api/utils/encoders.py index 40818fe4..bfc991dc 100644 --- a/taiga/base/api/utils/encoders.py +++ b/taiga/base/api/utils/encoders.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Helper classes for parsers. diff --git a/taiga/base/api/utils/formatting.py b/taiga/base/api/utils/formatting.py index 299c9bbd..ad4ab86e 100644 --- a/taiga/base/api/utils/formatting.py +++ b/taiga/base/api/utils/formatting.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Utility functions to return a formatted name and description for a given view. diff --git a/taiga/base/api/utils/mediatypes.py b/taiga/base/api/utils/mediatypes.py index 67b1b6e7..a0ff4f1a 100644 --- a/taiga/base/api/utils/mediatypes.py +++ b/taiga/base/api/utils/mediatypes.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ Handling of media types, as found in HTTP Content-Type and Accept headers. diff --git a/taiga/base/api/views.py b/taiga/base/api/views.py index eea84ebb..837988d9 100644 --- a/taiga/base/api/views.py +++ b/taiga/base/api/views.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import json diff --git a/taiga/base/api/viewsets.py b/taiga/base/api/viewsets.py index 2fe68ca3..60ee7d8e 100644 --- a/taiga/base/api/viewsets.py +++ b/taiga/base/api/viewsets.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from functools import update_wrapper from django.utils.decorators import classonlymethod diff --git a/taiga/base/exceptions.py b/taiga/base/exceptions.py index b498a194..1de3ebc7 100644 --- a/taiga/base/exceptions.py +++ b/taiga/base/exceptions.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: -# Copyright (c) 2011-2016, Tom Christie +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# +# Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ diff --git a/taiga/base/response.py b/taiga/base/response.py index dfa701a3..b357d691 100644 --- a/taiga/base/response.py +++ b/taiga/base/response.py @@ -15,8 +15,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# # Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """The various HTTP responses for use in returning proper HTTP codes.""" from django import http diff --git a/taiga/base/status.py b/taiga/base/status.py index 534aff38..81ef3511 100644 --- a/taiga/base/status.py +++ b/taiga/base/status.py @@ -14,8 +14,31 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# This code is partially taken from django-rest-framework: -# Copyright (c) 2011-2016, Tom Christie +# The code is partially taken (and modified) from django rest framework +# that is licensed under the following terms: +# +# Copyright (c) 2011-2014, Tom Christie +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ From fe30371e2cc975f2a97429df22e7589423a15096 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 16:06:57 +0200 Subject: [PATCH 08/41] Add alejandro.alonso copyright preamble to main python sources. --- taiga/__init__.py | 1 + taiga/auth/api.py | 1 + taiga/auth/backends.py | 1 + taiga/auth/permissions.py | 1 + taiga/auth/serializers.py | 1 + taiga/auth/services.py | 1 + taiga/auth/signals.py | 1 + taiga/auth/tokens.py | 1 + taiga/base/__init__.py | 1 + taiga/base/api/__init__.py | 1 + taiga/base/api/authentication.py | 1 + taiga/base/api/fields.py | 1 + taiga/base/api/generics.py | 1 + taiga/base/api/mixins.py | 1 + taiga/base/api/negotiation.py | 1 + taiga/base/api/pagination.py | 1 + taiga/base/api/parsers.py | 1 + taiga/base/api/permissions.py | 1 + taiga/base/api/relations.py | 1 + taiga/base/api/renderers.py | 1 + taiga/base/api/request.py | 1 + taiga/base/api/reverse.py | 1 + taiga/base/api/serializers.py | 1 + taiga/base/api/settings.py | 1 + taiga/base/api/templatetags/api.py | 1 + taiga/base/api/throttling.py | 1 + taiga/base/api/urlpatterns.py | 1 + taiga/base/api/urls.py | 1 + taiga/base/api/utils.py | 1 + taiga/base/api/utils/__init__.py | 1 + taiga/base/api/utils/breadcrumbs.py | 1 + taiga/base/api/utils/encoders.py | 1 + taiga/base/api/utils/formatting.py | 1 + taiga/base/api/utils/mediatypes.py | 1 + taiga/base/api/views.py | 1 + taiga/base/api/viewsets.py | 1 + taiga/base/apps.py | 1 + taiga/base/connectors/exceptions.py | 1 + taiga/base/decorators.py | 1 + taiga/base/exceptions.py | 1 + taiga/base/fields.py | 1 + taiga/base/filters.py | 1 + taiga/base/formats/en/formats.py | 1 + taiga/base/formats/es/formats.py | 1 + taiga/base/mails.py | 1 + taiga/base/management/commands/test_emails.py | 1 + taiga/base/middleware/cors.py | 1 + taiga/base/neighbors.py | 1 + taiga/base/response.py | 1 + taiga/base/routers.py | 1 + taiga/base/status.py | 1 + taiga/base/storage.py | 1 + taiga/base/tags.py | 1 + taiga/base/throttling.py | 1 + taiga/base/utils/contenttypes.py | 1 + taiga/base/utils/db.py | 1 + taiga/base/utils/dicts.py | 1 + taiga/base/utils/diff.py | 1 + taiga/base/utils/functions.py | 1 + taiga/base/utils/iterators.py | 1 + taiga/base/utils/json.py | 1 + taiga/base/utils/sequence.py | 1 + taiga/base/utils/signals.py | 1 + taiga/base/utils/slug.py | 1 + taiga/base/utils/text.py | 1 + taiga/base/utils/urls.py | 1 + taiga/celery.py | 1 + taiga/contrib_routers.py | 1 + taiga/deferred.py | 1 + taiga/events/__init__.py | 1 + taiga/events/apps.py | 1 + taiga/events/backends/__init__.py | 1 + taiga/events/management/commands/emit_notification_message.py | 1 + taiga/events/signal_handlers.py | 1 + taiga/export_import/api.py | 1 + taiga/export_import/dump_service.py | 1 + taiga/export_import/management/commands/dump_project.py | 1 + taiga/export_import/management/commands/load_dump.py | 1 + taiga/export_import/mixins.py | 1 + taiga/export_import/permissions.py | 1 + taiga/export_import/renderers.py | 1 + taiga/export_import/serializers.py | 1 + taiga/export_import/service.py | 1 + taiga/export_import/tasks.py | 1 + taiga/export_import/throttling.py | 1 + taiga/external_apps/admin.py | 1 + taiga/external_apps/api.py | 1 + taiga/external_apps/auth_backends.py | 1 + taiga/external_apps/encryption.py | 1 + taiga/external_apps/models.py | 1 + taiga/external_apps/permissions.py | 1 + taiga/external_apps/serializers.py | 1 + taiga/external_apps/services.py | 1 + taiga/feedback/__init__.py | 1 + taiga/feedback/admin.py | 1 + taiga/feedback/api.py | 1 + taiga/feedback/apps.py | 1 + taiga/feedback/models.py | 1 + taiga/feedback/permissions.py | 1 + taiga/feedback/routers.py | 1 + taiga/feedback/serializers.py | 1 + taiga/feedback/services.py | 1 + taiga/front/sitemaps/__init__.py | 1 + taiga/front/sitemaps/base.py | 1 + taiga/front/sitemaps/generics.py | 1 + taiga/front/sitemaps/issues.py | 1 + taiga/front/sitemaps/milestones.py | 1 + taiga/front/sitemaps/projects.py | 1 + taiga/front/sitemaps/tasks.py | 1 + taiga/front/sitemaps/users.py | 1 + taiga/front/sitemaps/userstories.py | 1 + taiga/front/sitemaps/wiki.py | 1 + taiga/front/templatetags/functions.py | 1 + taiga/front/urls.py | 1 + taiga/hooks/api.py | 1 + taiga/hooks/bitbucket/api.py | 1 + taiga/hooks/bitbucket/event_hooks.py | 1 + taiga/hooks/bitbucket/services.py | 1 + taiga/hooks/event_hooks.py | 1 + taiga/hooks/exceptions.py | 1 + taiga/hooks/github/api.py | 1 + taiga/hooks/github/event_hooks.py | 1 + taiga/hooks/github/services.py | 1 + taiga/hooks/gitlab/api.py | 1 + taiga/hooks/gitlab/event_hooks.py | 1 + taiga/hooks/gitlab/services.py | 1 + taiga/locale/api.py | 1 + taiga/locale/permissions.py | 1 + taiga/mdrender/__init__.py | 1 + taiga/mdrender/extensions/target_link.py | 1 + taiga/mdrender/extensions/wikilinks.py | 1 + taiga/mdrender/service.py | 1 + taiga/mdrender/templatetags/functions.py | 1 + taiga/permissions/permissions.py | 1 + taiga/permissions/service.py | 1 + taiga/projects/__init__.py | 1 + taiga/projects/admin.py | 1 + taiga/projects/api.py | 1 + taiga/projects/apps.py | 1 + taiga/projects/attachments/__init__.py | 1 + taiga/projects/attachments/admin.py | 1 + taiga/projects/attachments/api.py | 1 + taiga/projects/attachments/apps.py | 1 + taiga/projects/attachments/models.py | 1 + taiga/projects/attachments/permissions.py | 1 + taiga/projects/attachments/serializers.py | 1 + taiga/projects/choices.py | 1 + taiga/projects/custom_attributes/admin.py | 1 + taiga/projects/custom_attributes/api.py | 1 + taiga/projects/custom_attributes/choices.py | 1 + taiga/projects/custom_attributes/models.py | 1 + taiga/projects/custom_attributes/permissions.py | 1 + taiga/projects/custom_attributes/serializers.py | 1 + taiga/projects/custom_attributes/services.py | 1 + taiga/projects/custom_attributes/signals.py | 1 + taiga/projects/history/api.py | 1 + taiga/projects/history/freeze_impl.py | 1 + taiga/projects/history/mixins.py | 1 + taiga/projects/history/permissions.py | 1 + taiga/projects/history/serializers.py | 1 + taiga/projects/history/templatetags/functions.py | 1 + taiga/projects/issues/__init__.py | 1 + taiga/projects/issues/admin.py | 1 + taiga/projects/issues/api.py | 1 + taiga/projects/issues/apps.py | 1 + taiga/projects/issues/models.py | 1 + taiga/projects/issues/permissions.py | 1 + taiga/projects/issues/serializers.py | 1 + taiga/projects/issues/services.py | 1 + taiga/projects/issues/signals.py | 1 + taiga/projects/likes/admin.py | 1 + taiga/projects/likes/mixins/serializers.py | 1 + taiga/projects/likes/mixins/viewsets.py | 1 + taiga/projects/likes/models.py | 1 + taiga/projects/likes/serializers.py | 1 + taiga/projects/likes/services.py | 1 + taiga/projects/likes/utils.py | 1 + taiga/projects/management/commands/sample_data.py | 1 + taiga/projects/milestones/admin.py | 1 + taiga/projects/milestones/api.py | 1 + taiga/projects/milestones/models.py | 1 + taiga/projects/milestones/permissions.py | 1 + taiga/projects/milestones/serializers.py | 1 + taiga/projects/milestones/services.py | 1 + taiga/projects/mixins/blocked.py | 1 + taiga/projects/mixins/on_destroy.py | 1 + taiga/projects/mixins/ordering.py | 1 + taiga/projects/models.py | 1 + taiga/projects/notifications/admin.py | 1 + taiga/projects/notifications/api.py | 1 + taiga/projects/notifications/choices.py | 1 + .../notifications/management/commands/send_notifications.py | 1 + taiga/projects/notifications/mixins.py | 1 + taiga/projects/notifications/models.py | 1 + taiga/projects/notifications/permissions.py | 1 + taiga/projects/notifications/serializers.py | 1 + taiga/projects/notifications/services.py | 1 + taiga/projects/notifications/utils.py | 1 + taiga/projects/notifications/validators.py | 1 + taiga/projects/occ/__init__.py | 1 + taiga/projects/occ/mixins.py | 1 + taiga/projects/permissions.py | 1 + taiga/projects/references/api.py | 1 + taiga/projects/references/models.py | 1 + taiga/projects/references/permissions.py | 1 + taiga/projects/references/sequences.py | 1 + taiga/projects/references/serializers.py | 1 + taiga/projects/references/services.py | 1 + taiga/projects/serializers.py | 1 + taiga/projects/services/__init__.py | 1 + taiga/projects/services/bulk_update_order.py | 1 + taiga/projects/services/filters.py | 1 + taiga/projects/services/modules_config.py | 1 + taiga/projects/services/stats.py | 1 + taiga/projects/services/tags_colors.py | 1 + taiga/projects/signals.py | 1 + taiga/projects/tasks/__init__.py | 1 + taiga/projects/tasks/admin.py | 1 + taiga/projects/tasks/api.py | 1 + taiga/projects/tasks/apps.py | 1 + taiga/projects/tasks/models.py | 1 + taiga/projects/tasks/permissions.py | 1 + taiga/projects/tasks/serializers.py | 1 + taiga/projects/tasks/services.py | 1 + taiga/projects/tasks/signals.py | 1 + taiga/projects/translations.py | 1 + taiga/projects/userstories/__init__.py | 1 + taiga/projects/userstories/admin.py | 1 + taiga/projects/userstories/api.py | 1 + taiga/projects/userstories/apps.py | 1 + taiga/projects/userstories/models.py | 1 + taiga/projects/userstories/permissions.py | 1 + taiga/projects/userstories/serializers.py | 1 + taiga/projects/userstories/services.py | 1 + taiga/projects/userstories/signals.py | 1 + taiga/projects/userstories/validators.py | 1 + taiga/projects/validators.py | 1 + taiga/projects/votes/admin.py | 1 + taiga/projects/votes/mixins/serializers.py | 1 + taiga/projects/votes/mixins/viewsets.py | 1 + taiga/projects/votes/models.py | 1 + taiga/projects/votes/serializers.py | 1 + taiga/projects/votes/services.py | 1 + taiga/projects/votes/utils.py | 1 + taiga/projects/wiki/admin.py | 1 + taiga/projects/wiki/api.py | 1 + taiga/projects/wiki/models.py | 1 + taiga/projects/wiki/permissions.py | 1 + taiga/projects/wiki/serializers.py | 1 + taiga/routers.py | 1 + taiga/searches/api.py | 1 + taiga/searches/serializers.py | 1 + taiga/searches/services.py | 1 + taiga/timeline/__init__.py | 1 + taiga/timeline/api.py | 1 + taiga/timeline/apps.py | 1 + .../commands/_clear_unnecessary_new_membership_entries.py | 1 + .../management/commands/_rebuild_timeline_for_user_creation.py | 1 + .../management/commands/_update_timeline_for_updated_tasks.py | 1 + taiga/timeline/management/commands/rebuild_timeline.py | 1 + .../commands/rebuild_timeline_iterating_per_projects.py | 1 + taiga/timeline/models.py | 1 + taiga/timeline/permissions.py | 1 + taiga/timeline/serializers.py | 1 + taiga/timeline/service.py | 1 + taiga/timeline/signals.py | 1 + taiga/timeline/timeline_implementations.py | 1 + taiga/urls.py | 1 + taiga/users/admin.py | 1 + taiga/users/api.py | 1 + taiga/users/filters.py | 1 + taiga/users/forms.py | 1 + taiga/users/gravatar.py | 1 + taiga/users/models.py | 1 + taiga/users/permissions.py | 1 + taiga/users/serializers.py | 1 + taiga/users/services.py | 1 + taiga/users/signals.py | 1 + taiga/users/validators.py | 1 + taiga/userstorage/api.py | 1 + taiga/userstorage/filters.py | 1 + taiga/userstorage/models.py | 1 + taiga/userstorage/permissions.py | 1 + taiga/userstorage/serializers.py | 1 + taiga/webhooks/__init__.py | 1 + taiga/webhooks/api.py | 1 + taiga/webhooks/apps.py | 1 + taiga/webhooks/models.py | 1 + taiga/webhooks/permissions.py | 1 + taiga/webhooks/serializers.py | 1 + taiga/webhooks/signal_handlers.py | 1 + taiga/webhooks/tasks.py | 1 + 292 files changed, 292 insertions(+) diff --git a/taiga/__init__.py b/taiga/__init__.py index 45426195..ee793c4a 100644 --- a/taiga/__init__.py +++ b/taiga/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/api.py b/taiga/auth/api.py index 51670b1e..7f3d7ad8 100644 --- a/taiga/auth/api.py +++ b/taiga/auth/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/backends.py b/taiga/auth/backends.py index 318c29f6..920d3f20 100644 --- a/taiga/auth/backends.py +++ b/taiga/auth/backends.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/permissions.py b/taiga/auth/permissions.py index d4b558d8..3e648abd 100644 --- a/taiga/auth/permissions.py +++ b/taiga/auth/permissions.py @@ -1,5 +1,6 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/serializers.py b/taiga/auth/serializers.py index 4bea0e80..52a1ae17 100644 --- a/taiga/auth/serializers.py +++ b/taiga/auth/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/services.py b/taiga/auth/services.py index 2431d5b1..49f9ceaa 100644 --- a/taiga/auth/services.py +++ b/taiga/auth/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/signals.py b/taiga/auth/signals.py index 9fcb0ca9..ed5782e9 100644 --- a/taiga/auth/signals.py +++ b/taiga/auth/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/auth/tokens.py b/taiga/auth/tokens.py index f02de9bc..4d809e38 100644 --- a/taiga/auth/tokens.py +++ b/taiga/auth/tokens.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/__init__.py b/taiga/base/__init__.py index a056c496..1e06114a 100644 --- a/taiga/base/__init__.py +++ b/taiga/base/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/__init__.py b/taiga/base/api/__init__.py index 937543a8..b2c17b0d 100644 --- a/taiga/base/api/__init__.py +++ b/taiga/base/api/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/authentication.py b/taiga/base/api/authentication.py index 19ae6d02..40385395 100644 --- a/taiga/base/api/authentication.py +++ b/taiga/base/api/authentication.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/fields.py b/taiga/base/api/fields.py index 0832f451..50fe58f1 100644 --- a/taiga/base/api/fields.py +++ b/taiga/base/api/fields.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/generics.py b/taiga/base/api/generics.py index 58b0f98a..82d3f487 100644 --- a/taiga/base/api/generics.py +++ b/taiga/base/api/generics.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/mixins.py b/taiga/base/api/mixins.py index 1e07ce64..80e14220 100644 --- a/taiga/base/api/mixins.py +++ b/taiga/base/api/mixins.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/negotiation.py b/taiga/base/api/negotiation.py index 0cb6a3ba..fdc16717 100644 --- a/taiga/base/api/negotiation.py +++ b/taiga/base/api/negotiation.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/pagination.py b/taiga/base/api/pagination.py index c93ac2d6..147a7bb7 100644 --- a/taiga/base/api/pagination.py +++ b/taiga/base/api/pagination.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/parsers.py b/taiga/base/api/parsers.py index 797131eb..920a78cb 100644 --- a/taiga/base/api/parsers.py +++ b/taiga/base/api/parsers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/permissions.py b/taiga/base/api/permissions.py index 7bb0dc70..b43d0067 100644 --- a/taiga/base/api/permissions.py +++ b/taiga/base/api/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/relations.py b/taiga/base/api/relations.py index 467b330f..f60c8ac5 100644 --- a/taiga/base/api/relations.py +++ b/taiga/base/api/relations.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/renderers.py b/taiga/base/api/renderers.py index 26eb52ab..21c053e0 100644 --- a/taiga/base/api/renderers.py +++ b/taiga/base/api/renderers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/request.py b/taiga/base/api/request.py index a0364300..3083b06d 100644 --- a/taiga/base/api/request.py +++ b/taiga/base/api/request.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/reverse.py b/taiga/base/api/reverse.py index 90261e14..2451fc1c 100644 --- a/taiga/base/api/reverse.py +++ b/taiga/base/api/reverse.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/serializers.py b/taiga/base/api/serializers.py index 72f1c0a7..8216ddf4 100644 --- a/taiga/base/api/serializers.py +++ b/taiga/base/api/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/settings.py b/taiga/base/api/settings.py index 57ffc0db..bada39b7 100644 --- a/taiga/base/api/settings.py +++ b/taiga/base/api/settings.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/templatetags/api.py b/taiga/base/api/templatetags/api.py index a28c0024..b2710a18 100644 --- a/taiga/base/api/templatetags/api.py +++ b/taiga/base/api/templatetags/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/throttling.py b/taiga/base/api/throttling.py index 64c074e4..3ff19ff7 100644 --- a/taiga/base/api/throttling.py +++ b/taiga/base/api/throttling.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/urlpatterns.py b/taiga/base/api/urlpatterns.py index b1485567..8bfd6f1c 100644 --- a/taiga/base/api/urlpatterns.py +++ b/taiga/base/api/urlpatterns.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/urls.py b/taiga/base/api/urls.py index d7b45b2e..30b2cf4a 100644 --- a/taiga/base/api/urls.py +++ b/taiga/base/api/urls.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils.py b/taiga/base/api/utils.py index c0c21e6c..77148b49 100644 --- a/taiga/base/api/utils.py +++ b/taiga/base/api/utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils/__init__.py b/taiga/base/api/utils/__init__.py index 05c90de1..227f56fd 100644 --- a/taiga/base/api/utils/__init__.py +++ b/taiga/base/api/utils/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils/breadcrumbs.py b/taiga/base/api/utils/breadcrumbs.py index 334f3662..57965bce 100644 --- a/taiga/base/api/utils/breadcrumbs.py +++ b/taiga/base/api/utils/breadcrumbs.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils/encoders.py b/taiga/base/api/utils/encoders.py index bfc991dc..cf792697 100644 --- a/taiga/base/api/utils/encoders.py +++ b/taiga/base/api/utils/encoders.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils/formatting.py b/taiga/base/api/utils/formatting.py index ad4ab86e..fbeb2534 100644 --- a/taiga/base/api/utils/formatting.py +++ b/taiga/base/api/utils/formatting.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/utils/mediatypes.py b/taiga/base/api/utils/mediatypes.py index a0ff4f1a..02e09b5d 100644 --- a/taiga/base/api/utils/mediatypes.py +++ b/taiga/base/api/utils/mediatypes.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/views.py b/taiga/base/api/views.py index 837988d9..68f58e27 100644 --- a/taiga/base/api/views.py +++ b/taiga/base/api/views.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/viewsets.py b/taiga/base/api/viewsets.py index 60ee7d8e..9c5f1e5d 100644 --- a/taiga/base/api/viewsets.py +++ b/taiga/base/api/viewsets.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/apps.py b/taiga/base/apps.py index 0c08417f..db509c52 100644 --- a/taiga/base/apps.py +++ b/taiga/base/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/connectors/exceptions.py b/taiga/base/connectors/exceptions.py index d296f5c3..0aca19fd 100644 --- a/taiga/base/connectors/exceptions.py +++ b/taiga/base/connectors/exceptions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/decorators.py b/taiga/base/decorators.py index 00989d87..af496de4 100644 --- a/taiga/base/decorators.py +++ b/taiga/base/decorators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/exceptions.py b/taiga/base/exceptions.py index 1de3ebc7..3e7c2104 100644 --- a/taiga/base/exceptions.py +++ b/taiga/base/exceptions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/fields.py b/taiga/base/fields.py index aa43023e..e45dace8 100644 --- a/taiga/base/fields.py +++ b/taiga/base/fields.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/filters.py b/taiga/base/filters.py index be9ad4f0..a3cd516e 100644 --- a/taiga/base/filters.py +++ b/taiga/base/filters.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/formats/en/formats.py b/taiga/base/formats/en/formats.py index f4addfd3..5046462e 100644 --- a/taiga/base/formats/en/formats.py +++ b/taiga/base/formats/en/formats.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/formats/es/formats.py b/taiga/base/formats/es/formats.py index c97f0e20..ab561c7f 100644 --- a/taiga/base/formats/es/formats.py +++ b/taiga/base/formats/es/formats.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/mails.py b/taiga/base/mails.py index 33c19ba4..51be494d 100644 --- a/taiga/base/mails.py +++ b/taiga/base/mails.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/management/commands/test_emails.py b/taiga/base/management/commands/test_emails.py index 09fa3a1c..c0f1a490 100644 --- a/taiga/base/management/commands/test_emails.py +++ b/taiga/base/management/commands/test_emails.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/middleware/cors.py b/taiga/base/middleware/cors.py index 06df90c3..101ff7a2 100644 --- a/taiga/base/middleware/cors.py +++ b/taiga/base/middleware/cors.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/neighbors.py b/taiga/base/neighbors.py index 74e40caa..7a2f079e 100644 --- a/taiga/base/neighbors.py +++ b/taiga/base/neighbors.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/response.py b/taiga/base/response.py index b357d691..3698ca7a 100644 --- a/taiga/base/response.py +++ b/taiga/base/response.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/routers.py b/taiga/base/routers.py index d21ddbee..4cf8a6f6 100644 --- a/taiga/base/routers.py +++ b/taiga/base/routers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/status.py b/taiga/base/status.py index 81ef3511..08386721 100644 --- a/taiga/base/status.py +++ b/taiga/base/status.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/storage.py b/taiga/base/storage.py index 4960d4df..4df5ce25 100644 --- a/taiga/base/storage.py +++ b/taiga/base/storage.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/tags.py b/taiga/base/tags.py index b89e60cc..8ba99e59 100644 --- a/taiga/base/tags.py +++ b/taiga/base/tags.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/throttling.py b/taiga/base/throttling.py index d3c385b7..b9cae88d 100644 --- a/taiga/base/throttling.py +++ b/taiga/base/throttling.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/contenttypes.py b/taiga/base/utils/contenttypes.py index 4fa241b3..6b7a8e37 100644 --- a/taiga/base/utils/contenttypes.py +++ b/taiga/base/utils/contenttypes.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/db.py b/taiga/base/utils/db.py index 5047b490..2619a545 100644 --- a/taiga/base/utils/db.py +++ b/taiga/base/utils/db.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/dicts.py b/taiga/base/utils/dicts.py index bd970b7e..232832ff 100644 --- a/taiga/base/utils/dicts.py +++ b/taiga/base/utils/dicts.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/diff.py b/taiga/base/utils/diff.py index 82cf8eb8..4b18a071 100644 --- a/taiga/base/utils/diff.py +++ b/taiga/base/utils/diff.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/functions.py b/taiga/base/utils/functions.py index 82ef94a8..769b868c 100644 --- a/taiga/base/utils/functions.py +++ b/taiga/base/utils/functions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/utils/iterators.py b/taiga/base/utils/iterators.py index 9cd24cd6..a8b9a88e 100644 --- a/taiga/base/utils/iterators.py +++ b/taiga/base/utils/iterators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/utils/json.py b/taiga/base/utils/json.py index dcb4f748..5cb8f6b6 100644 --- a/taiga/base/utils/json.py +++ b/taiga/base/utils/json.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/sequence.py b/taiga/base/utils/sequence.py index fc431f4e..009723dc 100644 --- a/taiga/base/utils/sequence.py +++ b/taiga/base/utils/sequence.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/signals.py b/taiga/base/utils/signals.py index 170b7c77..863128b1 100644 --- a/taiga/base/utils/signals.py +++ b/taiga/base/utils/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/base/utils/slug.py b/taiga/base/utils/slug.py index 3c5ee60a..53c246d9 100644 --- a/taiga/base/utils/slug.py +++ b/taiga/base/utils/slug.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/text.py b/taiga/base/utils/text.py index 2431e47e..dce1cb55 100644 --- a/taiga/base/utils/text.py +++ b/taiga/base/utils/text.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/urls.py b/taiga/base/utils/urls.py index 852767a6..b2ea88d4 100644 --- a/taiga/base/utils/urls.py +++ b/taiga/base/utils/urls.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/celery.py b/taiga/celery.py index d69078ba..00daf832 100644 --- a/taiga/celery.py +++ b/taiga/celery.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/contrib_routers.py b/taiga/contrib_routers.py index 99bd2d12..85b869dc 100644 --- a/taiga/contrib_routers.py +++ b/taiga/contrib_routers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/deferred.py b/taiga/deferred.py index b73ac83e..95d57ab6 100644 --- a/taiga/deferred.py +++ b/taiga/deferred.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/__init__.py b/taiga/events/__init__.py index bea6d7a0..bcbe54c4 100644 --- a/taiga/events/__init__.py +++ b/taiga/events/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/apps.py b/taiga/events/apps.py index db74dac8..13da3d83 100644 --- a/taiga/events/apps.py +++ b/taiga/events/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/backends/__init__.py b/taiga/events/backends/__init__.py index 8cfcd038..72de8147 100644 --- a/taiga/events/backends/__init__.py +++ b/taiga/events/backends/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/management/commands/emit_notification_message.py b/taiga/events/management/commands/emit_notification_message.py index f6500a25..ec023bc7 100644 --- a/taiga/events/management/commands/emit_notification_message.py +++ b/taiga/events/management/commands/emit_notification_message.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/events/signal_handlers.py b/taiga/events/signal_handlers.py index 69f5d47c..4c7c8928 100644 --- a/taiga/events/signal_handlers.py +++ b/taiga/events/signal_handlers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/api.py b/taiga/export_import/api.py index 13278356..cdfc36f0 100644 --- a/taiga/export_import/api.py +++ b/taiga/export_import/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/dump_service.py b/taiga/export_import/dump_service.py index b19540f1..e6980cf7 100644 --- a/taiga/export_import/dump_service.py +++ b/taiga/export_import/dump_service.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/management/commands/dump_project.py b/taiga/export_import/management/commands/dump_project.py index 3c042b31..daf6f6d5 100644 --- a/taiga/export_import/management/commands/dump_project.py +++ b/taiga/export_import/management/commands/dump_project.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/management/commands/load_dump.py b/taiga/export_import/management/commands/load_dump.py index 8cb1238a..1b44adbf 100644 --- a/taiga/export_import/management/commands/load_dump.py +++ b/taiga/export_import/management/commands/load_dump.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/mixins.py b/taiga/export_import/mixins.py index f2bd52b4..8009aac1 100644 --- a/taiga/export_import/mixins.py +++ b/taiga/export_import/mixins.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/permissions.py b/taiga/export_import/permissions.py index dd9fb6c3..1e0a1dec 100644 --- a/taiga/export_import/permissions.py +++ b/taiga/export_import/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/renderers.py b/taiga/export_import/renderers.py index 9cbf9cb4..acaf7f16 100644 --- a/taiga/export_import/renderers.py +++ b/taiga/export_import/renderers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index aeba0e12..a6d0d2c1 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/service.py b/taiga/export_import/service.py index f7091244..c958cf70 100644 --- a/taiga/export_import/service.py +++ b/taiga/export_import/service.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/tasks.py b/taiga/export_import/tasks.py index 129bf286..c6389b8b 100644 --- a/taiga/export_import/tasks.py +++ b/taiga/export_import/tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/export_import/throttling.py b/taiga/export_import/throttling.py index 77943ee1..0d00f137 100644 --- a/taiga/export_import/throttling.py +++ b/taiga/export_import/throttling.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/admin.py b/taiga/external_apps/admin.py index 775543c5..6047de49 100644 --- a/taiga/external_apps/admin.py +++ b/taiga/external_apps/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/api.py b/taiga/external_apps/api.py index e909cf6e..45824bc8 100644 --- a/taiga/external_apps/api.py +++ b/taiga/external_apps/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/auth_backends.py b/taiga/external_apps/auth_backends.py index 28e7894a..f51398d1 100644 --- a/taiga/external_apps/auth_backends.py +++ b/taiga/external_apps/auth_backends.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/encryption.py b/taiga/external_apps/encryption.py index a41ec3f9..6bf58a23 100644 --- a/taiga/external_apps/encryption.py +++ b/taiga/external_apps/encryption.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/models.py b/taiga/external_apps/models.py index 4018442f..fcc4695c 100644 --- a/taiga/external_apps/models.py +++ b/taiga/external_apps/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/permissions.py b/taiga/external_apps/permissions.py index a386daef..20293ea1 100644 --- a/taiga/external_apps/permissions.py +++ b/taiga/external_apps/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/serializers.py b/taiga/external_apps/serializers.py index 9d76e63d..74239724 100644 --- a/taiga/external_apps/serializers.py +++ b/taiga/external_apps/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/external_apps/services.py b/taiga/external_apps/services.py index d6027f7b..8c0854db 100644 --- a/taiga/external_apps/services.py +++ b/taiga/external_apps/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/__init__.py b/taiga/feedback/__init__.py index 288ca6b6..6ed582cb 100644 --- a/taiga/feedback/__init__.py +++ b/taiga/feedback/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/admin.py b/taiga/feedback/admin.py index 6246dee3..ad1cb01a 100644 --- a/taiga/feedback/admin.py +++ b/taiga/feedback/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/api.py b/taiga/feedback/api.py index 87de64cd..8aadbcbb 100644 --- a/taiga/feedback/api.py +++ b/taiga/feedback/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/apps.py b/taiga/feedback/apps.py index 10d666ca..505b924b 100644 --- a/taiga/feedback/apps.py +++ b/taiga/feedback/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/models.py b/taiga/feedback/models.py index 2af54af9..bbf845cd 100644 --- a/taiga/feedback/models.py +++ b/taiga/feedback/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/permissions.py b/taiga/feedback/permissions.py index 105d11e3..312738c7 100644 --- a/taiga/feedback/permissions.py +++ b/taiga/feedback/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/routers.py b/taiga/feedback/routers.py index 25c3eb89..8e694d0a 100644 --- a/taiga/feedback/routers.py +++ b/taiga/feedback/routers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/serializers.py b/taiga/feedback/serializers.py index 6d5c7f3c..a25ae8af 100644 --- a/taiga/feedback/serializers.py +++ b/taiga/feedback/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/feedback/services.py b/taiga/feedback/services.py index 3b1b170e..65667a36 100644 --- a/taiga/feedback/services.py +++ b/taiga/feedback/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/front/sitemaps/__init__.py b/taiga/front/sitemaps/__init__.py index cf638d3d..06af8fe0 100644 --- a/taiga/front/sitemaps/__init__.py +++ b/taiga/front/sitemaps/__init__.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/base.py b/taiga/front/sitemaps/base.py index 084d4474..ad007b60 100644 --- a/taiga/front/sitemaps/base.py +++ b/taiga/front/sitemaps/base.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/generics.py b/taiga/front/sitemaps/generics.py index 2a4bb3ee..f4113189 100644 --- a/taiga/front/sitemaps/generics.py +++ b/taiga/front/sitemaps/generics.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/issues.py b/taiga/front/sitemaps/issues.py index c30d74f2..38d70d70 100644 --- a/taiga/front/sitemaps/issues.py +++ b/taiga/front/sitemaps/issues.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/milestones.py b/taiga/front/sitemaps/milestones.py index f11dead8..73a1c064 100644 --- a/taiga/front/sitemaps/milestones.py +++ b/taiga/front/sitemaps/milestones.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/projects.py b/taiga/front/sitemaps/projects.py index 89cc8340..80cd483b 100644 --- a/taiga/front/sitemaps/projects.py +++ b/taiga/front/sitemaps/projects.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/tasks.py b/taiga/front/sitemaps/tasks.py index d3b53886..a1b2570e 100644 --- a/taiga/front/sitemaps/tasks.py +++ b/taiga/front/sitemaps/tasks.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/users.py b/taiga/front/sitemaps/users.py index 2c2df8d3..675839a0 100644 --- a/taiga/front/sitemaps/users.py +++ b/taiga/front/sitemaps/users.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/userstories.py b/taiga/front/sitemaps/userstories.py index 3240229f..0d59c323 100644 --- a/taiga/front/sitemaps/userstories.py +++ b/taiga/front/sitemaps/userstories.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/sitemaps/wiki.py b/taiga/front/sitemaps/wiki.py index 669c6a75..7021d393 100644 --- a/taiga/front/sitemaps/wiki.py +++ b/taiga/front/sitemaps/wiki.py @@ -1,4 +1,5 @@ # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Taiga Agile LLC # # This program is free software: you can redistribute it and/or modify diff --git a/taiga/front/templatetags/functions.py b/taiga/front/templatetags/functions.py index 383e67a4..cb78b567 100644 --- a/taiga/front/templatetags/functions.py +++ b/taiga/front/templatetags/functions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/front/urls.py b/taiga/front/urls.py index d6082865..f39efa30 100644 --- a/taiga/front/urls.py +++ b/taiga/front/urls.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/api.py b/taiga/hooks/api.py index 56090c4c..e2aea495 100644 --- a/taiga/hooks/api.py +++ b/taiga/hooks/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/bitbucket/api.py b/taiga/hooks/bitbucket/api.py index ae32a4b2..ee1ffd5b 100644 --- a/taiga/hooks/bitbucket/api.py +++ b/taiga/hooks/bitbucket/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/bitbucket/event_hooks.py b/taiga/hooks/bitbucket/event_hooks.py index b9ea7446..a4a8c00d 100644 --- a/taiga/hooks/bitbucket/event_hooks.py +++ b/taiga/hooks/bitbucket/event_hooks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/bitbucket/services.py b/taiga/hooks/bitbucket/services.py index 93e5467e..a1b12d9b 100644 --- a/taiga/hooks/bitbucket/services.py +++ b/taiga/hooks/bitbucket/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/event_hooks.py b/taiga/hooks/event_hooks.py index 20ecf900..931047e0 100644 --- a/taiga/hooks/event_hooks.py +++ b/taiga/hooks/event_hooks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/exceptions.py b/taiga/hooks/exceptions.py index 4cf12ef9..506e9f60 100644 --- a/taiga/hooks/exceptions.py +++ b/taiga/hooks/exceptions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/github/api.py b/taiga/hooks/github/api.py index 577a0575..e021fddf 100644 --- a/taiga/hooks/github/api.py +++ b/taiga/hooks/github/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/github/event_hooks.py b/taiga/hooks/github/event_hooks.py index 6df55d21..e280af0a 100644 --- a/taiga/hooks/github/event_hooks.py +++ b/taiga/hooks/github/event_hooks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/github/services.py b/taiga/hooks/github/services.py index 544f28ff..b4114449 100644 --- a/taiga/hooks/github/services.py +++ b/taiga/hooks/github/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/gitlab/api.py b/taiga/hooks/gitlab/api.py index e1a69a53..66c4a58e 100644 --- a/taiga/hooks/gitlab/api.py +++ b/taiga/hooks/gitlab/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/gitlab/event_hooks.py b/taiga/hooks/gitlab/event_hooks.py index e3f4daf3..5eb0d478 100644 --- a/taiga/hooks/gitlab/event_hooks.py +++ b/taiga/hooks/gitlab/event_hooks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/hooks/gitlab/services.py b/taiga/hooks/gitlab/services.py index c49cbade..2b2af849 100644 --- a/taiga/hooks/gitlab/services.py +++ b/taiga/hooks/gitlab/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/locale/api.py b/taiga/locale/api.py index ad638eb9..8c151730 100644 --- a/taiga/locale/api.py +++ b/taiga/locale/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/locale/permissions.py b/taiga/locale/permissions.py index 56fece12..fbcd654b 100644 --- a/taiga/locale/permissions.py +++ b/taiga/locale/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/mdrender/__init__.py b/taiga/mdrender/__init__.py index ab949765..11dbddfa 100644 --- a/taiga/mdrender/__init__.py +++ b/taiga/mdrender/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/mdrender/extensions/target_link.py b/taiga/mdrender/extensions/target_link.py index 21fd08c8..77e3685c 100644 --- a/taiga/mdrender/extensions/target_link.py +++ b/taiga/mdrender/extensions/target_link.py @@ -2,6 +2,7 @@ # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Alejandro Alonso +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/mdrender/extensions/wikilinks.py b/taiga/mdrender/extensions/wikilinks.py index fdeba954..d3ac7030 100644 --- a/taiga/mdrender/extensions/wikilinks.py +++ b/taiga/mdrender/extensions/wikilinks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/mdrender/service.py b/taiga/mdrender/service.py index afac9a08..648cb973 100644 --- a/taiga/mdrender/service.py +++ b/taiga/mdrender/service.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/mdrender/templatetags/functions.py b/taiga/mdrender/templatetags/functions.py index c1e32565..7186c236 100644 --- a/taiga/mdrender/templatetags/functions.py +++ b/taiga/mdrender/templatetags/functions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/permissions/permissions.py b/taiga/permissions/permissions.py index d3e9cb33..f543e733 100644 --- a/taiga/permissions/permissions.py +++ b/taiga/permissions/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/permissions/service.py b/taiga/permissions/service.py index c97fcb8c..ec64a95e 100644 --- a/taiga/permissions/service.py +++ b/taiga/permissions/service.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/__init__.py b/taiga/projects/__init__.py index 88de7036..08a5593c 100644 --- a/taiga/projects/__init__.py +++ b/taiga/projects/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index 43468a16..7a65d6e2 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 6e6c18b1..3146b51a 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/apps.py b/taiga/projects/apps.py index ff243c1f..a0e3b8b6 100644 --- a/taiga/projects/apps.py +++ b/taiga/projects/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/__init__.py b/taiga/projects/attachments/__init__.py index 11a8c9e4..b9d4f659 100644 --- a/taiga/projects/attachments/__init__.py +++ b/taiga/projects/attachments/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/admin.py b/taiga/projects/attachments/admin.py index cb4c9d9f..b64613ed 100644 --- a/taiga/projects/attachments/admin.py +++ b/taiga/projects/attachments/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/api.py b/taiga/projects/attachments/api.py index 7990ad6a..65ad55b3 100644 --- a/taiga/projects/attachments/api.py +++ b/taiga/projects/attachments/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/apps.py b/taiga/projects/attachments/apps.py index dcc66fe0..4e1f998d 100644 --- a/taiga/projects/attachments/apps.py +++ b/taiga/projects/attachments/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/models.py b/taiga/projects/attachments/models.py index 2040262b..9b01cfca 100644 --- a/taiga/projects/attachments/models.py +++ b/taiga/projects/attachments/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/permissions.py b/taiga/projects/attachments/permissions.py index dad64570..0896e506 100644 --- a/taiga/projects/attachments/permissions.py +++ b/taiga/projects/attachments/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/attachments/serializers.py b/taiga/projects/attachments/serializers.py index 7ab43dcb..ee1dbd2a 100644 --- a/taiga/projects/attachments/serializers.py +++ b/taiga/projects/attachments/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/choices.py b/taiga/projects/choices.py index c9b08efa..2d929ec7 100644 --- a/taiga/projects/choices.py +++ b/taiga/projects/choices.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/admin.py b/taiga/projects/custom_attributes/admin.py index 661d6934..24e070b5 100644 --- a/taiga/projects/custom_attributes/admin.py +++ b/taiga/projects/custom_attributes/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/api.py b/taiga/projects/custom_attributes/api.py index 4a2147f0..3224d617 100644 --- a/taiga/projects/custom_attributes/api.py +++ b/taiga/projects/custom_attributes/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/choices.py b/taiga/projects/custom_attributes/choices.py index 5a606412..dd6c15e9 100644 --- a/taiga/projects/custom_attributes/choices.py +++ b/taiga/projects/custom_attributes/choices.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/models.py b/taiga/projects/custom_attributes/models.py index 20711839..525fdaff 100644 --- a/taiga/projects/custom_attributes/models.py +++ b/taiga/projects/custom_attributes/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/permissions.py b/taiga/projects/custom_attributes/permissions.py index 41c32cf5..96fe120d 100644 --- a/taiga/projects/custom_attributes/permissions.py +++ b/taiga/projects/custom_attributes/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/serializers.py b/taiga/projects/custom_attributes/serializers.py index b1d0cb85..57eefa4f 100644 --- a/taiga/projects/custom_attributes/serializers.py +++ b/taiga/projects/custom_attributes/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/services.py b/taiga/projects/custom_attributes/services.py index 54ee7289..5d65a039 100644 --- a/taiga/projects/custom_attributes/services.py +++ b/taiga/projects/custom_attributes/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/custom_attributes/signals.py b/taiga/projects/custom_attributes/signals.py index 40897228..fcb6be8a 100644 --- a/taiga/projects/custom_attributes/signals.py +++ b/taiga/projects/custom_attributes/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/api.py b/taiga/projects/history/api.py index e257efc3..9d958d0e 100644 --- a/taiga/projects/history/api.py +++ b/taiga/projects/history/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/freeze_impl.py b/taiga/projects/history/freeze_impl.py index 1c8cfe4d..b34c3423 100644 --- a/taiga/projects/history/freeze_impl.py +++ b/taiga/projects/history/freeze_impl.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/mixins.py b/taiga/projects/history/mixins.py index 890eed1e..29294ce8 100644 --- a/taiga/projects/history/mixins.py +++ b/taiga/projects/history/mixins.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/permissions.py b/taiga/projects/history/permissions.py index 7dcc2311..fd139826 100644 --- a/taiga/projects/history/permissions.py +++ b/taiga/projects/history/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/serializers.py b/taiga/projects/history/serializers.py index 01c3b9a4..72b3c763 100644 --- a/taiga/projects/history/serializers.py +++ b/taiga/projects/history/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/history/templatetags/functions.py b/taiga/projects/history/templatetags/functions.py index e425db6c..31dd3371 100644 --- a/taiga/projects/history/templatetags/functions.py +++ b/taiga/projects/history/templatetags/functions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/__init__.py b/taiga/projects/issues/__init__.py index 690db69e..37ec56ee 100644 --- a/taiga/projects/issues/__init__.py +++ b/taiga/projects/issues/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/admin.py b/taiga/projects/issues/admin.py index 38b22a08..2b72e9d5 100644 --- a/taiga/projects/issues/admin.py +++ b/taiga/projects/issues/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/api.py b/taiga/projects/issues/api.py index 849c73ec..59583ee5 100644 --- a/taiga/projects/issues/api.py +++ b/taiga/projects/issues/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/apps.py b/taiga/projects/issues/apps.py index 8ce5055d..7c9352f7 100644 --- a/taiga/projects/issues/apps.py +++ b/taiga/projects/issues/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/models.py b/taiga/projects/issues/models.py index b987bbe5..07fd2247 100644 --- a/taiga/projects/issues/models.py +++ b/taiga/projects/issues/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/permissions.py b/taiga/projects/issues/permissions.py index 93277ed2..07e17201 100644 --- a/taiga/projects/issues/permissions.py +++ b/taiga/projects/issues/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/serializers.py b/taiga/projects/issues/serializers.py index 11f921e2..01526a57 100644 --- a/taiga/projects/issues/serializers.py +++ b/taiga/projects/issues/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/services.py b/taiga/projects/issues/services.py index 010cc796..29452c8b 100644 --- a/taiga/projects/issues/services.py +++ b/taiga/projects/issues/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/issues/signals.py b/taiga/projects/issues/signals.py index 5265ed1f..a46bfe35 100644 --- a/taiga/projects/issues/signals.py +++ b/taiga/projects/issues/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/likes/admin.py b/taiga/projects/likes/admin.py index 95100d95..c18f94d1 100644 --- a/taiga/projects/likes/admin.py +++ b/taiga/projects/likes/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/likes/mixins/serializers.py b/taiga/projects/likes/mixins/serializers.py index 416f157a..1897181e 100644 --- a/taiga/projects/likes/mixins/serializers.py +++ b/taiga/projects/likes/mixins/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/likes/mixins/viewsets.py b/taiga/projects/likes/mixins/viewsets.py index 554a8e6d..3261deb0 100644 --- a/taiga/projects/likes/mixins/viewsets.py +++ b/taiga/projects/likes/mixins/viewsets.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/likes/models.py b/taiga/projects/likes/models.py index 83e8f028..7e9d94f9 100644 --- a/taiga/projects/likes/models.py +++ b/taiga/projects/likes/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/likes/serializers.py b/taiga/projects/likes/serializers.py index 97941325..ce321f24 100644 --- a/taiga/projects/likes/serializers.py +++ b/taiga/projects/likes/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/likes/services.py b/taiga/projects/likes/services.py index 82eae57a..f136bad5 100644 --- a/taiga/projects/likes/services.py +++ b/taiga/projects/likes/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/likes/utils.py b/taiga/projects/likes/utils.py index 5bb7a737..c9706d76 100644 --- a/taiga/projects/likes/utils.py +++ b/taiga/projects/likes/utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/management/commands/sample_data.py b/taiga/projects/management/commands/sample_data.py index 660eec32..a8acaf04 100644 --- a/taiga/projects/management/commands/sample_data.py +++ b/taiga/projects/management/commands/sample_data.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/admin.py b/taiga/projects/milestones/admin.py index cb58cf1f..37c91b4d 100644 --- a/taiga/projects/milestones/admin.py +++ b/taiga/projects/milestones/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/api.py b/taiga/projects/milestones/api.py index e036f9b2..8f5a1bbd 100644 --- a/taiga/projects/milestones/api.py +++ b/taiga/projects/milestones/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/models.py b/taiga/projects/milestones/models.py index d2de4e91..65459a6a 100644 --- a/taiga/projects/milestones/models.py +++ b/taiga/projects/milestones/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/permissions.py b/taiga/projects/milestones/permissions.py index 4e8f55af..54462605 100644 --- a/taiga/projects/milestones/permissions.py +++ b/taiga/projects/milestones/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/serializers.py b/taiga/projects/milestones/serializers.py index 7858b167..2e6d95ac 100644 --- a/taiga/projects/milestones/serializers.py +++ b/taiga/projects/milestones/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/milestones/services.py b/taiga/projects/milestones/services.py index 7228bdf5..785a8bc7 100644 --- a/taiga/projects/milestones/services.py +++ b/taiga/projects/milestones/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/mixins/blocked.py b/taiga/projects/mixins/blocked.py index 65216151..6a750825 100644 --- a/taiga/projects/mixins/blocked.py +++ b/taiga/projects/mixins/blocked.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/mixins/on_destroy.py b/taiga/projects/mixins/on_destroy.py index c3dc73e8..1e45353a 100644 --- a/taiga/projects/mixins/on_destroy.py +++ b/taiga/projects/mixins/on_destroy.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/mixins/ordering.py b/taiga/projects/mixins/ordering.py index 42a48497..0a98c0a9 100644 --- a/taiga/projects/mixins/ordering.py +++ b/taiga/projects/mixins/ordering.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/models.py b/taiga/projects/models.py index c1aa397a..e06c774c 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/admin.py b/taiga/projects/notifications/admin.py index b01849e3..b35dd206 100644 --- a/taiga/projects/notifications/admin.py +++ b/taiga/projects/notifications/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/api.py b/taiga/projects/notifications/api.py index 8bc0d122..10f3d5a3 100644 --- a/taiga/projects/notifications/api.py +++ b/taiga/projects/notifications/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/choices.py b/taiga/projects/notifications/choices.py index 58acb930..a6fdfe31 100644 --- a/taiga/projects/notifications/choices.py +++ b/taiga/projects/notifications/choices.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/management/commands/send_notifications.py b/taiga/projects/notifications/management/commands/send_notifications.py index 797edf52..bb259cde 100644 --- a/taiga/projects/notifications/management/commands/send_notifications.py +++ b/taiga/projects/notifications/management/commands/send_notifications.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/mixins.py b/taiga/projects/notifications/mixins.py index 1d73f980..ba316eac 100644 --- a/taiga/projects/notifications/mixins.py +++ b/taiga/projects/notifications/mixins.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/models.py b/taiga/projects/notifications/models.py index e0e59b5a..ef56ace7 100644 --- a/taiga/projects/notifications/models.py +++ b/taiga/projects/notifications/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/permissions.py b/taiga/projects/notifications/permissions.py index c25b0d19..0f65e159 100644 --- a/taiga/projects/notifications/permissions.py +++ b/taiga/projects/notifications/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/serializers.py b/taiga/projects/notifications/serializers.py index dd35e05f..8eab93a0 100644 --- a/taiga/projects/notifications/serializers.py +++ b/taiga/projects/notifications/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/services.py b/taiga/projects/notifications/services.py index ce35d69f..73681319 100644 --- a/taiga/projects/notifications/services.py +++ b/taiga/projects/notifications/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/notifications/utils.py b/taiga/projects/notifications/utils.py index 9e0a2f66..b985aa0d 100644 --- a/taiga/projects/notifications/utils.py +++ b/taiga/projects/notifications/utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/notifications/validators.py b/taiga/projects/notifications/validators.py index b73539a4..010ef0df 100644 --- a/taiga/projects/notifications/validators.py +++ b/taiga/projects/notifications/validators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/occ/__init__.py b/taiga/projects/occ/__init__.py index 8c1a944a..a66f1b99 100644 --- a/taiga/projects/occ/__init__.py +++ b/taiga/projects/occ/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/occ/mixins.py b/taiga/projects/occ/mixins.py index 65e4e34b..b3ccfa32 100644 --- a/taiga/projects/occ/mixins.py +++ b/taiga/projects/occ/mixins.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/permissions.py b/taiga/projects/permissions.py index b12a9d53..61bb8afc 100644 --- a/taiga/projects/permissions.py +++ b/taiga/projects/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/api.py b/taiga/projects/references/api.py index e80226dc..028d4642 100644 --- a/taiga/projects/references/api.py +++ b/taiga/projects/references/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/models.py b/taiga/projects/references/models.py index f53b2e19..f8b196d9 100644 --- a/taiga/projects/references/models.py +++ b/taiga/projects/references/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/permissions.py b/taiga/projects/references/permissions.py index ab52019f..a62d5a09 100644 --- a/taiga/projects/references/permissions.py +++ b/taiga/projects/references/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/sequences.py b/taiga/projects/references/sequences.py index 212c1a94..5bcb89af 100644 --- a/taiga/projects/references/sequences.py +++ b/taiga/projects/references/sequences.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/serializers.py b/taiga/projects/references/serializers.py index 84236868..3aac3fa2 100644 --- a/taiga/projects/references/serializers.py +++ b/taiga/projects/references/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/references/services.py b/taiga/projects/references/services.py index e65f5eec..7369da53 100644 --- a/taiga/projects/references/services.py +++ b/taiga/projects/references/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index 257e45d6..5d9bb5cc 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/__init__.py b/taiga/projects/services/__init__.py index 3c9ad43c..4b0c2e98 100644 --- a/taiga/projects/services/__init__.py +++ b/taiga/projects/services/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/bulk_update_order.py b/taiga/projects/services/bulk_update_order.py index ba44da38..e35f05ad 100644 --- a/taiga/projects/services/bulk_update_order.py +++ b/taiga/projects/services/bulk_update_order.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/filters.py b/taiga/projects/services/filters.py index 539f9f7e..96347cf5 100644 --- a/taiga/projects/services/filters.py +++ b/taiga/projects/services/filters.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/modules_config.py b/taiga/projects/services/modules_config.py index 3443ea88..46cf6b9a 100644 --- a/taiga/projects/services/modules_config.py +++ b/taiga/projects/services/modules_config.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/stats.py b/taiga/projects/services/stats.py index 34cefb92..44230046 100644 --- a/taiga/projects/services/stats.py +++ b/taiga/projects/services/stats.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/tags_colors.py b/taiga/projects/services/tags_colors.py index 766af9d0..9cebd044 100644 --- a/taiga/projects/services/tags_colors.py +++ b/taiga/projects/services/tags_colors.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/signals.py b/taiga/projects/signals.py index 3db0bc48..0d330670 100644 --- a/taiga/projects/signals.py +++ b/taiga/projects/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/__init__.py b/taiga/projects/tasks/__init__.py index 4d2b4e72..cdea243c 100644 --- a/taiga/projects/tasks/__init__.py +++ b/taiga/projects/tasks/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/admin.py b/taiga/projects/tasks/admin.py index c25ed8e1..b0f7683e 100644 --- a/taiga/projects/tasks/admin.py +++ b/taiga/projects/tasks/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/api.py b/taiga/projects/tasks/api.py index b4b37fdd..8d4cf373 100644 --- a/taiga/projects/tasks/api.py +++ b/taiga/projects/tasks/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/apps.py b/taiga/projects/tasks/apps.py index 011022d3..3284ef1d 100644 --- a/taiga/projects/tasks/apps.py +++ b/taiga/projects/tasks/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/models.py b/taiga/projects/tasks/models.py index 3946d889..0340f8d6 100644 --- a/taiga/projects/tasks/models.py +++ b/taiga/projects/tasks/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/permissions.py b/taiga/projects/tasks/permissions.py index 33f2fe00..4cb3f691 100644 --- a/taiga/projects/tasks/permissions.py +++ b/taiga/projects/tasks/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/serializers.py b/taiga/projects/tasks/serializers.py index ec541430..b10ef5a7 100644 --- a/taiga/projects/tasks/serializers.py +++ b/taiga/projects/tasks/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/services.py b/taiga/projects/tasks/services.py index cc2de396..d40394a2 100644 --- a/taiga/projects/tasks/services.py +++ b/taiga/projects/tasks/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/tasks/signals.py b/taiga/projects/tasks/signals.py index 75cf0b38..893869a1 100644 --- a/taiga/projects/tasks/signals.py +++ b/taiga/projects/tasks/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/translations.py b/taiga/projects/translations.py index c07f5fe2..e7a728c2 100644 --- a/taiga/projects/translations.py +++ b/taiga/projects/translations.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/__init__.py b/taiga/projects/userstories/__init__.py index d578b292..0cb5907d 100644 --- a/taiga/projects/userstories/__init__.py +++ b/taiga/projects/userstories/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/admin.py b/taiga/projects/userstories/admin.py index 88601931..aa1f8a28 100644 --- a/taiga/projects/userstories/admin.py +++ b/taiga/projects/userstories/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index 73a48499..3a1650ea 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/apps.py b/taiga/projects/userstories/apps.py index 5f9e5dd5..c86f6a99 100644 --- a/taiga/projects/userstories/apps.py +++ b/taiga/projects/userstories/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/models.py b/taiga/projects/userstories/models.py index fa54226f..6c561c07 100644 --- a/taiga/projects/userstories/models.py +++ b/taiga/projects/userstories/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/permissions.py b/taiga/projects/userstories/permissions.py index 9c501f45..e5f4af7f 100644 --- a/taiga/projects/userstories/permissions.py +++ b/taiga/projects/userstories/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/serializers.py b/taiga/projects/userstories/serializers.py index 2232b8af..dea31987 100644 --- a/taiga/projects/userstories/serializers.py +++ b/taiga/projects/userstories/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index 1d9859a0..edf98b64 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/signals.py b/taiga/projects/userstories/signals.py index f0d789b9..aa346e8f 100644 --- a/taiga/projects/userstories/signals.py +++ b/taiga/projects/userstories/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/userstories/validators.py b/taiga/projects/userstories/validators.py index 00e9117a..68e4940e 100644 --- a/taiga/projects/userstories/validators.py +++ b/taiga/projects/userstories/validators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/validators.py b/taiga/projects/validators.py index a33dff44..8b7324bc 100644 --- a/taiga/projects/validators.py +++ b/taiga/projects/validators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/votes/admin.py b/taiga/projects/votes/admin.py index 8664cd35..7c6241fb 100644 --- a/taiga/projects/votes/admin.py +++ b/taiga/projects/votes/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/votes/mixins/serializers.py b/taiga/projects/votes/mixins/serializers.py index d320de9c..c206ee6d 100644 --- a/taiga/projects/votes/mixins/serializers.py +++ b/taiga/projects/votes/mixins/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/votes/mixins/viewsets.py b/taiga/projects/votes/mixins/viewsets.py index 14ce9409..fb33304b 100644 --- a/taiga/projects/votes/mixins/viewsets.py +++ b/taiga/projects/votes/mixins/viewsets.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/votes/models.py b/taiga/projects/votes/models.py index 5a784fc0..85152cbb 100644 --- a/taiga/projects/votes/models.py +++ b/taiga/projects/votes/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/votes/serializers.py b/taiga/projects/votes/serializers.py index 78d10c89..af9ffdfa 100644 --- a/taiga/projects/votes/serializers.py +++ b/taiga/projects/votes/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/votes/services.py b/taiga/projects/votes/services.py index e9301f85..466855b8 100644 --- a/taiga/projects/votes/services.py +++ b/taiga/projects/votes/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/votes/utils.py b/taiga/projects/votes/utils.py index 7b3acf9a..a7ee5bfb 100644 --- a/taiga/projects/votes/utils.py +++ b/taiga/projects/votes/utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/projects/wiki/admin.py b/taiga/projects/wiki/admin.py index 7dcd76f7..f64dc7da 100644 --- a/taiga/projects/wiki/admin.py +++ b/taiga/projects/wiki/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/wiki/api.py b/taiga/projects/wiki/api.py index 19dc4907..a88c8d14 100644 --- a/taiga/projects/wiki/api.py +++ b/taiga/projects/wiki/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/wiki/models.py b/taiga/projects/wiki/models.py index ee1a0b39..86bb15a8 100644 --- a/taiga/projects/wiki/models.py +++ b/taiga/projects/wiki/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/wiki/permissions.py b/taiga/projects/wiki/permissions.py index ec6b4cbe..2a3c8e3f 100644 --- a/taiga/projects/wiki/permissions.py +++ b/taiga/projects/wiki/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/wiki/serializers.py b/taiga/projects/wiki/serializers.py index 4a1a0b2b..45f91c45 100644 --- a/taiga/projects/wiki/serializers.py +++ b/taiga/projects/wiki/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/routers.py b/taiga/routers.py index 40c0a7f5..fdcba0b8 100644 --- a/taiga/routers.py +++ b/taiga/routers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/searches/api.py b/taiga/searches/api.py index 0f92e26a..be8a0e9a 100644 --- a/taiga/searches/api.py +++ b/taiga/searches/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/searches/serializers.py b/taiga/searches/serializers.py index 70fb8644..d1173b65 100644 --- a/taiga/searches/serializers.py +++ b/taiga/searches/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/searches/services.py b/taiga/searches/services.py index 2ed4bcbb..38367c7e 100644 --- a/taiga/searches/services.py +++ b/taiga/searches/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/__init__.py b/taiga/timeline/__init__.py index d93ec69c..05b04f76 100644 --- a/taiga/timeline/__init__.py +++ b/taiga/timeline/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/api.py b/taiga/timeline/api.py index fef52224..e68ba949 100644 --- a/taiga/timeline/api.py +++ b/taiga/timeline/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/apps.py b/taiga/timeline/apps.py index 7919c8d4..898e3aa9 100644 --- a/taiga/timeline/apps.py +++ b/taiga/timeline/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py b/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py index 2d1b22f4..516bb343 100644 --- a/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py +++ b/taiga/timeline/management/commands/_clear_unnecessary_new_membership_entries.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py b/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py index c5667645..fdf8ef49 100644 --- a/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py +++ b/taiga/timeline/management/commands/_rebuild_timeline_for_user_creation.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py b/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py index 467830ca..7d39765f 100644 --- a/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py +++ b/taiga/timeline/management/commands/_update_timeline_for_updated_tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/management/commands/rebuild_timeline.py b/taiga/timeline/management/commands/rebuild_timeline.py index e67ecff7..5bf7d340 100644 --- a/taiga/timeline/management/commands/rebuild_timeline.py +++ b/taiga/timeline/management/commands/rebuild_timeline.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py b/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py index 5e00909c..146d5a1b 100644 --- a/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py +++ b/taiga/timeline/management/commands/rebuild_timeline_iterating_per_projects.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/models.py b/taiga/timeline/models.py index a93ed529..d13db447 100644 --- a/taiga/timeline/models.py +++ b/taiga/timeline/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/permissions.py b/taiga/timeline/permissions.py index 39bc1ce5..b71530ed 100644 --- a/taiga/timeline/permissions.py +++ b/taiga/timeline/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/serializers.py b/taiga/timeline/serializers.py index f01b1ba0..882f62bc 100644 --- a/taiga/timeline/serializers.py +++ b/taiga/timeline/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/service.py b/taiga/timeline/service.py index 5b1c7e7c..65e27a89 100644 --- a/taiga/timeline/service.py +++ b/taiga/timeline/service.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index e307235a..77ed6695 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/timeline/timeline_implementations.py b/taiga/timeline/timeline_implementations.py index 184caa0d..cf6223ab 100644 --- a/taiga/timeline/timeline_implementations.py +++ b/taiga/timeline/timeline_implementations.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/urls.py b/taiga/urls.py index 826b049f..14eaf3a4 100644 --- a/taiga/urls.py +++ b/taiga/urls.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/admin.py b/taiga/users/admin.py index ee4c53ac..729d64bf 100644 --- a/taiga/users/admin.py +++ b/taiga/users/admin.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/api.py b/taiga/users/api.py index b4ea6e4e..eae4a7f2 100644 --- a/taiga/users/api.py +++ b/taiga/users/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/filters.py b/taiga/users/filters.py index d3323088..f93cbfd5 100644 --- a/taiga/users/filters.py +++ b/taiga/users/filters.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/forms.py b/taiga/users/forms.py index faa52597..4cf74f35 100644 --- a/taiga/users/forms.py +++ b/taiga/users/forms.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/gravatar.py b/taiga/users/gravatar.py index c13ab7df..ec94f267 100644 --- a/taiga/users/gravatar.py +++ b/taiga/users/gravatar.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/users/models.py b/taiga/users/models.py index f179aedd..61552de8 100644 --- a/taiga/users/models.py +++ b/taiga/users/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/permissions.py b/taiga/users/permissions.py index 9ef2e8a1..a00cce86 100644 --- a/taiga/users/permissions.py +++ b/taiga/users/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/serializers.py b/taiga/users/serializers.py index f868b895..526f98f1 100644 --- a/taiga/users/serializers.py +++ b/taiga/users/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/services.py b/taiga/users/services.py index f42c3b63..b40798a0 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/signals.py b/taiga/users/signals.py index 07b56c9a..85be934b 100644 --- a/taiga/users/signals.py +++ b/taiga/users/signals.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/users/validators.py b/taiga/users/validators.py index fd2cf680..f6dc9656 100644 --- a/taiga/users/validators.py +++ b/taiga/users/validators.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/taiga/userstorage/api.py b/taiga/userstorage/api.py index 6cce8b50..9814de58 100644 --- a/taiga/userstorage/api.py +++ b/taiga/userstorage/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/userstorage/filters.py b/taiga/userstorage/filters.py index a649626b..3c977c5d 100644 --- a/taiga/userstorage/filters.py +++ b/taiga/userstorage/filters.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/userstorage/models.py b/taiga/userstorage/models.py index 303fc294..2760d43a 100644 --- a/taiga/userstorage/models.py +++ b/taiga/userstorage/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/userstorage/permissions.py b/taiga/userstorage/permissions.py index 10be62d6..e93c6bc4 100644 --- a/taiga/userstorage/permissions.py +++ b/taiga/userstorage/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/userstorage/serializers.py b/taiga/userstorage/serializers.py index d3402b42..682e7acf 100644 --- a/taiga/userstorage/serializers.py +++ b/taiga/userstorage/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/__init__.py b/taiga/webhooks/__init__.py index 70168cff..6309b18e 100644 --- a/taiga/webhooks/__init__.py +++ b/taiga/webhooks/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/api.py b/taiga/webhooks/api.py index 1897f301..b9092f47 100644 --- a/taiga/webhooks/api.py +++ b/taiga/webhooks/api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/apps.py b/taiga/webhooks/apps.py index 8c6bbba6..f6dda872 100644 --- a/taiga/webhooks/apps.py +++ b/taiga/webhooks/apps.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/models.py b/taiga/webhooks/models.py index ee4ff2cc..3fa9e86a 100644 --- a/taiga/webhooks/models.py +++ b/taiga/webhooks/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/permissions.py b/taiga/webhooks/permissions.py index 82150620..7dc41eea 100644 --- a/taiga/webhooks/permissions.py +++ b/taiga/webhooks/permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/serializers.py b/taiga/webhooks/serializers.py index e5ba40fe..a2714a05 100644 --- a/taiga/webhooks/serializers.py +++ b/taiga/webhooks/serializers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/signal_handlers.py b/taiga/webhooks/signal_handlers.py index 63c8f6ca..b209681e 100644 --- a/taiga/webhooks/signal_handlers.py +++ b/taiga/webhooks/signal_handlers.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/webhooks/tasks.py b/taiga/webhooks/tasks.py index 9dd703bf..c9ca6b88 100644 --- a/taiga/webhooks/tasks.py +++ b/taiga/webhooks/tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2013 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the From 9c4472a787fa5986deb8b5c9a5d9bd43975a5490 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 16:08:46 +0200 Subject: [PATCH 09/41] Add alejandro.alonso copyright preamble to test sources. --- tests/conftest.py | 1 + tests/factories.py | 1 + tests/fixtures.py | 1 + .../test_issues_custom_attributes_resource.py | 1 + .../test_tasks_custom_attributes_resource.py | 1 + .../test_userstories_custom_attributes_resource.py | 1 + tests/integration/test_auth_api.py | 1 + tests/integration/test_custom_attributes_issues.py | 1 + tests/integration/test_custom_attributes_tasks.py | 1 + tests/integration/test_custom_attributes_user_stories.py | 1 + tests/integration/test_exporter_api.py | 1 + tests/integration/test_fan_projects.py | 1 + tests/integration/test_history.py | 1 + tests/integration/test_importer_api.py | 1 + tests/integration/test_mdrender.py | 1 + tests/integration/test_milestones.py | 1 + tests/integration/test_neighbors.py | 1 + tests/integration/test_notifications.py | 1 + tests/integration/test_occ.py | 1 + tests/integration/test_references_sequences.py | 1 + tests/integration/test_roles.py | 1 + tests/integration/test_searches.py | 1 + tests/integration/test_throwttling.py | 1 + tests/integration/test_timeline.py | 1 + tests/integration/test_us_autoclosing.py | 1 + tests/integration/test_userstorage_api.py | 1 + tests/integration/test_vote_issues.py | 1 + tests/integration/test_vote_tasks.py | 1 + tests/integration/test_vote_userstories.py | 1 + tests/integration/test_votes.py | 1 + tests/integration/test_watch_issues.py | 1 + tests/integration/test_watch_milestones.py | 1 + tests/integration/test_watch_projects.py | 1 + tests/integration/test_watch_tasks.py | 1 + tests/integration/test_watch_userstories.py | 1 + tests/integration/test_watch_wikipages.py | 1 + tests/integration/test_webhooks.py | 1 + tests/models.py | 1 + tests/unit/conftest.py | 1 + tests/unit/test_base_api_permissions.py | 1 + tests/unit/test_deferred.py | 1 + tests/unit/test_export.py | 1 + tests/unit/test_gravatar.py | 1 + tests/unit/test_mdrender.py | 1 + tests/unit/test_permissions.py | 1 + tests/unit/test_slug.py | 1 + tests/unit/test_timeline.py | 1 + tests/unit/test_tokens.py | 1 + tests/unit/test_utils.py | 1 + tests/utils.py | 1 + 50 files changed, 50 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 118c9a0e..37e495d6 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/factories.py b/tests/factories.py index 92862158..ee2f4c5c 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/fixtures.py b/tests/fixtures.py index a5db2c84..bdb0fa87 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py index cd29e646..da0fa833 100644 --- a/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_issues_custom_attributes_resource.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py index b673e362..05b5f49d 100644 --- a/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_tasks_custom_attributes_resource.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py index 5cc7914e..a665e566 100644 --- a/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py +++ b/tests/integration/resources_permissions/test_userstories_custom_attributes_resource.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_auth_api.py b/tests/integration/test_auth_api.py index 1536c0b5..2bfaef9b 100644 --- a/tests/integration/test_auth_api.py +++ b/tests/integration/test_auth_api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_custom_attributes_issues.py b/tests/integration/test_custom_attributes_issues.py index bdf669ec..2e7a675a 100644 --- a/tests/integration/test_custom_attributes_issues.py +++ b/tests/integration/test_custom_attributes_issues.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_custom_attributes_tasks.py b/tests/integration/test_custom_attributes_tasks.py index e1c68a1f..0178c62f 100644 --- a/tests/integration/test_custom_attributes_tasks.py +++ b/tests/integration/test_custom_attributes_tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_custom_attributes_user_stories.py b/tests/integration/test_custom_attributes_user_stories.py index 1657b3ed..befda89a 100644 --- a/tests/integration/test_custom_attributes_user_stories.py +++ b/tests/integration/test_custom_attributes_user_stories.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_exporter_api.py b/tests/integration/test_exporter_api.py index ca96ffe4..899b1cfb 100644 --- a/tests/integration/test_exporter_api.py +++ b/tests/integration/test_exporter_api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_fan_projects.py b/tests/integration/test_fan_projects.py index a6a832eb..d5377e75 100644 --- a/tests/integration/test_fan_projects.py +++ b/tests/integration/test_fan_projects.py @@ -1,6 +1,7 @@ # Copyright (C) 2015 Andrey Antukh # Copyright (C) 2015 Jesús Espino # Copyright (C) 2015 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2015 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_history.py b/tests/integration/test_history.py index c92018d1..23ea50a0 100644 --- a/tests/integration/test_history.py +++ b/tests/integration/test_history.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_importer_api.py b/tests/integration/test_importer_api.py index eaee57eb..171dda31 100644 --- a/tests/integration/test_importer_api.py +++ b/tests/integration/test_importer_api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_mdrender.py b/tests/integration/test_mdrender.py index 277011f1..91b81ea2 100644 --- a/tests/integration/test_mdrender.py +++ b/tests/integration/test_mdrender.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_milestones.py b/tests/integration/test_milestones.py index 9dea0ed8..e7d6c2b8 100644 --- a/tests/integration/test_milestones.py +++ b/tests/integration/test_milestones.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_neighbors.py b/tests/integration/test_neighbors.py index aa0fe5af..5a416c1c 100644 --- a/tests/integration/test_neighbors.py +++ b/tests/integration/test_neighbors.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_notifications.py b/tests/integration/test_notifications.py index f35f7327..f4006836 100644 --- a/tests/integration/test_notifications.py +++ b/tests/integration/test_notifications.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_occ.py b/tests/integration/test_occ.py index d8251fcf..b8e22223 100644 --- a/tests/integration/test_occ.py +++ b/tests/integration/test_occ.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_references_sequences.py b/tests/integration/test_references_sequences.py index 7d342363..f1a96e9a 100644 --- a/tests/integration/test_references_sequences.py +++ b/tests/integration/test_references_sequences.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_roles.py b/tests/integration/test_roles.py index 9f6f2bf3..0a39b53e 100644 --- a/tests/integration/test_roles.py +++ b/tests/integration/test_roles.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_searches.py b/tests/integration/test_searches.py index 9ccff901..334ad405 100644 --- a/tests/integration/test_searches.py +++ b/tests/integration/test_searches.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_throwttling.py b/tests/integration/test_throwttling.py index 74fd0532..d3c049ed 100644 --- a/tests/integration/test_throwttling.py +++ b/tests/integration/test_throwttling.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_timeline.py b/tests/integration/test_timeline.py index 61c46964..81912fdb 100644 --- a/tests/integration/test_timeline.py +++ b/tests/integration/test_timeline.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_us_autoclosing.py b/tests/integration/test_us_autoclosing.py index a3e6bd4d..aec566ed 100644 --- a/tests/integration/test_us_autoclosing.py +++ b/tests/integration/test_us_autoclosing.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_userstorage_api.py b/tests/integration/test_userstorage_api.py index e3ae9eb9..66d4dd3b 100644 --- a/tests/integration/test_userstorage_api.py +++ b/tests/integration/test_userstorage_api.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_vote_issues.py b/tests/integration/test_vote_issues.py index 62b4b9d0..4af983ae 100644 --- a/tests/integration/test_vote_issues.py +++ b/tests/integration/test_vote_issues.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_vote_tasks.py b/tests/integration/test_vote_tasks.py index 6d975625..f387474d 100644 --- a/tests/integration/test_vote_tasks.py +++ b/tests/integration/test_vote_tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_vote_userstories.py b/tests/integration/test_vote_userstories.py index 086d4ae6..772937b8 100644 --- a/tests/integration/test_vote_userstories.py +++ b/tests/integration/test_vote_userstories.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_votes.py b/tests/integration/test_votes.py index f2e191a4..d486ed13 100644 --- a/tests/integration/test_votes.py +++ b/tests/integration/test_votes.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_issues.py b/tests/integration/test_watch_issues.py index 56376494..c5010827 100644 --- a/tests/integration/test_watch_issues.py +++ b/tests/integration/test_watch_issues.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_milestones.py b/tests/integration/test_watch_milestones.py index f8fc8bdd..dcb21524 100644 --- a/tests/integration/test_watch_milestones.py +++ b/tests/integration/test_watch_milestones.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_projects.py b/tests/integration/test_watch_projects.py index 2c96296d..f49d9160 100644 --- a/tests/integration/test_watch_projects.py +++ b/tests/integration/test_watch_projects.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_tasks.py b/tests/integration/test_watch_tasks.py index 46187cec..cde26ed0 100644 --- a/tests/integration/test_watch_tasks.py +++ b/tests/integration/test_watch_tasks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_userstories.py b/tests/integration/test_watch_userstories.py index 45fff4ca..e17081cd 100644 --- a/tests/integration/test_watch_userstories.py +++ b/tests/integration/test_watch_userstories.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_watch_wikipages.py b/tests/integration/test_watch_wikipages.py index f5a04c5b..510c7015 100644 --- a/tests/integration/test_watch_wikipages.py +++ b/tests/integration/test_watch_wikipages.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/integration/test_webhooks.py b/tests/integration/test_webhooks.py index e9e709bc..2bfe689f 100644 --- a/tests/integration/test_webhooks.py +++ b/tests/integration/test_webhooks.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/models.py b/tests/models.py index 41644fe5..366a5269 100644 --- a/tests/models.py +++ b/tests/models.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 558cef74..1890cf84 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/test_base_api_permissions.py b/tests/unit/test_base_api_permissions.py index 4f2191b4..b858252f 100644 --- a/tests/unit/test_base_api_permissions.py +++ b/tests/unit/test_base_api_permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/unit/test_deferred.py b/tests/unit/test_deferred.py index 1f5fe693..bd2a7499 100644 --- a/tests/unit/test_deferred.py +++ b/tests/unit/test_deferred.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/unit/test_export.py b/tests/unit/test_export.py index 5176b213..d80103a3 100644 --- a/tests/unit/test_export.py +++ b/tests/unit/test_export.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/unit/test_gravatar.py b/tests/unit/test_gravatar.py index 931e22db..9244d934 100644 --- a/tests/unit/test_gravatar.py +++ b/tests/unit/test_gravatar.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/unit/test_mdrender.py b/tests/unit/test_mdrender.py index a4fb28af..0c3fb202 100644 --- a/tests/unit/test_mdrender.py +++ b/tests/unit/test_mdrender.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/test_permissions.py b/tests/unit/test_permissions.py index 7525f2b9..5ef7a93d 100644 --- a/tests/unit/test_permissions.py +++ b/tests/unit/test_permissions.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/unit/test_slug.py b/tests/unit/test_slug.py index 054f3b7e..0bebf51f 100644 --- a/tests/unit/test_slug.py +++ b/tests/unit/test_slug.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/test_timeline.py b/tests/unit/test_timeline.py index 37390715..afebbc09 100644 --- a/tests/unit/test_timeline.py +++ b/tests/unit/test_timeline.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/test_tokens.py b/tests/unit/test_tokens.py index 512615e7..53c98c3f 100644 --- a/tests/unit/test_tokens.py +++ b/tests/unit/test_tokens.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index a5eb6427..edd4a9e6 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/utils.py b/tests/utils.py index 9683f0df..f8a2aab1 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as From f44414055dbdf830cc02b89d0fce1664ba46d9ec Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 16:09:24 +0200 Subject: [PATCH 10/41] Add alejandro.alonso copyright preamble to the settings source files. --- settings/__init__.py | 1 + settings/celery.py | 1 + settings/common.py | 1 + settings/development.py | 1 + settings/sr.py | 1 + settings/testing.py | 1 + settings/travis.py | 1 + 7 files changed, 7 insertions(+) diff --git a/settings/__init__.py b/settings/__init__.py index bc3fb777..23fd84b8 100644 --- a/settings/__init__.py +++ b/settings/__init__.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/celery.py b/settings/celery.py index af811f8f..05444695 100644 --- a/settings/celery.py +++ b/settings/celery.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/common.py b/settings/common.py index a889d384..b10226d0 100644 --- a/settings/common.py +++ b/settings/common.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/development.py b/settings/development.py index 0c1b7496..6a7f981d 100644 --- a/settings/development.py +++ b/settings/development.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/sr.py b/settings/sr.py index 33e6ea40..4786e512 100644 --- a/settings/sr.py +++ b/settings/sr.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/testing.py b/settings/testing.py index c2ea27b0..b1549a8a 100644 --- a/settings/testing.py +++ b/settings/testing.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/settings/travis.py b/settings/travis.py index 4607041f..8481688c 100644 --- a/settings/travis.py +++ b/settings/travis.py @@ -1,6 +1,7 @@ # Copyright (C) 2014-2016 Andrey Antukh # Copyright (C) 2014-2016 Jesús Espino # Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the From 11b0051e1eac8899865187a4663a69530e6ccb1c Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 8 Jan 2016 16:11:03 +0200 Subject: [PATCH 11/41] Add alejandro.alonso copyright preamble to js sources. --- taiga/base/api/static/api/js/default.js | 1 + taiga/base/api/static/api/js/prettify-min.js | 1 + 2 files changed, 2 insertions(+) diff --git a/taiga/base/api/static/api/js/default.js b/taiga/base/api/static/api/js/default.js index 9960c59d..0cecc85a 100644 --- a/taiga/base/api/static/api/js/default.js +++ b/taiga/base/api/static/api/js/default.js @@ -2,6 +2,7 @@ * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán + * Copyright (C) 2014-2016 Alejandro Alonso * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/api/static/api/js/prettify-min.js b/taiga/base/api/static/api/js/prettify-min.js index 43b6cb35..2ae43c52 100644 --- a/taiga/base/api/static/api/js/prettify-min.js +++ b/taiga/base/api/static/api/js/prettify-min.js @@ -2,6 +2,7 @@ * Copyright (C) 2014-2016 Andrey Antukh * Copyright (C) 2014-2016 Jesús Espino * Copyright (C) 2014-2016 David Barragán + * Copyright (C) 2014-2016 Alejandro Alonso * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the From 93376a5fbbc646690bef238e9e35dc3e863df2ec Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 8 Jan 2016 08:50:06 +0100 Subject: [PATCH 12/41] Issue 3543 - Webhooks: problem extracting the story points from a user story --- taiga/webhooks/signal_handlers.py | 5 +++-- tests/integration/test_webhooks.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/taiga/webhooks/signal_handlers.py b/taiga/webhooks/signal_handlers.py index b209681e..1b4db0a6 100644 --- a/taiga/webhooks/signal_handlers.py +++ b/taiga/webhooks/signal_handlers.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from django.db import connection from django.conf import settings from django.utils import timezone @@ -62,6 +63,6 @@ def on_new_history_entry(sender, instance, created, **kwargs): args = [webhook["id"], webhook["url"], webhook["key"], obj] + extra_args if settings.CELERY_ENABLED: - task.delay(*args) + connection.on_commit(lambda: task.delay(*args)) else: - task(*args) + connection.on_commit(lambda: task(*args)) diff --git a/tests/integration/test_webhooks.py b/tests/integration/test_webhooks.py index 2bfe689f..83ee4b28 100644 --- a/tests/integration/test_webhooks.py +++ b/tests/integration/test_webhooks.py @@ -23,7 +23,7 @@ from .. import factories as f from taiga.projects.history import services -pytestmark = pytest.mark.django_db +pytestmark = pytest.mark.django_db(transaction=True) def test_new_object_with_one_webhook(settings): From d4f205e1e4b0cdfd4cbca13cddf40b44a48f063b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Sat, 9 Jan 2016 16:02:14 +0100 Subject: [PATCH 13/41] Update TravisCI config file --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 197e476d..e18b626a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: false language: python python: - "3.4" From f7137864de44aa69fd43a62ea4ab9df6df464aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Mon, 11 Jan 2016 10:43:32 +0100 Subject: [PATCH 14/41] Add a link to our CoC --- CONTRIBUTING.md | 84 +++++++++++++++++++++++++++++++++++++++++-------- README.md | 13 +++++--- 2 files changed, 80 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5f537b6c..0af2c2b3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,19 +1,77 @@ -# Contributing to Taiga +# Contributing -As an open source project, *taiga* welcomes contributions of many forms. +#### Where to start #### -Examples of contributions include: +There are many different ways to contribute to Taiga's development, just find the one that best fits with your skills. Examples of contributions we would love to receive include: -- Code patches. -- Documentation improvements. -- Bug reports. -- UI enhancements +- **Code patches** +- **Documentation improvements** +- **Translations** +- **Bug reports** +- **Patch reviews** +- **UI enhancements** -Before start developing one big feature (with intentions of including it on taiga code base), it is -strongly recommended chat about it using our [mailing list](http://groups.google.com/d/forum/taigaio). +Big features are also welcome but if you want to see your contributions included in Taiga codebase we strongly recommend you start by initiating a chat though our [mailing list](http://groups.google.co.uk/d/forum/taigaio) + + +#### Code of Conduct #### + +Help us keep the Taiga Community open and inclusive. Please read and follow our [Code of Conduct](https://github.com/taigaio/code-of-conduct/blob/master/CODE_OF_CONDUCT.md). + + +#### License #### + +Every code patch accepted in taiga codebase is licensed under [AGPL v3.0](http://www.gnu.org/licenses/agpl-3.0.html). You must be careful to not include any code that can not be licensed under this license. + +Please read carefully [our license](https://github.com/taigaio/taiga-back/blob/master/LICENSE) and ask us if you have any questions. + + +#### Bug reports, enhancements and support #### + +If you **need help to setup Taiga**, want to **talk about some cool enhancemnt** or you have **some questions**, please write us to our [mailing list](http://groups.google.com/d/forum/taigaio). + +If you **find a bug** in Taiga you can always report it: + +- in our [mailing list](http://groups.google.com/d/forum/taigaio). +- in [github issues](https://github.com/taigaio/taiga-back/issues). +- send us a mail to support@taiga.io if is a bug related to [tree.taiga.io](https://tree.taiga.io). +- send a mail to security@taiga.io if is a **security bug**. + +One of our fellow Taiga developers will search, find and hunt it as soon as possible. + +Please, before reporting a bug write down how can we reproduce it, your operating system, your browser and version, and if it's possible, a screenshot. Sometimes it takes less time to fix a bug if the developer knows how to find it and we will solve your problem as fast as possible. + + +#### Documentation improvements #### + +We are gathering lots of information from our users to build and enhance our documentation. If you use the documentation to install or develop with Taiga and find any mistakes, omissions or confused sequences, it is enormously helpful to report it. Or better still, if you believe you can author additions, please make a pull-request to taiga project. + +Currently, we have authored three main documentation hubs: + +- **[API Docs](https://github.com/taigaio/taiga-doc)**: Our API documentation and reference for developing from Taiga API. +- **[Installation Guide](https://github.com/taigaio/taiga-doc)**: If you need to install Taiga on your own server, this is the place to find some guides. +- **[Taiga Support](https://github.com/taigaio/taiga-doc)**: This page is intended to be the support reference page for the users. If you find any mistake, please report it. + + +#### Translation #### + +We are ready now to accept your help translating Taiga. It's easy (and fun!) just access our team of translators with the link below, set up an account in Transifex and start contributing. Join us to make sure your language is covered! **[Help Taiga to translate content](https://www.transifex.com/signup/ "Help Taiga to trasnlatecontent")** + + +#### Code patches #### + +Taiga will always be glad to receive code patches to update, fix or improve its code. + +If you know how to improve our code base or you found a bug, a security vulnerability or a performance issue and you think you can solve it, we will be very happy to accept your pull-request. If your code requires considerable changes, we recommend you first talk to us directly. We will find the best way to help. + + +#### UI enhancements #### + +Taiga is made for developers and designers. We care enormously about UI because usability and design are both critical aspects of the Taiga experience. + +There are two possible ways to contribute to our UI: +- **Bugs**: If you find a bug regarding front-end, please report it as previously indicated in the Bug reports section or send a pull-request as indicated in the Code Patches section. +- **Enhancements**: If its a design or UX bug or enhancement we will love to receive your feedback. Please send us your enhancement, with the reason and, if possible, an example. Our design and UX team will review your enhancement and fix it as soon as possible. We recommend you to use our [mailing list](http://groups.google.co.uk/d/forum/taigaio) so we can have a lot of different opinions and debate. +- **Language Localization**: We are eager to offer localized versions of Taiga. Some members of the community have already volunteered to work to provide a variety of languages. We are working to implement some changes to allow for this and expect to accept these requests in the near future. -## License ## -Every code patch accepted in taiga codebase it is licensed under AGPL v3.0. You should care -about it and not include code that can not be licensed under that license. -You can see the complete license on `LICENSE` file on the root of repository. diff --git a/README.md b/README.md index 2ef73e3a..cfd015fb 100644 --- a/README.md +++ b/README.md @@ -23,11 +23,16 @@ There are many different ways to contribute to Taiga's development, just find th Big features are also welcome but if you want to see your contributions included in Taiga codebase we strongly recommend you start by initiating a chat though our [mailing list](http://groups.google.co.uk/d/forum/taigaio) +#### Code of Conduct #### + +Help us keep the Taiga Community open and inclusive. Please read and follow our [Code of Conduct](https://github.com/taigaio/code-of-conduct/blob/master/CODE_OF_CONDUCT.md). + + #### License #### Every code patch accepted in taiga codebase is licensed under [AGPL v3.0](http://www.gnu.org/licenses/agpl-3.0.html). You must be careful to not include any code that can not be licensed under this license. -Please read carefully [our license](https://github.com/taigaio/taiga-front/blob/master/LICENSE) and ask us if you have any questions. +Please read carefully [our license](https://github.com/taigaio/taiga-back/blob/master/LICENSE) and ask us if you have any questions. #### Bug reports, enhancements and support #### @@ -37,8 +42,8 @@ If you **need help to setup Taiga**, want to **talk about some cool enhancemnt** If you **find a bug** in Taiga you can always report it: - in our [mailing list](http://groups.google.com/d/forum/taigaio). -- in [github issues](https://github.com/taigaio/taiga-front/issues). -- send us a mail to support@taiga.io if is a bug related to tree.taiga.io. +- in [github issues](https://github.com/taigaio/taiga-back/issues). +- send us a mail to support@taiga.io if is a bug related to [tree.taiga.io](https://tree.taiga.io). - send a mail to security@taiga.io if is a **security bug**. One of our fellow Taiga developers will search, find and hunt it as soon as possible. @@ -48,7 +53,7 @@ Please, before reporting a bug write down how can we reproduce it, your operatin #### Documentation improvements #### -We are gathering lots of information from our users to build and enhance our documentation. If you use the documentation to install or develop with Taiga and find any mistakes, omissions or confused sequences, it is enormously helpful to report it. Or better still, if you believe you can author additions, please make a pull-request to taiga project. +We are gathering lots of information from our users to build and enhance our documentation. If you use the documentation to install or develop with Taiga and find any mistakes, omissions or confused sequences, it is enormously helpful to report it. Or better still, if you believe you can author additions, please make a pull-request to taiga project. Currently, we have authored three main documentation hubs: From 305cb5cd61a629166827f34c55d60b52b7809e36 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 12 Jan 2016 10:04:25 +0100 Subject: [PATCH 15/41] Fixing get projects watched by user calculation --- taiga/projects/notifications/services.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/taiga/projects/notifications/services.py b/taiga/projects/notifications/services.py index 73681319..b7223fba 100644 --- a/taiga/projects/notifications/services.py +++ b/taiga/projects/notifications/services.py @@ -377,12 +377,13 @@ def get_projects_watched(user_or_id): """ if isinstance(user_or_id, get_user_model()): - user_id = user_or_id.id + user = user_or_id else: - user_id = user_or_id + user = get_user_model().objects.get(id=user_or_id) project_class = apps.get_model("projects", "Project") - return project_class.objects.filter(notify_policies__user__id=user_id).exclude(notify_policies__notify_level=NotifyLevel.none) + project_ids = user.notify_policies.exclude(notify_level=NotifyLevel.none).values_list("project__id", flat=True) + return project_class.objects.filter(id__in=project_ids) def add_watcher(obj, user): """Add a watcher to an object. From 806821469b6371848d064a434bc27acc266d048f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 18 Nov 2015 16:54:29 +0100 Subject: [PATCH 16/41] Task #3531: Add is_featured field to project model --- taiga/projects/admin.py | 8 +++++--- taiga/projects/api.py | 2 ++ .../management/commands/sample_data.py | 8 +++++++- .../migrations/0028_project_is_featured.py | 19 +++++++++++++++++++ taiga/projects/models.py | 7 ++++++- 5 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 taiga/projects/migrations/0028_project_is_featured.py diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index 7a65d6e2..d79da23c 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -66,9 +66,11 @@ class MembershipInline(admin.TabularInline): class ProjectAdmin(admin.ModelAdmin): - list_display = ["name", "owner", "created_date", "total_milestones", - "total_story_points"] - list_display_links = list_display + list_display = ["id", "name", "slug", "is_private", "is_featured", "owner", "created_date"] + list_display_links = ["id", "name", "slug"] + list_filter = ("is_private", "is_featured") + list_editable = ["is_featured"] + search_fields = ["id", "name", "slug", "owner__username", "owner__email", "owner__full_name"] inlines = [RoleInline, MembershipInline, MilestoneInline, NotifyPolicyInline, LikeInline] def get_object(self, *args, **kwargs): diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 3146b51a..8fe30955 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -278,6 +278,7 @@ class ProjectWatchersViewSet(WatchersViewSetMixin, ModelListViewSet): permission_classes = (permissions.ProjectWatchersPermission,) resource_model = models.Project + ###################################################### ## Custom values for selectors ###################################################### @@ -295,6 +296,7 @@ class PointsViewSet(MoveOnDestroyMixin, ModelCrudViewSet, BulkUpdateOrderMixin): move_on_destroy_related_field = "points" move_on_destroy_project_default_field = "default_points" + class UserStoryStatusViewSet(MoveOnDestroyMixin, ModelCrudViewSet, BulkUpdateOrderMixin): model = models.UserStoryStatus serializer_class = serializers.UserStoryStatusSerializer diff --git a/taiga/projects/management/commands/sample_data.py b/taiga/projects/management/commands/sample_data.py index a8acaf04..bd898d2b 100644 --- a/taiga/projects/management/commands/sample_data.py +++ b/taiga/projects/management/commands/sample_data.py @@ -107,6 +107,9 @@ NUM_ATTACHMENTS = getattr(settings, "SAMPLE_DATA_NUM_ATTACHMENTS", (0, 4)) NUM_LIKES = getattr(settings, "SAMPLE_DATA_NUM_LIKES", (0, 10)) NUM_VOTES = getattr(settings, "SAMPLE_DATA_NUM_VOTES", (0, 10)) NUM_WATCHERS = getattr(settings, "SAMPLE_DATA_NUM_PROJECT_WATCHERS", (0, 8)) +FEATURED_PROJECTS_POSITIONS = [0, 1, 2] +LOOKING_FOR_PEOPLE_PROJECTS_POSITIONS = [0, 1, 2] + class Command(BaseCommand): sd = SampleDataHelper(seed=12345678901) @@ -230,6 +233,7 @@ class Command(BaseCommand): self.create_likes(project) + def create_attachment(self, obj, order): attached_file = self.sd.file_from_directory(*ATTACHMENT_SAMPLE_DATA) membership = self.sd.db_object_from_queryset(obj.project.memberships @@ -458,7 +462,9 @@ class Command(BaseCommand): public_permissions=public_permissions, total_story_points=self.sd.int(600, 3000), total_milestones=self.sd.int(5,10), - tags=self.sd.words(1, 10).split(" ")) + tags=self.sd.words(1, 10).split(" "), + is_looking_for_people=counter in LOOKING_FOR_PEOPLE_PROJECTS_POSITIONS, + is_featured=cointer in FEATURED_PROJECTS_POSITIONS) project.is_kanban_activated = True project.save() diff --git a/taiga/projects/migrations/0028_project_is_featured.py b/taiga/projects/migrations/0028_project_is_featured.py new file mode 100644 index 00000000..24401d6d --- /dev/null +++ b/taiga/projects/migrations/0028_project_is_featured.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0027_auto_20150916_1302'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='is_featured', + field=models.BooleanField(verbose_name='is featured', default=False), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index e06c774c..c8884f79 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -169,6 +169,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): related_name="projects", null=True, blank=True, default=None, verbose_name=_("creation template")) + anon_permissions = TextArrayField(blank=True, null=True, default=[], verbose_name=_("anonymous permissions"), @@ -180,6 +181,9 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): is_private = models.BooleanField(default=True, null=False, blank=True, verbose_name=_("is private")) + is_featured = models.BooleanField(default=False, null=False, blank=True, + verbose_name=_("is featured")) + userstories_csv_uuid = models.CharField(max_length=32, editable=False, null=True, blank=True, default=None, db_index=True) @@ -189,7 +193,8 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): null=True, blank=True, default=None, db_index=True) - tags_colors = TextArrayField(dimension=2, null=False, blank=True, verbose_name=_("tags colors"), default=[]) + tags_colors = TextArrayField(dimension=2, default=[], null=False, blank=True, + verbose_name=_("tags colors")) _importing = None class Meta: From 5b2430ad69fc81593091852dafaecd1a989d5a54 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 19 Nov 2015 08:11:41 +0100 Subject: [PATCH 17/41] Task #3520: Add is_looking_for_people field to project model --- taiga/projects/admin.py | 7 +++++-- .../management/commands/sample_data.py | 2 +- .../0029_project_is_looking_for_people.py | 19 +++++++++++++++++++ taiga/projects/models.py | 3 +++ 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 taiga/projects/migrations/0029_project_is_looking_for_people.py diff --git a/taiga/projects/admin.py b/taiga/projects/admin.py index d79da23c..52022e20 100644 --- a/taiga/projects/admin.py +++ b/taiga/projects/admin.py @@ -66,9 +66,12 @@ class MembershipInline(admin.TabularInline): class ProjectAdmin(admin.ModelAdmin): - list_display = ["id", "name", "slug", "is_private", "is_featured", "owner", "created_date"] + list_display = ["id", "name", "slug", "is_private", + "is_featured", "is_looking_for_people", + "owner", "created_date"] + list_display_links = ["id", "name", "slug"] - list_filter = ("is_private", "is_featured") + list_filter = ("is_private", "is_featured", "is_looking_for_people") list_editable = ["is_featured"] search_fields = ["id", "name", "slug", "owner__username", "owner__email", "owner__full_name"] inlines = [RoleInline, MembershipInline, MilestoneInline, NotifyPolicyInline, LikeInline] diff --git a/taiga/projects/management/commands/sample_data.py b/taiga/projects/management/commands/sample_data.py index bd898d2b..afd990ec 100644 --- a/taiga/projects/management/commands/sample_data.py +++ b/taiga/projects/management/commands/sample_data.py @@ -464,7 +464,7 @@ class Command(BaseCommand): total_milestones=self.sd.int(5,10), tags=self.sd.words(1, 10).split(" "), is_looking_for_people=counter in LOOKING_FOR_PEOPLE_PROJECTS_POSITIONS, - is_featured=cointer in FEATURED_PROJECTS_POSITIONS) + is_featured=counter in FEATURED_PROJECTS_POSITIONS) project.is_kanban_activated = True project.save() diff --git a/taiga/projects/migrations/0029_project_is_looking_for_people.py b/taiga/projects/migrations/0029_project_is_looking_for_people.py new file mode 100644 index 00000000..3e4a2dc5 --- /dev/null +++ b/taiga/projects/migrations/0029_project_is_looking_for_people.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0028_project_is_featured'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='is_looking_for_people', + field=models.BooleanField(verbose_name='is looking for people', default=False), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index c8884f79..6579a1ed 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -184,6 +184,9 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): is_featured = models.BooleanField(default=False, null=False, blank=True, verbose_name=_("is featured")) + is_looking_for_people = models.BooleanField(default=False, null=False, blank=True, + verbose_name=_("is looking for people")) + userstories_csv_uuid = models.CharField(max_length=32, editable=False, null=True, blank=True, default=None, db_index=True) From 0956fac8355c4d68477d7e040882a13dce191f9e Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 19 Nov 2015 08:26:43 +0100 Subject: [PATCH 18/41] Task #3523 #3524 #3525 #3532: Adding basic filtering by: is_looking_for_people, is_featured, is_backlog_activated and is_kanban_activated --- taiga/projects/api.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 8fe30955..dbfeb646 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -64,7 +64,12 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) list_serializer_class = serializers.ProjectSerializer permission_classes = (permissions.ProjectPermission, ) filter_backends = (filters.CanViewProjectObjFilterBackend,) - filter_fields = (('member', 'members'),) + filter_fields = (('member', 'members'), + 'is_looking_for_people', + 'is_featured', + 'is_backlog_activated', + 'is_kanban_activated') + order_by_fields = ("memberships__user_order",) def get_queryset(self): From 8aebfa4baea4135f532c706b68f5f544d9a9e2dc Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 19 Nov 2015 08:30:09 +0100 Subject: [PATCH 19/41] Task #3517: Add total_fans order by to projects API --- taiga/projects/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index dbfeb646..fedaf793 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -70,7 +70,8 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) 'is_backlog_activated', 'is_kanban_activated') - order_by_fields = ("memberships__user_order",) + order_by_fields = ("memberships__user_order", + "total_fans") def get_queryset(self): qs = super().get_queryset() From 50e00b6d454d72bf8d221160f998d85cfe941a43 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 1 Dec 2015 11:00:51 +0100 Subject: [PATCH 20/41] Task #3517 #3516: Order by fans and activity (last week/moth/year/all time) --- requirements.txt | 1 + taiga/base/api/mixins.py | 10 +- taiga/export_import/dump_service.py | 1 + taiga/projects/api.py | 83 ++++++--- .../migrations/0002_auto_20151130_2230.py | 25 +++ taiga/projects/likes/mixins/serializers.py | 10 +- taiga/projects/likes/mixins/viewsets.py | 14 -- taiga/projects/likes/models.py | 21 --- taiga/projects/likes/services.py | 31 +--- taiga/projects/likes/utils.py | 77 -------- .../migrations/0030_auto_20151128_0757.py | 164 ++++++++++++++++++ taiga/projects/milestones/api.py | 2 +- taiga/projects/models.py | 79 +++++++++ taiga/projects/notifications/mixins.py | 15 +- taiga/projects/notifications/utils.py | 75 +------- taiga/projects/serializers.py | 21 ++- taiga/timeline/signals.py | 2 + taiga/users/services.py | 8 +- tests/factories.py | 9 - .../test_projects_resource.py | 4 - tests/integration/test_fan_projects.py | 16 -- tests/integration/test_notifications.py | 18 -- tests/integration/test_totals_projects.py | 154 ++++++++++++++++ tests/integration/test_users.py | 6 +- 24 files changed, 538 insertions(+), 308 deletions(-) create mode 100644 taiga/projects/likes/migrations/0002_auto_20151130_2230.py delete mode 100644 taiga/projects/likes/utils.py create mode 100644 taiga/projects/migrations/0030_auto_20151128_0757.py create mode 100644 tests/integration/test_totals_projects.py diff --git a/requirements.txt b/requirements.txt index 8b54d05a..8501843c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,3 +33,4 @@ django-transactional-cleanup==0.1.15 lxml==3.5.0 git+https://github.com/Xof/django-pglocks.git@dbb8d7375066859f897604132bd437832d2014ea pyjwkest==1.0.9 +python-dateutil==2.4.2 diff --git a/taiga/base/api/mixins.py b/taiga/base/api/mixins.py index 80e14220..27c05675 100644 --- a/taiga/base/api/mixins.py +++ b/taiga/base/api/mixins.py @@ -81,7 +81,7 @@ def _get_validation_exclusions(obj, pk=None, slug_field=None, lookup_field=None) return [field.name for field in obj._meta.fields if field.name not in include] -class CreateModelMixin(object): +class CreateModelMixin: """ Create a model instance. """ @@ -107,7 +107,7 @@ class CreateModelMixin(object): return {} -class ListModelMixin(object): +class ListModelMixin: """ List a queryset. """ @@ -137,7 +137,7 @@ class ListModelMixin(object): return response.Ok(serializer.data) -class RetrieveModelMixin(object): +class RetrieveModelMixin: """ Retrieve a model instance. """ @@ -153,7 +153,7 @@ class RetrieveModelMixin(object): return response.Ok(serializer.data) -class UpdateModelMixin(object): +class UpdateModelMixin: """ Update a model instance. """ @@ -220,7 +220,7 @@ class UpdateModelMixin(object): obj.full_clean(exclude) -class DestroyModelMixin(object): +class DestroyModelMixin: """ Destroy a model instance. """ diff --git a/taiga/export_import/dump_service.py b/taiga/export_import/dump_service.py index e6980cf7..8029fa0f 100644 --- a/taiga/export_import/dump_service.py +++ b/taiga/export_import/dump_service.py @@ -183,4 +183,5 @@ def dict_to_project(data, owner=None): if service.get_errors(clear=False): raise TaigaImportError(_("error importing timelines")) + proj.refresh_totals() return proj diff --git a/taiga/projects/api.py b/taiga/projects/api.py index fedaf793..d80a5509 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -17,9 +17,13 @@ import uuid -from django.db.models import signals +from django.apps import apps +from django.db.models import signals, Prefetch +from django.db.models import Value as V +from django.db.models.functions import Coalesce from django.core.exceptions import ValidationError from django.utils.translation import ugettext as _ +from django.utils import timezone from taiga.base import filters from taiga.base import response @@ -32,12 +36,9 @@ from taiga.base.api.utils import get_object_or_404 from taiga.base.utils.slug import slugify_uniquely from taiga.projects.history.mixins import HistoryResourceMixin +from taiga.projects.notifications.models import NotifyPolicy from taiga.projects.notifications.mixins import WatchedResourceMixin, WatchersViewSetMixin from taiga.projects.notifications.choices import NotifyLevel -from taiga.projects.notifications.utils import ( - attach_project_total_watchers_attrs_to_queryset, - attach_project_is_watcher_to_queryset, - attach_notify_level_to_project_queryset) from taiga.projects.mixins.ordering import BulkUpdateOrderMixin from taiga.projects.mixins.on_destroy import MoveOnDestroyMixin @@ -53,6 +54,7 @@ from . import models from . import permissions from . import services +from dateutil.relativedelta import relativedelta ###################################################### ## Project @@ -64,6 +66,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) list_serializer_class = serializers.ProjectSerializer permission_classes = (permissions.ProjectPermission, ) filter_backends = (filters.CanViewProjectObjFilterBackend,) + filter_fields = (('member', 'members'), 'is_looking_for_people', 'is_featured', @@ -71,34 +74,68 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) 'is_kanban_activated') order_by_fields = ("memberships__user_order", - "total_fans") + "total_fans", + "total_fans_last_week", + "total_fans_last_month", + "total_fans_last_year", + "total_activity", + "total_activity_last_week", + "total_activity_last_month", + "total_activity_last_year") + + def _get_order_by_field_name(self): + order_by_query_param = filters.CanViewProjectObjFilterBackend.order_by_query_param + order_by = self.request.QUERY_PARAMS.get(order_by_query_param, None) + if order_by is not None and order_by.startswith("-"): + return order_by[1:] def get_queryset(self): qs = super().get_queryset() - qs = self.attach_likes_attrs_to_queryset(qs) - qs = attach_project_total_watchers_attrs_to_queryset(qs) - if self.request.user.is_authenticated(): - qs = attach_project_is_watcher_to_queryset(qs, self.request.user) - qs = attach_notify_level_to_project_queryset(qs, self.request.user) + + # Prefetch doesn't work correctly if then if the field is filtered later (it generates more queries) + # so we add some custom prefetching + qs = qs.prefetch_related("members") + qs = qs.prefetch_related(Prefetch("notify_policies", + NotifyPolicy.objects.exclude(notify_level=NotifyLevel.none), to_attr="valid_notify_policies")) + + Milestone = apps.get_model("milestones", "Milestone") + qs = qs.prefetch_related(Prefetch("milestones", + Milestone.objects.filter(closed=True), to_attr="closed_milestones")) + + # If filtering an activity period we must exclude the activities not updated recently enough + now = timezone.now() + order_by_field_name = self._get_order_by_field_name() + if order_by_field_name == "total_fans_last_week": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(weeks=1)) + elif order_by_field_name == "total_fans_last_month": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(months=1)) + elif order_by_field_name == "total_fans_last_year": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(years=1)) + elif order_by_field_name == "total_activity_last_week": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(weeks=1)) + elif order_by_field_name == "total_activity_last_month": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(months=1)) + elif order_by_field_name == "total_activity_last_year": + qs = qs.filter(totals_updated_datetime__gte=now-relativedelta(years=1)) return qs def get_serializer_class(self): + serializer_class = self.serializer_class + if self.action == "list": - return self.list_serializer_class - elif self.action == "create": - return self.serializer_class + serializer_class = self.list_serializer_class + elif self.action != "create": + if self.action == "by_slug": + slug = self.request.QUERY_PARAMS.get("slug", None) + project = get_object_or_404(models.Project, slug=slug) + else: + project = self.get_object() - if self.action == "by_slug": - slug = self.request.QUERY_PARAMS.get("slug", None) - project = get_object_or_404(models.Project, slug=slug) - else: - project = self.get_object() + if permissions_service.is_project_owner(self.request.user, project): + serializer_class = self.admin_serializer_class - if permissions_service.is_project_owner(self.request.user, project): - return self.admin_serializer_class - - return self.serializer_class + return serializer_class @detail_route(methods=["POST"]) def watch(self, request, pk=None): diff --git a/taiga/projects/likes/migrations/0002_auto_20151130_2230.py b/taiga/projects/likes/migrations/0002_auto_20151130_2230.py new file mode 100644 index 00000000..fba65742 --- /dev/null +++ b/taiga/projects/likes/migrations/0002_auto_20151130_2230.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('likes', '0001_initial'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='likes', + unique_together=set([]), + ), + migrations.RemoveField( + model_name='likes', + name='content_type', + ), + migrations.DeleteModel( + name='Likes', + ), + ] diff --git a/taiga/projects/likes/mixins/serializers.py b/taiga/projects/likes/mixins/serializers.py index 1897181e..537cef13 100644 --- a/taiga/projects/likes/mixins/serializers.py +++ b/taiga/projects/likes/mixins/serializers.py @@ -20,12 +20,10 @@ from taiga.base.api import serializers class FanResourceSerializerMixin(serializers.ModelSerializer): is_fan = serializers.SerializerMethodField("get_is_fan") - total_fans = serializers.SerializerMethodField("get_total_fans") def get_is_fan(self, obj): - # The "is_fan" attribute is attached in the get_queryset of the viewset. - return getattr(obj, "is_fan", False) or False + if "request" in self.context: + user = self.context["request"].user + return user.is_authenticated() and user.is_fan(obj) - def get_total_fans(self, obj): - # The "total_fans" attribute is attached in the get_queryset of the viewset. - return getattr(obj, "total_fans", 0) or 0 + return False diff --git a/taiga/projects/likes/mixins/viewsets.py b/taiga/projects/likes/mixins/viewsets.py index 3261deb0..0b1b1831 100644 --- a/taiga/projects/likes/mixins/viewsets.py +++ b/taiga/projects/likes/mixins/viewsets.py @@ -24,23 +24,9 @@ from taiga.base.decorators import detail_route from taiga.projects.likes import serializers from taiga.projects.likes import services -from taiga.projects.likes.utils import attach_total_fans_to_queryset, attach_is_fan_to_queryset class LikedResourceMixin: - # Note: Update get_queryset method: - # def get_queryset(self): - # qs = super().get_queryset() - # return self.attach_likes_attrs_to_queryset(qs) - - def attach_likes_attrs_to_queryset(self, queryset): - qs = attach_total_fans_to_queryset(queryset) - - if self.request.user.is_authenticated(): - qs = attach_is_fan_to_queryset(self.request.user, qs) - - return qs - @detail_route(methods=["POST"]) def like(self, request, pk=None): obj = self.get_object() diff --git a/taiga/projects/likes/models.py b/taiga/projects/likes/models.py index 7e9d94f9..d5c4119f 100644 --- a/taiga/projects/likes/models.py +++ b/taiga/projects/likes/models.py @@ -22,27 +22,6 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ -class Likes(models.Model): - content_type = models.ForeignKey("contenttypes.ContentType") - object_id = models.PositiveIntegerField() - content_object = generic.GenericForeignKey("content_type", "object_id") - count = models.PositiveIntegerField(null=False, blank=False, default=0, verbose_name=_("count")) - - class Meta: - verbose_name = _("Likes") - verbose_name_plural = _("Likes") - unique_together = ("content_type", "object_id") - - @property - def project(self): - if hasattr(self.content_object, 'project'): - return self.content_object.project - return None - - def __str__(self): - return self.count - - class Like(models.Model): content_type = models.ForeignKey("contenttypes.ContentType") object_id = models.PositiveIntegerField() diff --git a/taiga/projects/likes/services.py b/taiga/projects/likes/services.py index f136bad5..cf35746d 100644 --- a/taiga/projects/likes/services.py +++ b/taiga/projects/likes/services.py @@ -21,7 +21,7 @@ from django.db.transaction import atomic from django.apps import apps from django.contrib.auth import get_user_model -from .models import Likes, Like +from .models import Like def add_like(obj, user): @@ -36,12 +36,9 @@ def add_like(obj, user): obj_type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(obj) with atomic(): like, created = Like.objects.get_or_create(content_type=obj_type, object_id=obj.id, user=user) - if not created: - return + if like.project is not None: + like.project.refresh_totals() - likes, _ = Likes.objects.get_or_create(content_type=obj_type, object_id=obj.id) - likes.count = F('count') + 1 - likes.save() return like @@ -60,11 +57,12 @@ def remove_like(obj, user): if not qs.exists(): return + like = qs.first() + project = like.project qs.delete() - likes, _ = Likes.objects.get_or_create(content_type=obj_type, object_id=obj.id) - likes.count = F('count') - 1 - likes.save() + if project is not None: + project.refresh_totals() def get_fans(obj): @@ -78,21 +76,6 @@ def get_fans(obj): return get_user_model().objects.filter(likes__content_type=obj_type, likes__object_id=obj.id) -def get_likes(obj): - """Get the number of likes an object has. - - :param obj: Any Django model instance. - - :return: Number of likes or `0` if the object has no likes at all. - """ - obj_type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(obj) - - try: - return Likes.objects.get(content_type=obj_type, object_id=obj.id).count - except Likes.DoesNotExist: - return 0 - - def get_liked(user_or_id, model): """Get the objects liked by an user. diff --git a/taiga/projects/likes/utils.py b/taiga/projects/likes/utils.py deleted file mode 100644 index c9706d76..00000000 --- a/taiga/projects/likes/utils.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (C) 2014-2016 Andrey Antukh -# Copyright (C) 2014-2016 Jesús Espino -# Copyright (C) 2014-2016 David Barragán -# Copyright (C) 2014-2016 Alejandro Alonso -# Copyright (C) 2014-2016 Anler Hernández -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -from django.apps import apps - - -def attach_total_fans_to_queryset(queryset, as_field="total_fans"): - """Attach likes count to each object of the queryset. - - Because of laziness of like objects creation, this makes much simpler and more efficient to - access to liked-object number of likes. - - (The other way was to do it in the serializer with some try/except blocks and additional - queries) - - :param queryset: A Django queryset object. - :param as_field: Attach the likes-count as an attribute with this name. - - :return: Queryset object with the additional `as_field` field. - """ - model = queryset.model - type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(model) - sql = """SELECT coalesce(SUM(total_fans), 0) FROM ( - SELECT coalesce(likes_likes.count, 0) total_fans - FROM likes_likes - WHERE likes_likes.content_type_id = {type_id} - AND likes_likes.object_id = {tbl}.id - ) as e""" - - sql = sql.format(type_id=type.id, tbl=model._meta.db_table) - qs = queryset.extra(select={as_field: sql}) - return qs - - -def attach_is_fan_to_queryset(user, queryset, as_field="is_fan"): - """Attach is_like boolean to each object of the queryset. - - Because of laziness of like objects creation, this makes much simpler and more efficient to - access to likes-object and check if the curren user like it. - - (The other way was to do it in the serializer with some try/except blocks and additional - queries) - - :param user: A users.User object model - :param queryset: A Django queryset object. - :param as_field: Attach the boolean as an attribute with this name. - - :return: Queryset object with the additional `as_field` field. - """ - model = queryset.model - type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(model) - sql = ("""SELECT CASE WHEN (SELECT count(*) - FROM likes_like - WHERE likes_like.content_type_id = {type_id} - AND likes_like.object_id = {tbl}.id - AND likes_like.user_id = {user_id}) > 0 - THEN TRUE - ELSE FALSE - END""") - sql = sql.format(type_id=type.id, tbl=model._meta.db_table, user_id=user.id) - qs = queryset.extra(select={as_field: sql}) - return qs diff --git a/taiga/projects/migrations/0030_auto_20151128_0757.py b/taiga/projects/migrations/0030_auto_20151128_0757.py new file mode 100644 index 00000000..5f515029 --- /dev/null +++ b/taiga/projects/migrations/0030_auto_20151128_0757.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import connection, migrations, models +from django.utils.timezone import utc +import datetime + + +def update_totals(apps, schema_editor): + model = apps.get_model("projects", "Project") + type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(model) + sql=""" + UPDATE projects_project + SET + totals_updated_datetime = totals.totals_updated_datetime, + total_fans = totals.total_fans, + total_fans_last_week = totals.total_fans_last_week, + total_fans_last_month = totals.total_fans_last_month, + total_fans_last_year = totals.total_fans_last_year, + total_activity = totals.total_activity, + total_activity_last_week = totals.total_activity_last_week, + total_activity_last_month = totals.total_activity_last_month, + total_activity_last_year = totals.total_activity_last_year + FROM ( + WITH + totals_activity AS (SELECT + split_part(timeline_timeline.namespace, ':', 2)::integer as project_id, + count(timeline_timeline.namespace) total_activity, + MAX (created) updated_datetime + FROM timeline_timeline + WHERE namespace LIKE 'project:%' + GROUP BY namespace), + totals_activity_week AS (SELECT + split_part(timeline_timeline.namespace, ':', 2)::integer as project_id, + count(timeline_timeline.namespace) total_activity_last_week + FROM timeline_timeline + WHERE namespace LIKE 'project:%' + AND timeline_timeline.created > current_date - interval '7' day + GROUP BY namespace), + totals_activity_month AS (SELECT + split_part(timeline_timeline.namespace, ':', 2)::integer as project_id, + count(timeline_timeline.namespace) total_activity_last_month + FROM timeline_timeline + WHERE namespace LIKE 'project:%' + AND timeline_timeline.created > current_date - interval '30' day + GROUP BY namespace), + totals_activity_year AS (SELECT + split_part(timeline_timeline.namespace, ':', 2)::integer as project_id, + count(timeline_timeline.namespace) total_activity_last_year + FROM timeline_timeline + WHERE namespace LIKE 'project:%' + AND timeline_timeline.created > current_date - interval '365' day + GROUP BY namespace), + totals_fans AS (SELECT + object_id as project_id, + COUNT(likes_like.object_id) total_fans, + MAX (created_date) updated_datetime + FROM likes_like + WHERE content_type_id = {type_id} + GROUP BY object_id), + totals_fans_week AS (SELECT + object_id as project_id, + COUNT(likes_like.object_id) total_fans_last_week + FROM likes_like + WHERE content_type_id = {type_id} + AND likes_like.created_date > current_date - interval '7' day + GROUP BY object_id), + totals_fans_month AS (SELECT + object_id as project_id, + COUNT(likes_like.object_id) total_fans_last_month + FROM likes_like + WHERE content_type_id = {type_id} + AND likes_like.created_date > current_date - interval '30' day + GROUP BY object_id), + totals_fans_year AS (SELECT + object_id as project_id, + COUNT(likes_like.object_id) total_fans_last_year + FROM likes_like + WHERE content_type_id = {type_id} + AND likes_like.created_date > current_date - interval '365' day + GROUP BY object_id) + SELECT + totals_activity.project_id, + COALESCE(total_activity, 0) total_activity, + COALESCE(total_activity_last_week, 0) total_activity_last_week, + COALESCE(total_activity_last_month, 0) total_activity_last_month, + COALESCE(total_activity_last_year, 0) total_activity_last_year, + COALESCE(total_fans, 0) total_fans, + COALESCE(total_fans_last_week, 0) total_fans_last_week, + COALESCE(total_fans_last_month, 0) total_fans_last_month, + COALESCE(total_fans_last_year, 0) total_fans_last_year, + totals_activity.updated_datetime totals_updated_datetime + FROM totals_activity + LEFT JOIN totals_fans ON totals_activity.project_id = totals_fans.project_id + LEFT JOIN totals_fans_week ON totals_activity.project_id = totals_fans_week.project_id + LEFT JOIN totals_fans_month ON totals_activity.project_id = totals_fans_month.project_id + LEFT JOIN totals_fans_year ON totals_activity.project_id = totals_fans_year.project_id + LEFT JOIN totals_activity_week ON totals_activity.project_id = totals_activity_week.project_id + LEFT JOIN totals_activity_month ON totals_activity.project_id = totals_activity_month.project_id + LEFT JOIN totals_activity_year ON totals_activity.project_id = totals_activity_year.project_id + ) totals + WHERE projects_project.id = totals.project_id + """.format(type_id=type.id) + + cursor = connection.cursor() + cursor.execute(sql) + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0029_project_is_looking_for_people'), + ('timeline', '0004_auto_20150603_1312'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='total_activity', + field=models.PositiveIntegerField(default=0, verbose_name='count', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_activity_last_month', + field=models.PositiveIntegerField(default=0, verbose_name='activity last month', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_activity_last_week', + field=models.PositiveIntegerField(default=0, verbose_name='activity last week', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_activity_last_year', + field=models.PositiveIntegerField(default=0, verbose_name='activity last year', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_fans', + field=models.PositiveIntegerField(default=0, verbose_name='count', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_fans_last_month', + field=models.PositiveIntegerField(default=0, verbose_name='fans last month', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_fans_last_week', + field=models.PositiveIntegerField(default=0, verbose_name='fans last week', db_index=True), + ), + migrations.AddField( + model_name='project', + name='total_fans_last_year', + field=models.PositiveIntegerField(default=0, verbose_name='fans last year', db_index=True), + ), + migrations.AddField( + model_name='project', + name='totals_updated_datetime', + field=models.DateTimeField(default=datetime.datetime(2015, 11, 28, 7, 57, 11, 743976, tzinfo=utc), auto_now_add=True, verbose_name='updated date time', db_index=True), + preserve_default=False, + ), + migrations.RunPython(update_totals), + ] diff --git a/taiga/projects/milestones/api.py b/taiga/projects/milestones/api.py index 8f5a1bbd..2823f762 100644 --- a/taiga/projects/milestones/api.py +++ b/taiga/projects/milestones/api.py @@ -84,7 +84,7 @@ class MilestoneViewSet(HistoryResourceMixin, WatchedResourceMixin, ModelCrudView if self.request.user.is_authenticated(): us_qs = attach_is_voter_to_queryset(self.request.user, us_qs) - us_qs = attach_is_watcher_to_queryset(self.request.user, us_qs) + us_qs = attach_is_watcher_to_queryset(us_qs, self.request.user) qs = qs.prefetch_related(Prefetch("user_stories", queryset=us_qs)) diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 6579a1ed..0f9a2fa3 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -46,8 +46,12 @@ from taiga.projects.notifications.services import ( set_notify_policy_level_to_ignore, create_notify_policy_if_not_exists) +from taiga.timeline.service import build_project_namespace + from . import choices +from dateutil.relativedelta import relativedelta + class Membership(models.Model): # This model stores all project memberships. Also @@ -198,6 +202,36 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): tags_colors = TextArrayField(dimension=2, default=[], null=False, blank=True, verbose_name=_("tags colors")) + + #Totals: + totals_updated_datetime = models.DateTimeField(null=False, blank=False, auto_now_add=True, + verbose_name=_("updated date time"), db_index=True) + + total_fans = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("count"), db_index=True) + + total_fans_last_week = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("fans last week"), db_index=True) + + total_fans_last_month = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("fans last month"), db_index=True) + + total_fans_last_year = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("fans last year"), db_index=True) + + total_activity = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("count"), db_index=True) + + total_activity_last_week = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("activity last week"), db_index=True) + + total_activity_last_month = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("activity last month"), db_index=True) + + total_activity_last_year = models.PositiveIntegerField(null=False, blank=False, default=0, + verbose_name=_("activity last year"), db_index=True) + + _cached_user_stories = None _importing = None class Meta: @@ -233,6 +267,51 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): super().save(*args, **kwargs) + def refresh_totals(self, save=True): + now = timezone.now() + self.totals_updated_datetime = now + + Like = apps.get_model("likes", "Like") + content_type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(Project) + qs = Like.objects.filter(content_type=content_type, object_id=self.id) + + self.total_fans = qs.count() + + qs_week = qs.filter(created_date__gte=now-relativedelta(weeks=1)) + self.total_fans_last_week = qs_week.count() + + qs_month = qs.filter(created_date__gte=now-relativedelta(months=1)) + self.total_fans_last_month = qs_month.count() + + qs_year = qs.filter(created_date__gte=now-relativedelta(years=1)) + self.total_fans_last_year = qs_year.count() + + tl_model = apps.get_model("timeline", "Timeline") + namespace = build_project_namespace(self) + + qs = tl_model.objects.filter(namespace=namespace) + self.total_activity = qs.count() + + qs_week = qs.filter(created__gte=now-relativedelta(weeks=1)) + self.total_activity_last_week = qs_week.count() + + qs_month = qs.filter(created__gte=now-relativedelta(months=1)) + self.total_activity_last_month = qs_month.count() + + qs_year = qs.filter(created__gte=now-relativedelta(years=1)) + self.total_activity_last_year = qs_year.count() + + if save: + self.save() + + @property + def cached_user_stories(self): + print(1111111, self._cached_user_stories) + if self._cached_user_stories is None: + self._cached_user_stories = list(self.user_stories.all()) + + return self._cached_user_stories + def get_roles(self): return self.roles.all() diff --git a/taiga/projects/notifications/mixins.py b/taiga/projects/notifications/mixins.py index ba316eac..726e639b 100644 --- a/taiga/projects/notifications/mixins.py +++ b/taiga/projects/notifications/mixins.py @@ -53,12 +53,12 @@ class WatchedResourceMixin: _not_notify = False def attach_watchers_attrs_to_queryset(self, queryset): - qs = attach_watchers_to_queryset(queryset) - qs = attach_total_watchers_to_queryset(qs) + queryset = attach_watchers_to_queryset(queryset) + queryset = attach_total_watchers_to_queryset(queryset) if self.request.user.is_authenticated(): - qs = attach_is_watcher_to_queryset(self.request.user, qs) + queryset = attach_is_watcher_to_queryset(queryset, self.request.user) - return qs + return queryset @detail_route(methods=["POST"]) def watch(self, request, pk=None): @@ -187,8 +187,11 @@ class WatchedResourceModelSerializer(serializers.ModelSerializer): total_watchers = serializers.SerializerMethodField("get_total_watchers") def get_is_watcher(self, obj): - # The "is_watcher" attribute is attached in the get_queryset of the viewset. - return getattr(obj, "is_watcher", False) or False + if "request" in self.context: + user = self.context["request"].user + return user.is_authenticated() and user.is_watcher(obj) + + return False def get_total_watchers(self, obj): # The "total_watchers" attribute is attached in the get_queryset of the viewset. diff --git a/taiga/projects/notifications/utils.py b/taiga/projects/notifications/utils.py index b985aa0d..991228b0 100644 --- a/taiga/projects/notifications/utils.py +++ b/taiga/projects/notifications/utils.py @@ -41,11 +41,11 @@ def attach_watchers_to_queryset(queryset, as_field="watchers"): return qs -def attach_is_watcher_to_queryset(user, queryset, as_field="is_watcher"): +def attach_is_watcher_to_queryset(queryset, user, as_field="is_watcher"): """Attach is_watcher boolean to each object of the queryset. - :param user: A users.User object model :param queryset: A Django queryset object. + :param user: A users.User object model :param as_field: Attach the boolean as an attribute with this name. :return: Queryset object with the additional `as_field` field. @@ -83,74 +83,3 @@ def attach_total_watchers_to_queryset(queryset, as_field="total_watchers"): sql = sql.format(type_id=type.id, tbl=model._meta.db_table) qs = queryset.extra(select={as_field: sql}) return qs - - -def attach_project_is_watcher_to_queryset(queryset, user, as_field="is_watcher"): - """Attach is_watcher boolean to each object of the projects queryset. - - :param user: A users.User object model - :param queryset: A Django projects queryset object. - :param as_field: Attach the boolean as an attribute with this name. - - :return: Queryset object with the additional `as_field` field. - """ - model = queryset.model - type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(model) - sql = ("""SELECT CASE WHEN (SELECT count(*) - FROM notifications_notifypolicy - WHERE notifications_notifypolicy.project_id = {tbl}.id - AND notifications_notifypolicy.user_id = {user_id} - AND notifications_notifypolicy.notify_level != {ignore_notify_level}) > 0 - - THEN TRUE - ELSE FALSE - END""") - sql = sql.format(tbl=model._meta.db_table, user_id=user.id, ignore_notify_level=NotifyLevel.none) - qs = queryset.extra(select={as_field: sql}) - return qs - - -def attach_project_total_watchers_attrs_to_queryset(queryset, as_field="total_watchers"): - """Attach watching user ids to each project of the queryset. - - :param queryset: A Django projects queryset object. - :param as_field: Attach the watchers as an attribute with this name. - - :return: Queryset object with the additional `as_field` field. - """ - model = queryset.model - type = apps.get_model("contenttypes", "ContentType").objects.get_for_model(model) - - sql = ("""SELECT count(user_id) - FROM notifications_notifypolicy - WHERE notifications_notifypolicy.project_id = {tbl}.id - AND notifications_notifypolicy.notify_level != {ignore_notify_level}""") - sql = sql.format(tbl=model._meta.db_table, ignore_notify_level=NotifyLevel.none) - qs = queryset.extra(select={as_field: sql}) - - return qs - - -def attach_notify_level_to_project_queryset(queryset, user): - """ - Function that attach "notify_level" attribute on each queryset - result for query notification level of current user for each - project in the most efficient way. - - :param queryset: A Django queryset object. - :param user: A User model object. - - :return: Queryset object with the additional `as_field` field. - """ - user_id = getattr(user, "id", None) or "NULL" - default_level = NotifyLevel.involved - - sql = strip_lines(""" - COALESCE((SELECT notifications_notifypolicy.notify_level - FROM notifications_notifypolicy - WHERE notifications_notifypolicy.project_id = projects_project.id - AND notifications_notifypolicy.user_id = {user_id}), - {default_level}) - """) - sql = sql.format(user_id=user_id, default_level=default_level) - return queryset.extra(select={"notify_level": sql}) diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index 5d9bb5cc..0259a6b8 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -26,6 +26,7 @@ from taiga.base.fields import PgArrayField from taiga.base.fields import TagsField from taiga.base.fields import TagsColorsField +from taiga.projects.notifications.choices import NotifyLevel from taiga.users.services import get_photo_or_gravatar_url from taiga.users.serializers import UserSerializer from taiga.users.serializers import UserBasicInfoSerializer @@ -318,6 +319,7 @@ class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializ tags_colors = TagsColorsField(required=False) total_closed_milestones = serializers.SerializerMethodField("get_total_closed_milestones") notify_level = serializers.SerializerMethodField("get_notify_level") + total_watchers = serializers.SerializerMethodField("get_total_watchers") class Meta: model = models.Project @@ -336,10 +338,27 @@ class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializ return False def get_total_closed_milestones(self, obj): + # The "closed_milestone" attribute can be attached in the get_queryset method of the viewset. + qs_closed_milestones = getattr(obj, "closed_milestones", None) + if qs_closed_milestones is not None: + return qs_closed_milestones + return obj.milestones.filter(closed=True).count() def get_notify_level(self, obj): - return getattr(obj, "notify_level", None) + if "request" in self.context: + user = self.context["request"].user + return user.is_authenticated() and user.get_notify_level(obj) + + return None + + def get_total_watchers(self, obj): + # The "valid_notify_policies" attribute can be attached in the get_queryset method of the viewset. + qs_valid_notify_policies = getattr(obj, "valid_notify_policies", None) + if qs_valid_notify_policies is not None: + return len(qs_valid_notify_policies) + + return obj.notify_policies.exclude(notify_level=NotifyLevel.none).count() class ProjectDetailSerializer(ProjectSerializer): diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index 77ed6695..5edc3850 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -46,6 +46,8 @@ def _push_to_timelines(project, user, obj, event_type, created_datetime, extra_d namespace=build_project_namespace(project), extra_data=extra_data) + project.refresh_totals() + if hasattr(obj, "get_related_people"): related_people = obj.get_related_people() diff --git a/taiga/users/services.py b/taiga/users/services.py index b40798a0..a592698c 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -224,7 +224,7 @@ def _build_watched_sql_for_projects(for_user): tags, notifications_notifypolicy.project_id AS object_id, projects_project.id AS project, slug, projects_project.name, null::text AS subject, notifications_notifypolicy.created_at as created_date, - coalesce(watchers, 0) AS total_watchers, coalesce(likes_likes.count, 0) AS total_fans, null::integer AS total_voters, + coalesce(watchers, 0) AS total_watchers, projects_project.total_fans AS total_fans, null::integer AS total_voters, null::integer AS assigned_to, null::text as status, null::text as status_color FROM notifications_notifypolicy INNER JOIN projects_project @@ -235,8 +235,6 @@ def _build_watched_sql_for_projects(for_user): GROUP BY project_id ) type_watchers ON projects_project.id = type_watchers.project_id - LEFT JOIN likes_likes - ON (projects_project.id = likes_likes.object_id AND {project_content_type_id} = likes_likes.content_type_id) WHERE notifications_notifypolicy.user_id = {for_user_id} AND notifications_notifypolicy.notify_level != {none_notify_level} @@ -254,7 +252,7 @@ def _build_liked_sql_for_projects(for_user): tags, likes_like.object_id AS object_id, projects_project.id AS project, slug, projects_project.name, null::text AS subject, likes_like.created_date, - coalesce(watchers, 0) AS total_watchers, coalesce(likes_likes.count, 0) AS total_fans, + coalesce(watchers, 0) AS total_watchers, projects_project.total_fans AS total_fans, null::integer AS assigned_to, null::text as status, null::text as status_color FROM likes_like INNER JOIN projects_project @@ -265,8 +263,6 @@ def _build_liked_sql_for_projects(for_user): GROUP BY project_id ) type_watchers ON projects_project.id = type_watchers.project_id - LEFT JOIN likes_likes - ON (projects_project.id = likes_likes.object_id AND {project_content_type_id} = likes_likes.content_type_id) WHERE likes_like.user_id = {for_user_id} AND {project_content_type_id} = likes_like.content_type_id """ sql = sql.format( diff --git a/tests/factories.py b/tests/factories.py index ee2f4c5c..41f8c3a2 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -423,15 +423,6 @@ class LikeFactory(Factory): user = factory.SubFactory("tests.factories.UserFactory") -class LikesFactory(Factory): - class Meta: - model = "likes.Likes" - strategy = factory.CREATE_STRATEGY - - content_type = factory.SubFactory("tests.factories.ContentTypeFactory") - object_id = factory.Sequence(lambda n: n) - - class VoteFactory(Factory): class Meta: model = "votes.Vote" diff --git a/tests/integration/resources_permissions/test_projects_resource.py b/tests/integration/resources_permissions/test_projects_resource.py index e604ac7f..023fee94 100644 --- a/tests/integration/resources_permissions/test_projects_resource.py +++ b/tests/integration/resources_permissions/test_projects_resource.py @@ -77,10 +77,6 @@ def data(): f.LikeFactory(content_type=project_ct, object_id=m.private_project2.pk, user=m.project_member_with_perms) f.LikeFactory(content_type=project_ct, object_id=m.private_project2.pk, user=m.project_owner) - f.LikesFactory(content_type=project_ct, object_id=m.public_project.pk, count=2) - f.LikesFactory(content_type=project_ct, object_id=m.private_project1.pk, count=2) - f.LikesFactory(content_type=project_ct, object_id=m.private_project2.pk, count=2) - return m diff --git a/tests/integration/test_fan_projects.py b/tests/integration/test_fan_projects.py index d5377e75..dc9b2fc5 100644 --- a/tests/integration/test_fan_projects.py +++ b/tests/integration/test_fan_projects.py @@ -76,26 +76,10 @@ def test_get_project_fan(client): assert response.data['id'] == like.user.id -def test_get_project_total_fans(client): - user = f.UserFactory.create() - project = f.create_project(owner=user) - f.MembershipFactory.create(project=project, user=user, is_owner=True) - url = reverse("projects-detail", args=(project.id,)) - - f.LikesFactory.create(content_object=project, count=5) - - client.login(user) - response = client.get(url) - - assert response.status_code == 200 - assert response.data['total_fans'] == 5 - - def test_get_project_is_fan(client): user = f.UserFactory.create() project = f.create_project(owner=user) f.MembershipFactory.create(project=project, user=user, is_owner=True) - f.LikesFactory.create(content_object=project) url_detail = reverse("projects-detail", args=(project.id,)) url_like = reverse("projects-like", args=(project.id,)) url_unlike = reverse("projects-unlike", args=(project.id,)) diff --git a/tests/integration/test_notifications.py b/tests/integration/test_notifications.py index f4006836..42058f07 100644 --- a/tests/integration/test_notifications.py +++ b/tests/integration/test_notifications.py @@ -53,24 +53,6 @@ def mail(): return mail -def test_attach_notify_level_to_project_queryset(): - project1 = f.ProjectFactory.create() - f.ProjectFactory.create() - - qs = project1.__class__.objects.order_by("id") - qs = utils.attach_notify_level_to_project_queryset(qs, project1.owner) - - assert len(qs) == 2 - assert qs[0].notify_level == NotifyLevel.involved - assert qs[1].notify_level == NotifyLevel.involved - - services.create_notify_policy(project1, project1.owner, NotifyLevel.all) - qs = project1.__class__.objects.order_by("id") - qs = utils.attach_notify_level_to_project_queryset(qs, project1.owner) - assert qs[0].notify_level == NotifyLevel.all - assert qs[1].notify_level == NotifyLevel.involved - - def test_create_retrieve_notify_policy(): project = f.ProjectFactory.create() diff --git a/tests/integration/test_totals_projects.py b/tests/integration/test_totals_projects.py new file mode 100644 index 00000000..8947d6ec --- /dev/null +++ b/tests/integration/test_totals_projects.py @@ -0,0 +1,154 @@ +# Copyright (C) 2014-2015 Andrey Antukh +# Copyright (C) 2014-2015 Jesús Espino +# Copyright (C) 2014-2015 David Barragán +# Copyright (C) 2014-2015 Anler Hernández +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +import pytest + +import datetime + +from .. import factories as f + +from taiga.projects.history.choices import HistoryType +from taiga.projects.models import Project + +from django.core.urlresolvers import reverse + +pytestmark = pytest.mark.django_db + +def test_project_totals_updated_on_activity(client): + project = f.create_project() + totals_updated_datetime = project.totals_updated_datetime + now = datetime.datetime.now() + assert project.total_activity == 0 + + totals_updated_datetime = project.totals_updated_datetime + us = f.UserStoryFactory.create(project=project, owner=project.owner) + f.HistoryEntryFactory.create( + user={"pk": project.owner.id}, + comment="", + type=HistoryType.change, + key="userstories.userstory:{}".format(us.id), + is_hidden=False, + diff=[], + created_at=now - datetime.timedelta(days=3) + ) + + project = Project.objects.get(id=project.id) + assert project.total_activity == 1 + assert project.total_activity_last_week == 1 + assert project.total_activity_last_month == 1 + assert project.total_activity_last_year == 1 + assert project.totals_updated_datetime > totals_updated_datetime + + totals_updated_datetime = project.totals_updated_datetime + f.HistoryEntryFactory.create( + user={"pk": project.owner.id}, + comment="", + type=HistoryType.change, + key="userstories.userstory:{}".format(us.id), + is_hidden=False, + diff=[], + created_at=now - datetime.timedelta(days=13) + ) + + project = Project.objects.get(id=project.id) + assert project.total_activity == 2 + assert project.total_activity_last_week == 1 + assert project.total_activity_last_month == 2 + assert project.total_activity_last_year == 2 + assert project.totals_updated_datetime > totals_updated_datetime + + totals_updated_datetime = project.totals_updated_datetime + f.HistoryEntryFactory.create( + user={"pk": project.owner.id}, + comment="", + type=HistoryType.change, + key="userstories.userstory:{}".format(us.id), + is_hidden=False, + diff=[], + created_at=now - datetime.timedelta(days=33) + ) + + project = Project.objects.get(id=project.id) + assert project.total_activity == 3 + assert project.total_activity_last_week == 1 + assert project.total_activity_last_month == 2 + assert project.total_activity_last_year == 3 + assert project.totals_updated_datetime > totals_updated_datetime + + totals_updated_datetime = project.totals_updated_datetime + f.HistoryEntryFactory.create( + user={"pk": project.owner.id}, + comment="", + type=HistoryType.change, + key="userstories.userstory:{}".format(us.id), + is_hidden=False, + diff=[], + created_at=now - datetime.timedelta(days=380) + ) + + project = Project.objects.get(id=project.id) + assert project.total_activity == 4 + assert project.total_activity_last_week == 1 + assert project.total_activity_last_month == 2 + assert project.total_activity_last_year == 3 + assert project.totals_updated_datetime > totals_updated_datetime + + + +def test_project_totals_updated_on_like(client): + project = f.create_project() + f.MembershipFactory.create(project=project, user=project.owner, is_owner=True) + + totals_updated_datetime = project.totals_updated_datetime + now = datetime.datetime.now() + assert project.total_activity == 0 + + now = datetime.datetime.now() + totals_updated_datetime = project.totals_updated_datetime + us = f.UserStoryFactory.create(project=project, owner=project.owner) + + l = f.LikeFactory.create(content_object=project) + l.created_date=now-datetime.timedelta(days=13) + l.save() + + l = f.LikeFactory.create(content_object=project) + l.created_date=now-datetime.timedelta(days=33) + l.save() + + l = f.LikeFactory.create(content_object=project) + l.created_date=now-datetime.timedelta(days=633) + l.save() + + project.refresh_totals() + project = Project.objects.get(id=project.id) + + assert project.total_fans == 3 + assert project.total_fans_last_week == 0 + assert project.total_fans_last_month == 1 + assert project.total_fans_last_year == 2 + assert project.totals_updated_datetime > totals_updated_datetime + + client.login(project.owner) + url_like = reverse("projects-like", args=(project.id,)) + response = client.post(url_like) + print(response.data) + + project = Project.objects.get(id=project.id) + assert project.total_fans == 4 + assert project.total_fans_last_week == 1 + assert project.total_fans_last_month == 2 + assert project.total_fans_last_year == 3 + assert project.totals_updated_datetime > totals_updated_datetime diff --git a/tests/integration/test_users.py b/tests/integration/test_users.py index 0410b579..e1e91d92 100644 --- a/tests/integration/test_users.py +++ b/tests/integration/test_users.py @@ -388,7 +388,6 @@ def test_get_liked_list(): membership = f.MembershipFactory(project=project, role=role, user=fan_user) content_type = ContentType.objects.get_for_model(project) f.LikeFactory(content_type=content_type, object_id=project.id, user=fan_user) - f.LikesFactory(content_type=content_type, object_id=project.id, count=1) assert len(get_liked_list(fan_user, viewer_user)) == 1 assert len(get_liked_list(fan_user, viewer_user, type="project")) == 1 @@ -495,8 +494,8 @@ def test_get_liked_list_valid_info(): project = f.ProjectFactory(is_private=False, name="Testing project", tags=['test', 'tag']) content_type = ContentType.objects.get_for_model(project) like = f.LikeFactory(content_type=content_type, object_id=project.id, user=fan_user) - f.LikesFactory(content_type=content_type, object_id=project.id, count=1) - + project.refresh_totals() + raw_project_like_info = get_liked_list(fan_user, viewer_user)[0] project_like_info = LikedObjectSerializer(raw_project_like_info).data @@ -762,7 +761,6 @@ def test_get_liked_list_permissions(): membership = f.MembershipFactory(project=project, role=role, user=viewer_priviliged_user) content_type = ContentType.objects.get_for_model(project) f.LikeFactory(content_type=content_type, object_id=project.id, user=fan_user) - f.LikesFactory(content_type=content_type, object_id=project.id, count=1) #If the project is private a viewer user without any permission shouldn' see # any vote From 0b7fe02a6f41cc8ffdd73486bc2ee417d4ee4522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 1 Dec 2015 19:04:15 +0100 Subject: [PATCH 21/41] Task #3515: Add logo field to project model --- settings/common.py | 36 ++++-- taiga/base/apps.py | 5 + taiga/base/signals/__init__.py | 0 taiga/base/signals/thumbnails.py | 31 +++++ taiga/base/utils/thumbnails.py | 30 +++++ taiga/export_import/serializers.py | 37 +++--- taiga/export_import/service.py | 18 +-- taiga/projects/api.py | 42 ++++++- taiga/projects/apps.py | 108 ++++++++++-------- taiga/projects/attachments/apps.py | 15 --- taiga/projects/attachments/serializers.py | 2 +- taiga/projects/attachments/services.py | 27 ++--- taiga/projects/history/freeze_impl.py | 4 +- .../projects/migrations/0031_project_logo.py | 20 ++++ taiga/projects/models.py | 33 +++++- taiga/projects/permissions.py | 2 + taiga/projects/serializers.py | 32 ++++-- taiga/projects/services/__init__.py | 17 +-- taiga/projects/services/logo.py | 29 +++++ taiga/projects/signals.py | 10 ++ taiga/users/api.py | 3 +- taiga/users/models.py | 14 +-- taiga/users/services.py | 15 +-- tests/integration/test_importer_api.py | 38 +++++- tests/integration/test_projects.py | 86 ++++++++++++++ tests/integration/test_users.py | 40 ++----- tests/utils.py | 2 + 27 files changed, 496 insertions(+), 200 deletions(-) create mode 100644 taiga/base/signals/__init__.py create mode 100644 taiga/base/signals/thumbnails.py create mode 100644 taiga/base/utils/thumbnails.py create mode 100644 taiga/projects/migrations/0031_project_logo.py create mode 100644 taiga/projects/services/logo.py diff --git a/settings/common.py b/settings/common.py index b10226d0..13e5ae4b 100644 --- a/settings/common.py +++ b/settings/common.py @@ -446,24 +446,38 @@ SOUTH_MIGRATION_MODULES = { 'easy_thumbnails': 'easy_thumbnails.south_migrations', } -DEFAULT_AVATAR_SIZE = 80 # 80x80 pixels -DEFAULT_BIG_AVATAR_SIZE = 300 # 300x300 pixels -DEFAULT_TIMELINE_IMAGE_SIZE = 640 # 640x??? pixels -DEFAUL_CARD_IMAGE_WIDTH = 300 # 300 pixels -DEFAUL_CARD_IMAGE_HEIGHT = 200 # 200 pixels + + + +THN_AVATAR_SIZE = 80 # 80x80 pixels +THN_AVATAR_BIG_SIZE = 300 # 300x300 pixels +THN_LOGO_SMALL_SIZE = 80 # 80x80 pixels +THN_LOGO_BIG_SIZE = 300 # 300x300 pixels +THN_TIMELINE_IMAGE_SIZE = 640 # 640x??? pixels +THN_CARD_IMAGE_WIDTH = 300 # 300 pixels +THN_CARD_IMAGE_HEIGHT = 200 # 200 pixels + +THN_AVATAR_SMALL = "avatar" +THN_AVATAR_BIG = "big-avatar" +THN_LOGO_SMALL = "logo-small" +THN_LOGO_BIG = "logo-big" +THN_ATTACHMENT_TIMELINE = "timeline-image" +THN_ATTACHMENT_CARD = "card-image" THUMBNAIL_ALIASES = { - '': { - 'avatar': {'size': (DEFAULT_AVATAR_SIZE, DEFAULT_AVATAR_SIZE), 'crop': True}, - 'big-avatar': {'size': (DEFAULT_BIG_AVATAR_SIZE, DEFAULT_BIG_AVATAR_SIZE), 'crop': True}, - 'timeline-image': {'size': (DEFAULT_TIMELINE_IMAGE_SIZE, 0), 'crop': True}, - 'card-image': {'size': (DEFAUL_CARD_IMAGE_WIDTH, DEFAUL_CARD_IMAGE_HEIGHT), 'crop': True}, + "": { + THN_AVATAR_SMALL: {"size": (THN_AVATAR_SIZE, THN_AVATAR_SIZE), "crop": True}, + THN_AVATAR_BIG: {"size": (THN_AVATAR_BIG_SIZE, THN_AVATAR_BIG_SIZE), "crop": True}, + THN_LOGO_SMALL: {"size": (THN_LOGO_SMALL_SIZE, THN_LOGO_SMALL_SIZE), "crop": True}, + THN_LOGO_BIG: {"size": (THN_LOGO_BIG_SIZE, THN_LOGO_BIG_SIZE), "crop": True}, + THN_ATTACHMENT_TIMELINE: {"size": (THN_TIMELINE_IMAGE_SIZE, 0), "crop": True}, + THN_ATTACHMENT_CARD: {"size": (THN_CARD_IMAGE_WIDTH, THN_CARD_IMAGE_HEIGHT), "crop": True}, }, } # GRAVATAR_DEFAULT_AVATAR = "img/user-noimage.png" GRAVATAR_DEFAULT_AVATAR = "" -GRAVATAR_AVATAR_SIZE = DEFAULT_AVATAR_SIZE +GRAVATAR_AVATAR_SIZE = THN_AVATAR_SIZE TAGS_PREDEFINED_COLORS = ["#fce94f", "#edd400", "#c4a000", "#8ae234", "#73d216", "#4e9a06", "#d3d7cf", "#fcaf3e", diff --git a/taiga/base/apps.py b/taiga/base/apps.py index db509c52..5a35fa30 100644 --- a/taiga/base/apps.py +++ b/taiga/base/apps.py @@ -17,7 +17,12 @@ from django.apps import AppConfig +from .signals.thumbnails import connect_thumbnail_signals + class BaseAppConfig(AppConfig): name = "taiga.base" verbose_name = "Base App Config" + + def ready(self): + connect_thumbnail_signals() diff --git a/taiga/base/signals/__init__.py b/taiga/base/signals/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/taiga/base/signals/thumbnails.py b/taiga/base/signals/thumbnails.py new file mode 100644 index 00000000..334bf970 --- /dev/null +++ b/taiga/base/signals/thumbnails.py @@ -0,0 +1,31 @@ +# Copyright (C) 2014-2015 Andrey Antukh +# Copyright (C) 2014-2015 Jesús Espino +# Copyright (C) 2014-2015 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django_transactional_cleanup.signals import cleanup_post_delete +from easy_thumbnails.files import get_thumbnailer + + +def _delete_thumbnail_files(**kwargs): + thumbnailer = get_thumbnailer(kwargs["file"]) + thumbnailer.delete_thumbnails() + + +def connect_thumbnail_signals(): + cleanup_post_delete.connect(_delete_thumbnail_files) + + +def disconnect_thumbnail_signals(): + cleanup_post_delete.disconnect(_delete_thumbnail_files) diff --git a/taiga/base/utils/thumbnails.py b/taiga/base/utils/thumbnails.py new file mode 100644 index 00000000..ce8697ba --- /dev/null +++ b/taiga/base/utils/thumbnails.py @@ -0,0 +1,30 @@ +# Copyright (C) 2014-2015 Andrey Antukh +# Copyright (C) 2014-2015 Jesús Espino +# Copyright (C) 2014-2015 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from taiga.base.utils.urls import get_absolute_url + +from easy_thumbnails.files import get_thumbnailer +from easy_thumbnails.exceptions import InvalidImageFormatError + + +def get_thumbnail_url(file_obj, thumbnailer_size): + try: + path_url = get_thumbnailer(file_obj)[thumbnailer_size].url + thumb_url = get_absolute_url(path_url) + except InvalidImageFormatError: + thumb_url = None + + return thumb_url diff --git a/taiga/export_import/serializers.py b/taiga/export_import/serializers.py index a6d0d2c1..ceb8263f 100644 --- a/taiga/export_import/serializers.py +++ b/taiga/export_import/serializers.py @@ -50,7 +50,7 @@ from taiga.projects.votes import services as votes_service from taiga.projects.history import services as history_service -class AttachedFileField(serializers.WritableField): +class FileField(serializers.WritableField): read_only = False def to_native(self, obj): @@ -308,7 +308,7 @@ class HistoryExportSerializerMixin(serializers.ModelSerializer): class AttachmentExportSerializer(serializers.ModelSerializer): owner = UserRelatedField(required=False) - attached_file = AttachedFileField() + attached_file = FileField() modified_date = serializers.DateTimeField(required=False) class Meta: @@ -643,7 +643,21 @@ class TimelineExportSerializer(serializers.ModelSerializer): class ProjectExportSerializer(WatcheableObjectModelSerializer): + logo = FileField(required=False) + anon_permissions = PgArrayField(required=False) + public_permissions = PgArrayField(required=False) + modified_date = serializers.DateTimeField(required=False) + roles = RoleExportSerializer(many=True, required=False) owner = UserRelatedField(required=False) + memberships = MembershipExportSerializer(many=True, required=False) + points = PointsExportSerializer(many=True, required=False) + us_statuses = UserStoryStatusExportSerializer(many=True, required=False) + task_statuses = TaskStatusExportSerializer(many=True, required=False) + issue_types = IssueTypeExportSerializer(many=True, required=False) + issue_statuses = IssueStatusExportSerializer(many=True, required=False) + priorities = PriorityExportSerializer(many=True, required=False) + severities = SeverityExportSerializer(many=True, required=False) + tags_colors = JsonField(required=False) default_points = serializers.SlugRelatedField(slug_field="name", required=False) default_us_status = serializers.SlugRelatedField(slug_field="name", required=False) default_task_status = serializers.SlugRelatedField(slug_field="name", required=False) @@ -651,28 +665,15 @@ class ProjectExportSerializer(WatcheableObjectModelSerializer): default_severity = serializers.SlugRelatedField(slug_field="name", required=False) default_issue_status = serializers.SlugRelatedField(slug_field="name", required=False) default_issue_type = serializers.SlugRelatedField(slug_field="name", required=False) - memberships = MembershipExportSerializer(many=True, required=False) - points = PointsExportSerializer(many=True, required=False) - us_statuses = UserStoryStatusExportSerializer(many=True, required=False) - task_statuses = TaskStatusExportSerializer(many=True, required=False) - issue_statuses = IssueStatusExportSerializer(many=True, required=False) - priorities = PriorityExportSerializer(many=True, required=False) - severities = SeverityExportSerializer(many=True, required=False) - issue_types = IssueTypeExportSerializer(many=True, required=False) userstorycustomattributes = UserStoryCustomAttributeExportSerializer(many=True, required=False) taskcustomattributes = TaskCustomAttributeExportSerializer(many=True, required=False) issuecustomattributes = IssueCustomAttributeExportSerializer(many=True, required=False) - roles = RoleExportSerializer(many=True, required=False) - milestones = MilestoneExportSerializer(many=True, required=False) - wiki_pages = WikiPageExportSerializer(many=True, required=False) - wiki_links = WikiLinkExportSerializer(many=True, required=False) user_stories = UserStoryExportSerializer(many=True, required=False) tasks = TaskExportSerializer(many=True, required=False) + milestones = MilestoneExportSerializer(many=True, required=False) issues = IssueExportSerializer(many=True, required=False) - tags_colors = JsonField(required=False) - anon_permissions = PgArrayField(required=False) - public_permissions = PgArrayField(required=False) - modified_date = serializers.DateTimeField(required=False) + wiki_links = WikiLinkExportSerializer(many=True, required=False) + wiki_pages = WikiPageExportSerializer(many=True, required=False) timeline = serializers.SerializerMethodField("get_timeline") class Meta: diff --git a/taiga/export_import/service.py b/taiga/export_import/service.py index c958cf70..fe1fafec 100644 --- a/taiga/export_import/service.py +++ b/taiga/export_import/service.py @@ -120,7 +120,8 @@ def render_project(project, outfile, chunk_size = 8190): b64_data = base64.b64encode(bin_data).decode('utf-8') outfile.write(b64_data) - outfile.write('", \n "name":"{}"}}\n}}'.format(os.path.basename(attachment_file.name))) + outfile.write('", \n "name":"{}"}}\n}}'.format( + os.path.basename(attachment_file.name))) outfile.write(']}') outfile.flush() @@ -324,8 +325,8 @@ def store_task(project, data): custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.taskcustomattributes.all().values('id', 'name') - custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values(custom_attributes, - custom_attributes_values) + custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values( + custom_attributes, custom_attributes_values) store_custom_attributes_values(serialized.object, custom_attributes_values, "task", serializers.TaskCustomAttributesValuesExportSerializer) @@ -457,7 +458,8 @@ def store_user_story(project, data): if "status" not in data and project.default_us_status: data["status"] = project.default_us_status.name - us_data = {key: value for key, value in data.items() if key not in ["role_points", "custom_attributes_values"]} + us_data = {key: value for key, value in data.items() if key not in + ["role_points", "custom_attributes_values"]} serialized = serializers.UserStoryExportSerializer(data=us_data, context={"project": project}) if serialized.is_valid(): @@ -495,8 +497,8 @@ def store_user_story(project, data): custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.userstorycustomattributes.all().values('id', 'name') - custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values(custom_attributes, - custom_attributes_values) + custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values( + custom_attributes, custom_attributes_values) store_custom_attributes_values(serialized.object, custom_attributes_values, "user_story", serializers.UserStoryCustomAttributesValuesExportSerializer) @@ -553,8 +555,8 @@ def store_issue(project, data): custom_attributes_values = data.get("custom_attributes_values", None) if custom_attributes_values: custom_attributes = serialized.object.project.issuecustomattributes.all().values('id', 'name') - custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values(custom_attributes, - custom_attributes_values) + custom_attributes_values = _use_id_instead_name_as_key_in_custom_attributes_values( + custom_attributes, custom_attributes_values) store_custom_attributes_values(serialized.object, custom_attributes_values, "issue", serializers.IssueCustomAttributesValuesExportSerializer) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index d80a5509..fbeefb7e 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -17,6 +17,8 @@ import uuid +from easy_thumbnails.source_generators import pil_image + from django.apps import apps from django.db.models import signals, Prefetch from django.db.models import Value as V @@ -137,6 +139,42 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) return serializer_class + @detail_route(methods=["POST"]) + def change_logo(self, request, *args, **kwargs): + """ + Change logo to this project. + """ + self.object = get_object_or_404(self.get_queryset(), **kwargs) + self.check_permissions(request, "change_logo", self.object) + + logo = request.FILES.get('logo', None) + if not logo: + raise exc.WrongArguments(_("Incomplete arguments")) + try: + pil_image(logo) + except Exception: + raise exc.WrongArguments(_("Invalid image format")) + + self.object.logo = logo + self.object.save(update_fields=["logo"]) + + serializer = self.get_serializer(self.object) + return response.Ok(serializer.data) + + @detail_route(methods=["POST"]) + def remove_logo(self, request, *args, **kwargs): + """ + Remove the logo of a project. + """ + self.object = get_object_or_404(self.get_queryset(), **kwargs) + self.check_permissions(request, "remove_logo", self.object) + + self.object.logo = None + self.object.save(update_fields=["logo"]) + + serializer = self.get_serializer(self.object) + return response.Ok(serializer.data) + @detail_route(methods=["POST"]) def watch(self, request, pk=None): project = self.get_object() @@ -288,9 +326,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) def pre_save(self, obj): if not obj.id: obj.owner = self.request.user - - # TODO REFACTOR THIS - if not obj.id: + # TODO REFACTOR THIS obj.template = self.request.QUERY_PARAMS.get('template', None) self._set_base_permissions(obj) diff --git a/taiga/projects/apps.py b/taiga/projects/apps.py index a0e3b8b6..841b81d7 100644 --- a/taiga/projects/apps.py +++ b/taiga/projects/apps.py @@ -22,60 +22,78 @@ from django.db.models import signals from . import signals as handlers -def connect_memberships_signals(): - # On membership object is deleted, update role-points relation. - signals.pre_delete.connect(handlers.membership_post_delete, - sender=apps.get_model("projects", "Membership"), - dispatch_uid='membership_pre_delete') - - # On membership object is deleted, update notify policies of all objects relation. - signals.post_save.connect(handlers.create_notify_policy, - sender=apps.get_model("projects", "Membership"), - dispatch_uid='create-notify-policy') - +## Project Signals def connect_projects_signals(): - # On project object is created apply template. - signals.post_save.connect(handlers.project_post_save, - sender=apps.get_model("projects", "Project"), - dispatch_uid='project_post_save') + # On project object is created apply template. + signals.post_save.connect(handlers.project_post_save, + sender=apps.get_model("projects", "Project"), + dispatch_uid='project_post_save') - # Tags - signals.pre_save.connect(handlers.tags_normalization, - sender=apps.get_model("projects", "Project"), - dispatch_uid="tags_normalization_projects") - signals.pre_save.connect(handlers.update_project_tags_when_create_or_edit_taggable_item, - sender=apps.get_model("projects", "Project"), - dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_projects") - - -def connect_us_status_signals(): - signals.post_save.connect(handlers.try_to_close_or_open_user_stories_when_edit_us_status, - sender=apps.get_model("projects", "UserStoryStatus"), - dispatch_uid="try_to_close_or_open_user_stories_when_edit_us_status") - - -def connect_task_status_signals(): - signals.post_save.connect(handlers.try_to_close_or_open_user_stories_when_edit_task_status, - sender=apps.get_model("projects", "TaskStatus"), - dispatch_uid="try_to_close_or_open_user_stories_when_edit_task_status") - - -def disconnect_memberships_signals(): - signals.pre_delete.disconnect(sender=apps.get_model("projects", "Membership"), dispatch_uid='membership_pre_delete') - signals.post_save.disconnect(sender=apps.get_model("projects", "Membership"), dispatch_uid='create-notify-policy') + # Tags normalization after save a project + signals.pre_save.connect(handlers.tags_normalization, + sender=apps.get_model("projects", "Project"), + dispatch_uid="tags_normalization_projects") + signals.pre_save.connect(handlers.update_project_tags_when_create_or_edit_taggable_item, + sender=apps.get_model("projects", "Project"), + dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_projects") def disconnect_projects_signals(): - signals.post_save.disconnect(sender=apps.get_model("projects", "Project"), dispatch_uid='project_post_save') - signals.pre_save.disconnect(sender=apps.get_model("projects", "Project"), dispatch_uid="tags_normalization_projects") - signals.pre_save.disconnect(sender=apps.get_model("projects", "Project"), dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_projects") + signals.post_save.disconnect(sender=apps.get_model("projects", "Project"), + dispatch_uid='project_post_save') + signals.pre_save.disconnect(sender=apps.get_model("projects", "Project"), + dispatch_uid="tags_normalization_projects") + signals.pre_save.disconnect(sender=apps.get_model("projects", "Project"), + dispatch_uid="update_project_tags_when_create_or_edit_taggable_item_projects") + + +## Memberships Signals + +def connect_memberships_signals(): + # On membership object is deleted, update role-points relation. + signals.pre_delete.connect(handlers.membership_post_delete, + sender=apps.get_model("projects", "Membership"), + dispatch_uid='membership_pre_delete') + + # On membership object is deleted, update notify policies of all objects relation. + signals.post_save.connect(handlers.create_notify_policy, + sender=apps.get_model("projects", "Membership"), + dispatch_uid='create-notify-policy') + +def disconnect_memberships_signals(): + signals.pre_delete.disconnect(sender=apps.get_model("projects", "Membership"), + dispatch_uid='membership_pre_delete') + signals.post_save.disconnect(sender=apps.get_model("projects", "Membership"), + dispatch_uid='create-notify-policy') + + +## US Statuses Signals + +def connect_us_status_signals(): + signals.post_save.connect(handlers.try_to_close_or_open_user_stories_when_edit_us_status, + sender=apps.get_model("projects", "UserStoryStatus"), + dispatch_uid="try_to_close_or_open_user_stories_when_edit_us_status") + def disconnect_us_status_signals(): - signals.post_save.disconnect(sender=apps.get_model("projects", "UserStoryStatus"), dispatch_uid="try_to_close_or_open_user_stories_when_edit_us_status") + signals.post_save.disconnect(sender=apps.get_model("projects", "UserStoryStatus"), + dispatch_uid="try_to_close_or_open_user_stories_when_edit_us_status") + + + +## Tasks Statuses Signals + +def connect_task_status_signals(): + signals.post_save.connect(handlers.try_to_close_or_open_user_stories_when_edit_task_status, + sender=apps.get_model("projects", "TaskStatus"), + dispatch_uid="try_to_close_or_open_user_stories_when_edit_task_status") + def disconnect_task_status_signals(): - signals.post_save.disconnect(sender=apps.get_model("projects", "TaskStatus"), dispatch_uid="try_to_close_or_open_user_stories_when_edit_task_status") + signals.post_save.disconnect(sender=apps.get_model("projects", "TaskStatus"), + dispatch_uid="try_to_close_or_open_user_stories_when_edit_task_status") + class ProjectsAppConfig(AppConfig): @@ -83,7 +101,7 @@ class ProjectsAppConfig(AppConfig): verbose_name = "Projects" def ready(self): - connect_memberships_signals() connect_projects_signals() + connect_memberships_signals() connect_us_status_signals() connect_task_status_signals() diff --git a/taiga/projects/attachments/apps.py b/taiga/projects/attachments/apps.py index 4e1f998d..6e1508e1 100644 --- a/taiga/projects/attachments/apps.py +++ b/taiga/projects/attachments/apps.py @@ -15,25 +15,10 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from easy_thumbnails.files import get_thumbnailer - from django.apps import AppConfig from django.apps import apps -from django_transactional_cleanup.signals import cleanup_post_delete - - -def thumbnail_delete(**kwargs): - thumbnailer = get_thumbnailer(kwargs["file"]) - thumbnailer.delete_thumbnails() - - -def connect_attachment_signals(): - cleanup_post_delete.connect(thumbnail_delete) class AttachmentsAppConfig(AppConfig): name = "taiga.projects.attachments" verbose_name = "Attachments" - - def ready(self): - connect_attachment_signals() diff --git a/taiga/projects/attachments/serializers.py b/taiga/projects/attachments/serializers.py index ee1dbd2a..bb15e61e 100644 --- a/taiga/projects/attachments/serializers.py +++ b/taiga/projects/attachments/serializers.py @@ -37,4 +37,4 @@ class AttachmentSerializer(serializers.ModelSerializer): return obj.attached_file.url def get_thumbnail_card_url(self, obj): - return services.get_card_image_thumbnailer_url(obj) + return services.get_card_image_thumbnail_url(obj) diff --git a/taiga/projects/attachments/services.py b/taiga/projects/attachments/services.py index 99c0d57a..ee25c9b5 100644 --- a/taiga/projects/attachments/services.py +++ b/taiga/projects/attachments/services.py @@ -12,25 +12,18 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from taiga.base.utils.urls import get_absolute_url +from django.conf import settings -from easy_thumbnails.files import get_thumbnailer -from easy_thumbnails.exceptions import InvalidImageFormatError +from taiga.base.utils.thumbnails import get_thumbnail_url -def _get_attachment_thumbnailer_url(attachment, thumbnailer_size): - try: - thumb_url = get_thumbnailer(attachment.attached_file)[thumbnailer_size].url - thumb_url = get_absolute_url(thumb_url) - except InvalidImageFormatError: - thumb_url = None - - return thumb_url +def get_timeline_image_thumbnail_url(attachment): + if attachment.attached_file: + return get_thumbnail_url(attachment.attached_file, settings.THN_ATTACHMENT_TIMELINE) + return None -def get_timeline_image_thumbnailer_url(attachment): - return _get_attachment_thumbnailer_url(attachment, "timeline-image") - - -def get_card_image_thumbnailer_url(attachment): - return _get_attachment_thumbnailer_url(attachment, "card-image") +def get_card_image_thumbnail_url(attachment): + if attachment.attached_file: + return get_thumbnail_url(attachment.attached_file, settings.THN_ATTACHMENT_CARD) + return None diff --git a/taiga/projects/history/freeze_impl.py b/taiga/projects/history/freeze_impl.py index b34c3423..ba0c10fe 100644 --- a/taiga/projects/history/freeze_impl.py +++ b/taiga/projects/history/freeze_impl.py @@ -27,7 +27,7 @@ from taiga.base.utils.iterators import as_tuple from taiga.base.utils.iterators import as_dict from taiga.mdrender.service import render as mdrender -from taiga.projects.attachments.services import get_timeline_image_thumbnailer_url +from taiga.projects.attachments.services import get_timeline_image_thumbnail_url import os @@ -178,7 +178,7 @@ def _generic_extract(obj:object, fields:list, default=None) -> dict: @as_tuple def extract_attachments(obj) -> list: for attach in obj.attachments.all(): - thumb_url = get_timeline_image_thumbnailer_url(attach) + thumb_url = get_timeline_image_thumbnail_url(attach) yield {"id": attach.id, "filename": os.path.basename(attach.attached_file.name), diff --git a/taiga/projects/migrations/0031_project_logo.py b/taiga/projects/migrations/0031_project_logo.py new file mode 100644 index 00000000..ebf50a9b --- /dev/null +++ b/taiga/projects/migrations/0031_project_logo.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import taiga.projects.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0030_auto_20151128_0757'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='logo', + field=models.FileField(null=True, blank=True, upload_to=taiga.projects.models.get_user_file_path, verbose_name='logo', max_length=500), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 0f9a2fa3..592224b2 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -15,9 +15,13 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +import hashlib +import os +import os.path as path import itertools import uuid +from unidecode import unidecode from django.core.exceptions import ValidationError from django.db import models @@ -27,18 +31,22 @@ from django.conf import settings from django.dispatch import receiver from django.contrib.auth import get_user_model from django.utils.translation import ugettext_lazy as _ +from django.template.defaultfilters import slugify +from django.utils.encoding import force_bytes from django.utils import timezone from django_pgjson.fields import JsonField from djorm_pgarray.fields import TextArrayField -from taiga.permissions.permissions import ANON_PERMISSIONS, MEMBERS_PERMISSIONS from taiga.base.tags import TaggedMixin -from taiga.base.utils.slug import slugify_uniquely from taiga.base.utils.dicts import dict_sum +from taiga.base.utils.iterators import split_by_n from taiga.base.utils.sequence import arithmetic_progression +from taiga.base.utils.slug import slugify_uniquely from taiga.base.utils.slug import slugify_uniquely_for_queryset +from taiga.permissions.permissions import ANON_PERMISSIONS, MEMBERS_PERMISSIONS + from taiga.projects.notifications.choices import NotifyLevel from taiga.projects.notifications.services import ( get_notify_policy, @@ -53,6 +61,22 @@ from . import choices from dateutil.relativedelta import relativedelta +def get_user_file_path(instance, filename): + basename = path.basename(filename).lower() + base, ext = path.splitext(basename) + base = slugify(unidecode(base)) + basename = "".join([base, ext]) + + hs = hashlib.sha256() + hs.update(force_bytes(timezone.now().isoformat())) + hs.update(os.urandom(1024)) + + p1, p2, p3, p4, *p5 = split_by_n(hs.hexdigest(), 1) + hash_part = path.join(p1, p2, p3, p4, "".join(p5)) + + return path.join("project", hash_part, basename) + + class Membership(models.Model): # This model stores all project memberships. Also # stores invitations to memberships that does not have @@ -141,6 +165,11 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): verbose_name=_("slug")) description = models.TextField(null=False, blank=False, verbose_name=_("description")) + + logo = models.FileField(upload_to=get_user_file_path, + max_length=500, null=True, blank=True, + verbose_name=_("logo")) + created_date = models.DateTimeField(null=False, blank=False, verbose_name=_("created date"), default=timezone.now) diff --git a/taiga/projects/permissions.py b/taiga/projects/permissions.py index 61bb8afc..c1e017a7 100644 --- a/taiga/projects/permissions.py +++ b/taiga/projects/permissions.py @@ -53,6 +53,8 @@ class ProjectPermission(TaigaResourcePermission): destroy_perms = IsProjectOwner() modules_perms = IsProjectOwner() list_perms = AllowAny() + change_logo_perms = IsProjectOwner() + remove_logo_perms = IsProjectOwner() stats_perms = HasProjectPerm('view_project') member_stats_perms = HasProjectPerm('view_project') issues_stats_perms = HasProjectPerm('view_project') diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index 0259a6b8..732c7761 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -20,7 +20,6 @@ from django.utils.translation import ugettext as _ from django.db.models import Q from taiga.base.api import serializers - from taiga.base.fields import JsonField from taiga.base.fields import PgArrayField from taiga.base.fields import TagsField @@ -36,8 +35,6 @@ from taiga.users.validators import RoleExistsValidator from taiga.permissions.service import get_user_project_permissions from taiga.permissions.service import is_project_owner -from taiga.projects.notifications import models as notify_models - from . import models from . import services from .notifications.mixins import WatchedResourceModelSerializer @@ -47,6 +44,7 @@ from .custom_attributes.serializers import TaskCustomAttributeSerializer from .custom_attributes.serializers import IssueCustomAttributeSerializer from .likes.mixins.serializers import FanResourceSerializerMixin + ###################################################### ## Custom values for selectors ###################################################### @@ -75,7 +73,6 @@ class PointsSerializer(serializers.ModelSerializer): class UserStoryStatusSerializer(serializers.ModelSerializer): - class Meta: model = models.UserStoryStatus i18n_fields = ("name",) @@ -101,7 +98,6 @@ class UserStoryStatusSerializer(serializers.ModelSerializer): class BasicUserStoryStatusSerializer(serializers.ModelSerializer): - class Meta: model = models.UserStoryStatus i18n_fields = ("name",) @@ -175,7 +171,6 @@ class IssueStatusSerializer(serializers.ModelSerializer): class BasicIssueStatusSerializer(serializers.ModelSerializer): - class Meta: model = models.IssueStatus i18n_fields = ("name",) @@ -300,7 +295,8 @@ class ProjectMemberSerializer(serializers.ModelSerializer): class Meta: model = models.Membership - exclude = ("project", "email", "created_at", "token", "invited_by", "invitation_extra_text", "user_order") + exclude = ("project", "email", "created_at", "token", "invited_by", "invitation_extra_text", + "user_order") def get_photo(self, membership): return get_photo_or_gravatar_url(membership.user) @@ -310,21 +306,27 @@ class ProjectMemberSerializer(serializers.ModelSerializer): ## Projects ###################################################### -class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializer, serializers.ModelSerializer): - tags = TagsField(default=[], required=False) +class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializer, + serializers.ModelSerializer): anon_permissions = PgArrayField(required=False) public_permissions = PgArrayField(required=False) my_permissions = serializers.SerializerMethodField("get_my_permissions") i_am_owner = serializers.SerializerMethodField("get_i_am_owner") + + tags = TagsField(default=[], required=False) tags_colors = TagsColorsField(required=False) + + notify_level = serializers.SerializerMethodField("get_notify_level") total_closed_milestones = serializers.SerializerMethodField("get_total_closed_milestones") - notify_level = serializers.SerializerMethodField("get_notify_level") total_watchers = serializers.SerializerMethodField("get_total_watchers") + logo_small_url = serializers.SerializerMethodField("get_logo_small_url") + logo_big_url = serializers.SerializerMethodField("get_logo_big_url") + class Meta: model = models.Project read_only_fields = ("created_date", "modified_date", "owner", "slug") - exclude = ("last_us_ref", "last_task_ref", "last_issue_ref", + exclude = ("logo", "last_us_ref", "last_task_ref", "last_issue_ref", "issues_csv_uuid", "tasks_csv_uuid", "userstories_csv_uuid") def get_my_permissions(self, obj): @@ -360,6 +362,12 @@ class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializ return obj.notify_policies.exclude(notify_level=NotifyLevel.none).count() + def get_logo_small_url(self, obj): + return services.get_logo_small_thumbnail_url(obj) + + def get_logo_big_url(self, obj): + return services.get_logo_big_thumbnail_url(obj) + class ProjectDetailSerializer(ProjectSerializer): us_statuses = UserStoryStatusSerializer(many=True, required=False) # User Stories @@ -395,7 +403,7 @@ class ProjectDetailAdminSerializer(ProjectDetailSerializer): class Meta: model = models.Project read_only_fields = ("created_date", "modified_date", "owner", "slug") - exclude = ("last_us_ref", "last_task_ref", "last_issue_ref") + exclude = ("logo", "last_us_ref", "last_task_ref", "last_issue_ref") ###################################################### diff --git a/taiga/projects/services/__init__.py b/taiga/projects/services/__init__.py index 4b0c2e98..d4940c37 100644 --- a/taiga/projects/services/__init__.py +++ b/taiga/projects/services/__init__.py @@ -29,17 +29,20 @@ from .bulk_update_order import bulk_update_userstory_status_order from .filters import get_all_tags -from .stats import get_stats_for_project_issues -from .stats import get_stats_for_project -from .stats import get_member_stats_for_project +from .invitations import send_invitation +from .invitations import find_invited_user + +from .logo import get_logo_small_thumbnail_url +from .logo import get_logo_big_thumbnail_url from .members import create_members_in_bulk from .members import get_members_from_bulk from .members import remove_user_from_project, project_has_valid_owners, can_user_leave_project -from .invitations import send_invitation -from .invitations import find_invited_user +from .modules_config import get_modules_config + +from .stats import get_stats_for_project_issues +from .stats import get_stats_for_project +from .stats import get_member_stats_for_project from .tags_colors import update_project_tags_colors_handler - -from .modules_config import get_modules_config diff --git a/taiga/projects/services/logo.py b/taiga/projects/services/logo.py new file mode 100644 index 00000000..c1f2bf7e --- /dev/null +++ b/taiga/projects/services/logo.py @@ -0,0 +1,29 @@ +# Copyright (C) 2014-2015 Taiga Agile LLC +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +from django.conf import settings + +from taiga.base.utils.thumbnails import get_thumbnail_url + + +def get_logo_small_thumbnail_url(project): + if project.logo: + return get_thumbnail_url(project.logo, settings.THN_LOGO_SMALL) + return None + + +def get_logo_big_thumbnail_url(project): + if project.logo: + return get_thumbnail_url(project.logo, settings.THN_LOGO_BIG) + return None diff --git a/taiga/projects/signals.py b/taiga/projects/signals.py index 0d330670..afae4b5a 100644 --- a/taiga/projects/signals.py +++ b/taiga/projects/signals.py @@ -22,6 +22,8 @@ from taiga.projects.services.tags_colors import update_project_tags_colors_handl from taiga.projects.notifications.services import create_notify_policy_if_not_exists from taiga.base.utils.db import get_typename_for_model_class +from easy_thumbnails.files import get_thumbnailer + #################################### # Signals over project items @@ -46,11 +48,15 @@ def membership_post_delete(sender, instance, using, **kwargs): instance.project.update_role_points() +## Notify policy + def create_notify_policy(sender, instance, using, **kwargs): if instance.user: create_notify_policy_if_not_exists(instance.project, instance.user) +## Project attributes + def project_post_save(sender, instance, created, **kwargs): """ Populate new project dependen default data @@ -82,6 +88,8 @@ def project_post_save(sender, instance, created, **kwargs): is_owner=True, email=instance.owner.email) +## US statuses + def try_to_close_or_open_user_stories_when_edit_us_status(sender, instance, created, **kwargs): from taiga.projects.userstories import services @@ -92,6 +100,8 @@ def try_to_close_or_open_user_stories_when_edit_us_status(sender, instance, crea services.open_userstory(user_story) +## Task statuses + def try_to_close_or_open_user_stories_when_edit_task_status(sender, instance, created, **kwargs): from taiga.projects.userstories import services diff --git a/taiga/users/api.py b/taiga/users/api.py index eae4a7f2..f5d59bd4 100644 --- a/taiga/users/api.py +++ b/taiga/users/api.py @@ -223,7 +223,6 @@ class UsersViewSet(ModelCrudViewSet): except Exception: raise exc.WrongArguments(_("Invalid image format")) - request.user.delete_photo() request.user.photo = avatar request.user.save(update_fields=["photo"]) user_data = self.admin_serializer_class(request.user).data @@ -236,7 +235,7 @@ class UsersViewSet(ModelCrudViewSet): Remove the avatar of current logged user. """ self.check_permissions(request, "remove_avatar", None) - request.user.delete_photo() + request.user.photo = None request.user.save(update_fields=["photo"]) user_data = self.admin_serializer_class(request.user).data return response.Ok(user_data) diff --git a/taiga/users/models.py b/taiga/users/models.py index 61552de8..52126691 100644 --- a/taiga/users/models.py +++ b/taiga/users/models.py @@ -241,22 +241,10 @@ class User(AbstractBaseUser, PermissionsMixin): self.colorize_tags = True self.token = None self.set_unusable_password() - self.delete_photo() + self.photo = None self.save() self.auth_data.all().delete() - def delete_photo(self): - # Removing thumbnails - thumbnailer = get_thumbnailer(self.photo) - thumbnailer.delete_thumbnails() - - # Removing original photo - if self.photo: - storage, path = self.photo.storage, self.photo.path - storage.delete(path) - - self.photo = None - class Role(models.Model): name = models.CharField(max_length=200, null=False, blank=False, diff --git a/taiga/users/services.py b/taiga/users/services.py index a592698c..86a56869 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -34,9 +34,9 @@ from taiga.base.utils.db import to_tsquery from taiga.base.utils.urls import get_absolute_url from taiga.projects.notifications.choices import NotifyLevel from taiga.projects.notifications.services import get_projects_watched + from .gravatar import get_gravatar_url -from django.conf import settings def get_user_by_username_or_email(username_or_email): @@ -55,7 +55,6 @@ def get_user_by_username_or_email(username_or_email): return user - def get_and_validate_user(*, username:str, password:str) -> bool: """ Check if user with username/email exists and specified @@ -75,7 +74,7 @@ def get_and_validate_user(*, username:str, password:str) -> bool: def get_photo_url(photo): """Get a photo absolute url and the photo automatically cropped.""" try: - url = get_thumbnailer(photo)['avatar'].url + url = get_thumbnailer(photo)[settings.THN_AVATAR_SMALL].url return get_absolute_url(url) except InvalidImageFormatError as e: return None @@ -91,7 +90,7 @@ def get_photo_or_gravatar_url(user): def get_big_photo_url(photo): """Get a big photo absolute url and the photo automatically cropped.""" try: - url = get_thumbnailer(photo)['big-avatar'].url + url = get_thumbnailer(photo)[settings.THN_AVATAR_BIG].url return get_absolute_url(url) except InvalidImageFormatError as e: return None @@ -105,13 +104,14 @@ def get_big_photo_or_gravatar_url(user): if user.photo: return get_big_photo_url(user.photo) else: - return get_gravatar_url(user.email, size=settings.DEFAULT_BIG_AVATAR_SIZE) + return get_gravatar_url(user.email, size=settings.THN_AVATAR_BIG_SIZE) def get_visible_project_ids(from_user, by_user): """Calculate the project_ids from one user visible by another""" required_permissions = ["view_project"] - #Or condition for membership filtering, the basic one is the access to projects allowing anonymous visualization + # Or condition for membership filtering, the basic one is the access to projects + # allowing anonymous visualization member_perm_conditions = Q(project__anon_permissions__contains=required_permissions) # Authenticated @@ -138,7 +138,8 @@ def get_stats_for_user(from_user, by_user): total_num_projects = len(project_ids) - roles = [_(r) for r in from_user.memberships.filter(project__id__in=project_ids).values_list("role__name", flat=True)] + roles = [_(r) for r in from_user.memberships.filter(project__id__in=project_ids).values_list( + "role__name", flat=True)] roles = list(set(roles)) User = apps.get_model('users', 'User') diff --git a/tests/integration/test_importer_api.py b/tests/integration/test_importer_api.py index 171dda31..360550fb 100644 --- a/tests/integration/test_importer_api.py +++ b/tests/integration/test_importer_api.py @@ -18,13 +18,10 @@ import pytest import base64 +from django.apps import apps from django.core.urlresolvers import reverse from django.core.files.base import ContentFile -from .. import factories as f - -from django.apps import apps - from taiga.base.utils import json from taiga.projects.models import Project, Membership from taiga.projects.issues.models import Issue @@ -32,6 +29,9 @@ from taiga.projects.userstories.models import UserStory from taiga.projects.tasks.models import Task from taiga.projects.wiki.models import WikiPage +from .. import factories as f +from ..utils import DUMMY_BMP_DATA + pytestmark = pytest.mark.django_db @@ -945,6 +945,36 @@ def test_invalid_dump_import(client): assert response_data["_error_message"] == "Invalid dump format" +def test_valid_dump_import_with_logo(client, settings): + settings.CELERY_ENABLED = False + + user = f.UserFactory.create() + client.login(user) + + url = reverse("importer-load-dump") + + data = ContentFile(bytes(json.dumps({ + "slug": "valid-project", + "name": "Valid project", + "description": "Valid project desc", + "logo": { + "name": "logo.bmp", + "data": base64.b64encode(DUMMY_BMP_DATA).decode("utf-8") + } + }), "utf-8")) + data.name = "test" + + response = client.post(url, {'dump': data}) + assert response.status_code == 201 + response_data = response.data + assert "id" in response_data + assert response_data["name"] == "Valid project" + assert "logo_small_url" in response_data + assert response_data["logo_small_url"] != None + assert "logo_big_url" in response_data + assert response_data["logo_big_url"] != None + + def test_valid_dump_import_with_celery_disabled(client, settings): settings.CELERY_ENABLED = False diff --git a/tests/integration/test_projects.py b/tests/integration/test_projects.py index 2a4f8e5c..99757620 100644 --- a/tests/integration/test_projects.py +++ b/tests/integration/test_projects.py @@ -1,4 +1,7 @@ from django.core.urlresolvers import reverse +from django.conf import settings +from django.core.files import File + from taiga.base.utils import json from taiga.projects.services import stats as stats_services from taiga.projects.history.services import take_snapshot @@ -6,8 +9,14 @@ from taiga.permissions.permissions import ANON_PERMISSIONS from taiga.projects.models import Project from .. import factories as f +from ..utils import DUMMY_BMP_DATA +from tempfile import NamedTemporaryFile +from easy_thumbnails.files import generate_all_aliases, get_thumbnailer + +import os.path import pytest + pytestmark = pytest.mark.django_db @@ -406,3 +415,80 @@ def test_projects_user_order(client): response_content = response.data assert response.status_code == 200 assert(response_content[0]["id"] == project_2.id) + + +@pytest.mark.django_db(transaction=True) +def test_update_project_logo(client): + user = f.UserFactory.create(is_superuser=True) + project = f.create_project() + url = reverse("projects-change-logo", args=(project.id,)) + + with NamedTemporaryFile(delete=False) as logo: + logo.write(DUMMY_BMP_DATA) + logo.seek(0) + project.logo = File(logo) + project.save() + generate_all_aliases(project.logo, include_global=True) + + thumbnailer = get_thumbnailer(project.logo) + original_photo_paths = [project.logo.path] + original_photo_paths += [th.path for th in thumbnailer.get_thumbnails()] + + assert all(list(map(os.path.exists, original_photo_paths))) + + with NamedTemporaryFile(delete=False) as logo: + logo.write(DUMMY_BMP_DATA) + logo.seek(0) + + client.login(user) + post_data = {'logo': logo} + response = client.post(url, post_data) + assert response.status_code == 200 + assert not any(list(map(os.path.exists, original_photo_paths))) + + +@pytest.mark.django_db(transaction=True) +def test_remove_project_logo(client): + user = f.UserFactory.create(is_superuser=True) + project = f.create_project() + url = reverse("projects-remove-logo", args=(project.id,)) + + with NamedTemporaryFile(delete=False) as logo: + logo.write(DUMMY_BMP_DATA) + logo.seek(0) + project.logo = File(logo) + project.save() + generate_all_aliases(project.logo, include_global=True) + + thumbnailer = get_thumbnailer(project.logo) + original_photo_paths = [project.logo.path] + original_photo_paths += [th.path for th in thumbnailer.get_thumbnails()] + + assert all(list(map(os.path.exists, original_photo_paths))) + client.login(user) + response = client.post(url) + assert response.status_code == 200 + assert not any(list(map(os.path.exists, original_photo_paths))) + +@pytest.mark.django_db(transaction=True) +def test_remove_project_with_logo(client): + user = f.UserFactory.create(is_superuser=True) + project = f.create_project() + url = reverse("projects-detail", args=(project.id,)) + + with NamedTemporaryFile(delete=False) as logo: + logo.write(DUMMY_BMP_DATA) + logo.seek(0) + project.logo = File(logo) + project.save() + generate_all_aliases(project.logo, include_global=True) + + thumbnailer = get_thumbnailer(project.logo) + original_photo_paths = [project.logo.path] + original_photo_paths += [th.path for th in thumbnailer.get_thumbnails()] + + assert all(list(map(os.path.exists, original_photo_paths))) + client.login(user) + response = client.delete(url) + assert response.status_code == 204 + assert not any(list(map(os.path.exists, original_photo_paths))) diff --git a/tests/integration/test_users.py b/tests/integration/test_users.py index e1e91d92..9fb87321 100644 --- a/tests/integration/test_users.py +++ b/tests/integration/test_users.py @@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse from django.core.files import File from .. import factories as f +from ..utils import DUMMY_BMP_DATA from taiga.base.utils import json from taiga.users import models @@ -172,35 +173,7 @@ def test_cancel_self_user_with_invalid_token(client): assert response.status_code == 400 -DUMMY_BMP_DATA = b'BM:\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00(\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x04\x00\x00\x00\x13\x0b\x00\x00\x13\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' - - -def test_change_avatar(client): - url = reverse('users-change-avatar') - - user = f.UserFactory() - client.login(user) - - with NamedTemporaryFile() as avatar: - # Test no avatar send - post_data = {} - response = client.post(url, post_data) - assert response.status_code == 400 - - # Test invalid file send - post_data = { - 'avatar': avatar - } - response = client.post(url, post_data) - assert response.status_code == 400 - - # Test empty valid avatar send - avatar.write(DUMMY_BMP_DATA) - avatar.seek(0) - response = client.post(url, post_data) - assert response.status_code == 200 - - +@pytest.mark.django_db(transaction=True) def test_change_avatar_removes_the_old_one(client): url = reverse('users-change-avatar') user = f.UserFactory() @@ -216,7 +189,7 @@ def test_change_avatar_removes_the_old_one(client): thumbnailer = get_thumbnailer(user.photo) original_photo_paths = [user.photo.path] original_photo_paths += [th.path for th in thumbnailer.get_thumbnails()] - assert list(map(os.path.exists, original_photo_paths)) == [True, True, True, True, True] + assert all(list(map(os.path.exists, original_photo_paths))) client.login(user) avatar.write(DUMMY_BMP_DATA) @@ -225,9 +198,10 @@ def test_change_avatar_removes_the_old_one(client): response = client.post(url, post_data) assert response.status_code == 200 - assert list(map(os.path.exists, original_photo_paths)) == [False, False, False, False, False] + assert not any(list(map(os.path.exists, original_photo_paths))) +@pytest.mark.django_db(transaction=True) def test_remove_avatar(client): url = reverse('users-remove-avatar') user = f.UserFactory() @@ -242,13 +216,13 @@ def test_remove_avatar(client): thumbnailer = get_thumbnailer(user.photo) original_photo_paths = [user.photo.path] original_photo_paths += [th.path for th in thumbnailer.get_thumbnails()] - assert list(map(os.path.exists, original_photo_paths)) == [True, True, True, True, True] + assert all(list(map(os.path.exists, original_photo_paths))) client.login(user) response = client.post(url) assert response.status_code == 200 - assert list(map(os.path.exists, original_photo_paths)) == [False, False, False, False, False] + assert not any(list(map(os.path.exists, original_photo_paths))) def test_list_contacts_private_projects(client): diff --git a/tests/utils.py b/tests/utils.py index f8a2aab1..f16e49fe 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -18,6 +18,8 @@ from django.db.models import signals +DUMMY_BMP_DATA = b'BM:\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00(\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x04\x00\x00\x00\x13\x0b\x00\x00\x13\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + def signals_switch(): pre_save = signals.pre_save.receivers From f61a811fd134b03e60eca9f11cbdfd4809bc53ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 2 Dec 2015 12:55:02 +0100 Subject: [PATCH 22/41] Task #3602: Order project list alphabetically by default --- taiga/projects/api.py | 13 ++++++----- .../migrations/0032_auto_20151202_1151.py | 22 +++++++++++++++++++ taiga/projects/models.py | 6 ++++- tests/integration/test_projects.py | 17 ++++++++++++++ 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 taiga/projects/migrations/0032_auto_20151202_1151.py diff --git a/taiga/projects/api.py b/taiga/projects/api.py index fbeefb7e..2e344680 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -69,12 +69,13 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) permission_classes = (permissions.ProjectPermission, ) filter_backends = (filters.CanViewProjectObjFilterBackend,) - filter_fields = (('member', 'members'), - 'is_looking_for_people', - 'is_featured', - 'is_backlog_activated', - 'is_kanban_activated') + filter_fields = (("member", "members"), + "is_looking_for_people", + "is_featured", + "is_backlog_activated", + "is_kanban_activated") + ordering = ("name", "id") order_by_fields = ("memberships__user_order", "total_fans", "total_fans_last_week", @@ -94,7 +95,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) def get_queryset(self): qs = super().get_queryset() - # Prefetch doesn't work correctly if then if the field is filtered later (it generates more queries) + # Prefetch doesn"t work correctly if then if the field is filtered later (it generates more queries) # so we add some custom prefetching qs = qs.prefetch_related("members") qs = qs.prefetch_related(Prefetch("notify_policies", diff --git a/taiga/projects/migrations/0032_auto_20151202_1151.py b/taiga/projects/migrations/0032_auto_20151202_1151.py new file mode 100644 index 00000000..62fbb6cf --- /dev/null +++ b/taiga/projects/migrations/0032_auto_20151202_1151.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0031_project_logo'), + ] + + operations = [ + migrations.AlterModelOptions( + name='project', + options={'permissions': (('view_project', 'Can view project'),), 'ordering': ['name', 'id'], 'verbose_name': 'project', 'verbose_name_plural': 'projects'}, + ), + migrations.AlterIndexTogether( + name='project', + index_together=set([('name', 'id')]), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index 592224b2..f3367b78 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -266,7 +266,11 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): class Meta: verbose_name = "project" verbose_name_plural = "projects" - ordering = ["name"] + ordering = ["name", "id"] + index_together = [ + ["name", "id"], + ] + permissions = ( ("view_project", "Can view project"), ) diff --git a/tests/integration/test_projects.py b/tests/integration/test_projects.py index 99757620..011b4856 100644 --- a/tests/integration/test_projects.py +++ b/tests/integration/test_projects.py @@ -492,3 +492,20 @@ def test_remove_project_with_logo(client): response = client.delete(url) assert response.status_code == 204 assert not any(list(map(os.path.exists, original_photo_paths))) + + +def test_project_list_without_search_query_order_by_name(client): + user = f.UserFactory.create(is_superuser=True) + project3 = f.create_project(name="test 3 - word", description="description 3", tags=["tag3"]) + project1 = f.create_project(name="test 1", description="description 1 - word", tags=["tag1"]) + project2 = f.create_project(name="test 2", description="description 2", tags=["word", "tag2"]) + + url = reverse("projects-list") + + client.login(user) + response = client.json.get(url) + + assert response.status_code == 200 + assert response.data[0]["id"] == project1.id + assert response.data[1]["id"] == project2.id + assert response.data[2]["id"] == project3.id From ab56f1a772d94daf270b279110ff3b4ef3d061a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 2 Dec 2015 22:41:05 +0100 Subject: [PATCH 23/41] Task #3526: Filter projects by text query (order by ranking name > tags > description --- taiga/base/filters.py | 70 ++++-------- taiga/projects/api.py | 11 +- taiga/projects/filters.py | 101 ++++++++++++++++++ .../migrations/0033_text_search_indexes.py | 50 +++++++++ tests/integration/test_projects.py | 20 ++++ 5 files changed, 195 insertions(+), 57 deletions(-) create mode 100644 taiga/projects/filters.py create mode 100644 taiga/projects/migrations/0033_text_search_indexes.py diff --git a/taiga/base/filters.py b/taiga/base/filters.py index a3cd516e..62b4dc20 100644 --- a/taiga/base/filters.py +++ b/taiga/base/filters.py @@ -33,7 +33,6 @@ logger = logging.getLogger(__name__) # Base and Mixins ##################################################################### - class BaseFilterBackend(object): """ A base class from which all filter backend classes should inherit. @@ -182,6 +181,10 @@ class CanViewMilestonesFilterBackend(PermissionBasedFilterBackend): permission = "view_milestones" +##################################################################### +# Attachments filters +##################################################################### + class PermissionBasedAttachmentFilterBackend(PermissionBasedFilterBackend): permission = None @@ -208,52 +211,9 @@ class CanViewWikiAttachmentFilterBackend(PermissionBasedAttachmentFilterBackend) permission = "view_wiki_pages" -class CanViewProjectObjFilterBackend(FilterBackend): - def filter_queryset(self, request, queryset, view): - project_id = None - if (hasattr(view, "filter_fields") and "project" in view.filter_fields and - "project" in request.QUERY_PARAMS): - try: - project_id = int(request.QUERY_PARAMS["project"]) - except: - logger.error("Filtering project diferent value than an integer: {}".format( - request.QUERY_PARAMS["project"] - )) - raise exc.BadRequest(_("'project' must be an integer value.")) - - qs = queryset - - if request.user.is_authenticated() and request.user.is_superuser: - qs = qs - elif request.user.is_authenticated(): - membership_model = apps.get_model("projects", "Membership") - memberships_qs = membership_model.objects.filter(user=request.user) - if project_id: - memberships_qs = memberships_qs.filter(project_id=project_id) - memberships_qs = memberships_qs.filter(Q(role__permissions__contains=['view_project']) | - Q(is_owner=True)) - - projects_list = [membership.project_id for membership in memberships_qs] - - qs = qs.filter((Q(id__in=projects_list) | - Q(public_permissions__contains=["view_project"]))) - else: - qs = qs.filter(anon_permissions__contains=["view_project"]) - - return super().filter_queryset(request, qs.distinct(), view) - - -class IsProjectMemberFilterBackend(FilterBackend): - def filter_queryset(self, request, queryset, view): - if request.user.is_authenticated() and request.user.is_superuser: - queryset = queryset - elif request.user.is_authenticated(): - queryset = queryset.filter(project__members=request.user) - else: - queryset = queryset.none() - - return super().filter_queryset(request, queryset.distinct(), view) - +##################################################################### +# User filters +##################################################################### class MembersFilterBackend(PermissionBasedFilterBackend): permission = "view_project" @@ -309,6 +269,10 @@ class MembersFilterBackend(PermissionBasedFilterBackend): return qs.distinct() +##################################################################### +# Webhooks filters +##################################################################### + class BaseIsProjectAdminFilterBackend(object): def get_project_ids(self, request, view): project_id = None @@ -358,7 +322,7 @@ class IsProjectAdminFromWebhookLogFilterBackend(FilterBackend, BaseIsProjectAdmi ##################################################################### -# Generic Attributes filters +# Generic Attributes filters (for User Stories, Tasks and Issues) ##################################################################### class BaseRelatedFieldsFilter(FilterBackend): @@ -451,7 +415,6 @@ class TagsFilter(FilterBackend): return super().filter_queryset(request, queryset, view) - class WatchersFilter(FilterBackend): filter_name = 'watchers' @@ -487,9 +450,12 @@ class QFilter(FilterBackend): q = request.QUERY_PARAMS.get('q', None) if q: table = queryset.model._meta.db_table - where_clause = ("to_tsvector('english_nostop', coalesce({table}.subject, '') || ' ' || " - "coalesce({table}.ref) || ' ' || " - "coalesce({table}.description, '')) @@ to_tsquery('english_nostop', %s)".format(table=table)) + where_clause = (""" + to_tsvector('english_nostop', + coalesce({table}.subject, '') || ' ' || + coalesce({table}.ref) || ' ' || + coalesce({table}.description, '')) @@ to_tsquery('english_nostop', %s) + """.format(table=table)) queryset = queryset.extra(where=[where_clause], params=[to_tsquery(q)]) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index 2e344680..f48b3835 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -16,8 +16,8 @@ # along with this program. If not, see . import uuid - from easy_thumbnails.source_generators import pil_image +from dateutil.relativedelta import relativedelta from django.apps import apps from django.db.models import signals, Prefetch @@ -51,12 +51,12 @@ from taiga.projects.issues.models import Issue from taiga.projects.likes.mixins.viewsets import LikedResourceMixin, FansViewSetMixin from taiga.permissions import service as permissions_service -from . import serializers +from . import filters as project_filters from . import models from . import permissions +from . import serializers from . import services -from dateutil.relativedelta import relativedelta ###################################################### ## Project @@ -67,7 +67,8 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) admin_serializer_class = serializers.ProjectDetailAdminSerializer list_serializer_class = serializers.ProjectSerializer permission_classes = (permissions.ProjectPermission, ) - filter_backends = (filters.CanViewProjectObjFilterBackend,) + filter_backends = (project_filters.QFilter, + project_filters.CanViewProjectObjFilterBackend) filter_fields = (("member", "members"), "is_looking_for_people", @@ -87,7 +88,7 @@ class ProjectViewSet(LikedResourceMixin, HistoryResourceMixin, ModelCrudViewSet) "total_activity_last_year") def _get_order_by_field_name(self): - order_by_query_param = filters.CanViewProjectObjFilterBackend.order_by_query_param + order_by_query_param = project_filters.CanViewProjectObjFilterBackend.order_by_query_param order_by = self.request.QUERY_PARAMS.get(order_by_query_param, None) if order_by is not None and order_by.startswith("-"): return order_by[1:] diff --git a/taiga/projects/filters.py b/taiga/projects/filters.py new file mode 100644 index 00000000..7d56ba95 --- /dev/null +++ b/taiga/projects/filters.py @@ -0,0 +1,101 @@ +# Copyright (C) 2014-2015 Andrey Antukh +# Copyright (C) 2014-2015 Jesús Espino +# Copyright (C) 2014-2015 David Barragán +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +import logging + +from django.apps import apps +from django.db.models import Q +from django.utils.translation import ugettext as _ + +from taiga.base import exceptions as exc +from taiga.base.filters import FilterBackend +from taiga.base.utils.db import to_tsquery + +logger = logging.getLogger(__name__) + + +class CanViewProjectObjFilterBackend(FilterBackend): + def filter_queryset(self, request, queryset, view): + project_id = None + + # Filter by filter_fields + if (hasattr(view, "filter_fields") and "project" in view.filter_fields and + "project" in request.QUERY_PARAMS): + try: + project_id = int(request.QUERY_PARAMS["project"]) + except: + logger.error("Filtering project diferent value than an integer: {}".format( + request.QUERY_PARAMS["project"] + )) + raise exc.BadRequest(_("'project' must be an integer value.")) + + qs = queryset + + # Filter by user permissions + if request.user.is_authenticated() and request.user.is_superuser: + # superuser + qs = qs + elif request.user.is_authenticated(): + # projet members + membership_model = apps.get_model("projects", "Membership") + memberships_qs = membership_model.objects.filter(user=request.user) + if project_id: + memberships_qs = memberships_qs.filter(project_id=project_id) + memberships_qs = memberships_qs.filter(Q(role__permissions__contains=['view_project']) | + Q(is_owner=True)) + + projects_list = [membership.project_id for membership in memberships_qs] + + qs = qs.filter((Q(id__in=projects_list) | + Q(public_permissions__contains=["view_project"]))) + else: + # external users / anonymous + qs = qs.filter(anon_permissions__contains=["view_project"]) + + return super().filter_queryset(request, qs.distinct(), view) + + +class QFilter(FilterBackend): + def filter_queryset(self, request, queryset, view): + # NOTE: See migtration 0033_text_search_indexes + q = request.QUERY_PARAMS.get('q', None) + if q: + tsquery = "to_tsquery('english_nostop', %s)" + tsquery_params = [to_tsquery(q)] + tsvector = """ + setweight(to_tsvector('english_nostop', + coalesce(projects_project.name, '')), 'A') || + setweight(to_tsvector('english_nostop', + coalesce(inmutable_array_to_string(projects_project.tags), '')), 'B') || + setweight(to_tsvector('english_nostop', + coalesce(projects_project.description, '')), 'C') + """ + + select = { + "rank": "ts_rank({tsvector},{tsquery})".format(tsquery=tsquery, + tsvector=tsvector), + } + select_params = tsquery_params + where = ["{tsvector} @@ {tsquery}".format(tsquery=tsquery, + tsvector=tsvector),] + params = tsquery_params + order_by = ["-rank", ] + + queryset = queryset.extra(select=select, + select_params=select_params, + where=where, + params=params, + order_by=order_by) + return queryset diff --git a/taiga/projects/migrations/0033_text_search_indexes.py b/taiga/projects/migrations/0033_text_search_indexes.py new file mode 100644 index 00000000..df97a50d --- /dev/null +++ b/taiga/projects/migrations/0033_text_search_indexes.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations + + +DROP_INMUTABLE_ARRAY_TO_STRING_FUNCTION = """ + DROP FUNCTION IF EXISTS inmutable_array_to_string(text[]) CASCADE +""" + + +# NOTE: This function is needed by taiga.projects.filters.QFilter +CREATE_INMUTABLE_ARRAY_TO_STRING_FUNCTION = """ + CREATE OR REPLACE FUNCTION inmutable_array_to_string(text[]) + RETURNS text + LANGUAGE sql + IMMUTABLE AS $$SELECT array_to_string($1, ' ', '')$$ +""" + + +DROP_INDEX = """ + DROP INDEX IF EXISTS projects_project_textquery_idx; +""" + + +# NOTE: This index is needed by taiga.projects.filters.QFilter +CREATE_INDEX = """ + CREATE INDEX projects_project_textquery_idx + ON projects_project + USING gin((setweight(to_tsvector('english_nostop', + coalesce(projects_project.name, '')), 'A') || + setweight(to_tsvector('english_nostop', + coalesce(inmutable_array_to_string(projects_project.tags), '')), 'B') || + setweight(to_tsvector('english_nostop', + coalesce(projects_project.description, '')), 'C'))); +""" + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0032_auto_20151202_1151'), + ] + + operations = [ + migrations.RunSQL([DROP_INMUTABLE_ARRAY_TO_STRING_FUNCTION, CREATE_INMUTABLE_ARRAY_TO_STRING_FUNCTION], + [DROP_INMUTABLE_ARRAY_TO_STRING_FUNCTION]), + migrations.RunSQL([DROP_INDEX, CREATE_INDEX], + [DROP_INDEX]), + ] diff --git a/tests/integration/test_projects.py b/tests/integration/test_projects.py index 011b4856..5349218c 100644 --- a/tests/integration/test_projects.py +++ b/tests/integration/test_projects.py @@ -509,3 +509,23 @@ def test_project_list_without_search_query_order_by_name(client): assert response.data[0]["id"] == project1.id assert response.data[1]["id"] == project2.id assert response.data[2]["id"] == project3.id + + +def test_project_list_with_search_query_order_by_ranking(client): + user = f.UserFactory.create(is_superuser=True) + project3 = f.create_project(name="test 3 - word", description="description 3", tags=["tag3"]) + project1 = f.create_project(name="test 1", description="description 1 - word", tags=["tag1"]) + project2 = f.create_project(name="test 2", description="description 2", tags=["word", "tag2"]) + project4 = f.create_project(name="test 4", description="description 4", tags=["tag4"]) + project5 = f.create_project(name="test 5", description="description 5", tags=["tag5"]) + + url = reverse("projects-list") + + client.login(user) + response = client.json.get(url, {"q": "word"}) + + assert response.status_code == 200 + assert len(response.data) == 3 + assert response.data[0]["id"] == project3.id + assert response.data[1]["id"] == project2.id + assert response.data[2]["id"] == project1.id From c280898642b473a98303a5d8ce946de86e2e78f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Mon, 7 Dec 2015 19:09:59 +0100 Subject: [PATCH 24/41] Task #3623: Add looking_for_people_note field --- .../management/commands/sample_data.py | 1 + .../0034_project_looking_for_people_note.py | 19 +++++++++++++++++++ taiga/projects/models.py | 5 +++++ 3 files changed, 25 insertions(+) create mode 100644 taiga/projects/migrations/0034_project_looking_for_people_note.py diff --git a/taiga/projects/management/commands/sample_data.py b/taiga/projects/management/commands/sample_data.py index afd990ec..4af2c699 100644 --- a/taiga/projects/management/commands/sample_data.py +++ b/taiga/projects/management/commands/sample_data.py @@ -464,6 +464,7 @@ class Command(BaseCommand): total_milestones=self.sd.int(5,10), tags=self.sd.words(1, 10).split(" "), is_looking_for_people=counter in LOOKING_FOR_PEOPLE_PROJECTS_POSITIONS, + looking_for_people_note=self.sd.short_sentence(), is_featured=counter in FEATURED_PROJECTS_POSITIONS) project.is_kanban_activated = True diff --git a/taiga/projects/migrations/0034_project_looking_for_people_note.py b/taiga/projects/migrations/0034_project_looking_for_people_note.py new file mode 100644 index 00000000..b455a7b0 --- /dev/null +++ b/taiga/projects/migrations/0034_project_looking_for_people_note.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0033_text_search_indexes'), + ] + + operations = [ + migrations.AddField( + model_name='project', + name='looking_for_people_note', + field=models.TextField(blank=True, verbose_name='loking for people note', default=''), + ), + ] diff --git a/taiga/projects/models.py b/taiga/projects/models.py index f3367b78..89f8b5f9 100644 --- a/taiga/projects/models.py +++ b/taiga/projects/models.py @@ -219,6 +219,8 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): is_looking_for_people = models.BooleanField(default=False, null=False, blank=True, verbose_name=_("is looking for people")) + looking_for_people_note = models.TextField(default="", null=False, blank=True, + verbose_name=_("loking for people note")) userstories_csv_uuid = models.CharField(max_length=32, editable=False, null=True, blank=True, @@ -298,6 +300,9 @@ class Project(ProjectDefaults, TaggedMixin, models.Model): if not self.videoconferences: self.videoconferences_extra_data = None + if not self.is_looking_for_people: + self.looking_for_people_note = "" + super().save(*args, **kwargs) def refresh_totals(self, save=True): From 3d3e8f2d491045516b496a3f5d5fb5e5ffa1674f Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 8 Jan 2016 09:57:59 +0100 Subject: [PATCH 25/41] Adding logo_small_url to user likes and watches APIs --- taiga/users/serializers.py | 9 +++++++++ taiga/users/services.py | 6 +++--- tests/factories.py | 4 ++++ tests/integration/test_users.py | 8 +++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/taiga/users/serializers.py b/taiga/users/serializers.py index 526f98f1..5b381252 100644 --- a/taiga/users/serializers.py +++ b/taiga/users/serializers.py @@ -15,12 +15,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from django.conf import settings from django.core import validators from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ from taiga.base.api import serializers from taiga.base.fields import PgArrayField, TagsField +from taiga.base.utils.thumbnails import get_thumbnail_url from taiga.projects.models import Project from .models import User, Role @@ -174,6 +176,7 @@ class HighLightedContentSerializer(serializers.Serializer): tags_colors = serializers.SerializerMethodField("get_tags_color") created_date = serializers.DateTimeField() is_private = serializers.SerializerMethodField("get_is_private") + logo_small_url = serializers.SerializerMethodField("get_logo_small_url") project = serializers.SerializerMethodField("get_project") project_name = serializers.SerializerMethodField("get_project_name") @@ -226,6 +229,12 @@ class HighLightedContentSerializer(serializers.Serializer): def get_project_is_private(self, obj): return self._none_if_project(obj, "project_is_private") + def get_logo_small_url(self, obj): + logo = self._none_if_not_project(obj, "logo") + if logo: + return get_thumbnail_url(logo, settings.THN_LOGO_SMALL) + return None + def get_photo(self, obj): type = obj.get("type", "") if type == "project": diff --git a/taiga/users/services.py b/taiga/users/services.py index 86a56869..55c82ca1 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -322,7 +322,7 @@ def get_watched_list(for_user, from_user, type=None, q=None): -- BEGIN Basic info: we need to mix info from different tables and denormalize it SELECT entities.*, projects_project.name as project_name, projects_project.description as description, projects_project.slug as project_slug, projects_project.is_private as project_is_private, - projects_project.tags_colors, + projects_project.tags_colors, projects_project.logo, users_user.username assigned_to_username, users_user.full_name assigned_to_full_name, users_user.photo assigned_to_photo, users_user.email assigned_to_email FROM ( {userstories_sql} @@ -417,7 +417,7 @@ def get_liked_list(for_user, from_user, type=None, q=None): -- BEGIN Basic info: we need to mix info from different tables and denormalize it SELECT entities.*, projects_project.name as project_name, projects_project.description as description, projects_project.slug as project_slug, projects_project.is_private as project_is_private, - projects_project.tags_colors, + projects_project.tags_colors, projects_project.logo, users_user.username assigned_to_username, users_user.full_name assigned_to_full_name, users_user.photo assigned_to_photo, users_user.email assigned_to_email FROM ( {projects_sql} @@ -500,7 +500,7 @@ def get_voted_list(for_user, from_user, type=None, q=None): -- BEGIN Basic info: we need to mix info from different tables and denormalize it SELECT entities.*, projects_project.name as project_name, projects_project.description as description, projects_project.slug as project_slug, projects_project.is_private as project_is_private, - projects_project.tags_colors, + projects_project.tags_colors, projects_project.logo, users_user.username assigned_to_username, users_user.full_name assigned_to_full_name, users_user.photo assigned_to_photo, users_user.email assigned_to_email FROM ( {userstories_sql} diff --git a/tests/factories.py b/tests/factories.py index 41f8c3a2..d5d6d06b 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -22,6 +22,8 @@ from datetime import date, timedelta from django.conf import settings +from .utils import DUMMY_BMP_DATA + import factory @@ -69,6 +71,8 @@ class ProjectFactory(Factory): name = factory.Sequence(lambda n: "Project {}".format(n)) slug = factory.Sequence(lambda n: "project-{}-slug".format(n)) + logo = factory.django.FileField(data=DUMMY_BMP_DATA) + description = "Project description" owner = factory.SubFactory("tests.factories.UserFactory") creation_template = factory.SubFactory("tests.factories.ProjectTemplateFactory") diff --git a/tests/integration/test_users.py b/tests/integration/test_users.py index 9fb87321..2f4f2c95 100644 --- a/tests/integration/test_users.py +++ b/tests/integration/test_users.py @@ -1,6 +1,7 @@ import pytest from tempfile import NamedTemporaryFile +from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.urlresolvers import reverse from django.core.files import File @@ -9,6 +10,7 @@ from .. import factories as f from ..utils import DUMMY_BMP_DATA from taiga.base.utils import json +from taiga.base.utils.thumbnails import get_thumbnail_url from taiga.users import models from taiga.users.serializers import LikedObjectSerializer, VotedObjectSerializer from taiga.auth.tokens import get_token_for_user @@ -432,6 +434,7 @@ def test_get_watched_list_valid_info_for_project(): assert "tag" in tags_colors assert project_watch_info["is_private"] == project.is_private + assert project_watch_info["logo_small_url"] == get_thumbnail_url(project.logo, settings.THN_LOGO_SMALL) assert project_watch_info["is_fan"] == False assert project_watch_info["is_watcher"] == False assert project_watch_info["total_watchers"] == 1 @@ -469,7 +472,7 @@ def test_get_liked_list_valid_info(): content_type = ContentType.objects.get_for_model(project) like = f.LikeFactory(content_type=content_type, object_id=project.id, user=fan_user) project.refresh_totals() - + raw_project_like_info = get_liked_list(fan_user, viewer_user)[0] project_like_info = LikedObjectSerializer(raw_project_like_info).data @@ -489,6 +492,7 @@ def test_get_liked_list_valid_info(): assert "tag" in tags_colors assert project_like_info["is_private"] == project.is_private + assert project_like_info["logo_small_url"] == get_thumbnail_url(project.logo, settings.THN_LOGO_SMALL) assert project_like_info["is_fan"] == False assert project_like_info["is_watcher"] == False @@ -542,6 +546,7 @@ def test_get_watched_list_valid_info_for_not_project_types(): assert "test2" in tags_colors assert instance_watch_info["is_private"] == None + assert instance_watch_info["logo_small_url"] == None assert instance_watch_info["is_voter"] == False assert instance_watch_info["is_watcher"] == False assert instance_watch_info["total_watchers"] == 1 @@ -597,6 +602,7 @@ def test_get_voted_list_valid_info(): assert "test2" in tags_colors assert instance_vote_info["is_private"] == None + assert instance_vote_info["logo_small_url"] == None assert instance_vote_info["is_voter"] == False assert instance_vote_info["is_watcher"] == False assert instance_vote_info["total_watchers"] == 0 From 19bbe1c5120bade2a88fb3c25667a44d9e1fbcf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 8 Jan 2016 12:31:59 +0100 Subject: [PATCH 26/41] Task #3716: [/api/v1/stats/discover] Show stats for discover secction --- taiga/stats/api.py | 33 ++++++++++++++++++++++++--------- taiga/stats/apps.py | 6 ++---- taiga/stats/permissions.py | 4 ++++ taiga/stats/routers.py | 9 ++++++++- taiga/stats/services.py | 33 +++++++++++++++++++++++++++------ 5 files changed, 65 insertions(+), 20 deletions(-) diff --git a/taiga/stats/api.py b/taiga/stats/api.py index 0afefeb8..301b056e 100644 --- a/taiga/stats/api.py +++ b/taiga/stats/api.py @@ -17,25 +17,40 @@ from collections import OrderedDict from django.conf import settings from django.views.decorators.cache import cache_page -from taiga.base.api import viewsets from taiga.base import response +from taiga.base.api import viewsets from . import permissions from . import services -class SystemStatsViewSet(viewsets.ViewSet): +CACHE_TIMEOUT = getattr(settings, "STATS_CACHE_TIMEOUT", 0) + + +class BaseStatsViewSet(viewsets.ViewSet): + @property + def _cache_timeout(self): + return CACHE_TIMEOUT + + def dispatch(self, *args, **kwargs): + return cache_page(self._cache_timeout)(super().dispatch)(*args, **kwargs) + + +class SystemStatsViewSet(BaseStatsViewSet): permission_classes = (permissions.SystemStatsPermission,) def list(self, request, **kwargs): stats = OrderedDict() - stats["users"] = services.get_users_stats() - stats["projects"] = services.get_projects_stats() - stats["userstories"] = services.get_user_stories_stats() + stats["users"] = services.get_users_public_stats() + stats["projects"] = services.get_projects_public_stats() + stats["userstories"] = services.get_user_stories_public_stats() return response.Ok(stats) - def _get_cache_timeout(self): - return getattr(settings, "STATS_CACHE_TIMEOUT", 0) - def dispatch(self, *args, **kwargs): - return cache_page(self._get_cache_timeout())(super().dispatch)(*args, **kwargs) +class DiscoverStatsViewSet(BaseStatsViewSet): + permission_classes = (permissions.DiscoverStatsPermission,) + + def list(self, request, **kwargs): + stats = OrderedDict() + stats["projects"] = services.get_projects_discover_stats(user=request.user) + return response.Ok(stats) diff --git a/taiga/stats/apps.py b/taiga/stats/apps.py index 4adcc38a..edb0e90e 100644 --- a/taiga/stats/apps.py +++ b/taiga/stats/apps.py @@ -14,7 +14,6 @@ from django.apps import AppConfig from django.apps import apps -from django.conf import settings from django.conf.urls import include, url from .routers import router @@ -25,6 +24,5 @@ class StatsAppConfig(AppConfig): verbose_name = "Stats" def ready(self): - if settings.STATS_ENABLED: - from taiga.urls import urlpatterns - urlpatterns.append(url(r'^api/v1/', include(router.urls))) + from taiga.urls import urlpatterns + urlpatterns.append(url(r'^api/v1/', include(router.urls))) diff --git a/taiga/stats/permissions.py b/taiga/stats/permissions.py index db48b945..369a7000 100644 --- a/taiga/stats/permissions.py +++ b/taiga/stats/permissions.py @@ -18,3 +18,7 @@ from taiga.base.api import permissions class SystemStatsPermission(permissions.TaigaResourcePermission): global_perms = permissions.AllowAny() + + +class DiscoverStatsPermission(permissions.TaigaResourcePermission): + global_perms = permissions.AllowAny() diff --git a/taiga/stats/routers.py b/taiga/stats/routers.py index e082567f..6dbb4e09 100644 --- a/taiga/stats/routers.py +++ b/taiga/stats/routers.py @@ -12,9 +12,16 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from django.conf import settings + from taiga.base import routers + from . import api router = routers.DefaultRouter(trailing_slash=False) -router.register(r"stats/system", api.SystemStatsViewSet, base_name="system-stats") + +if settings.STATS_ENABLED: + router.register(r"stats/system", api.SystemStatsViewSet, base_name="system-stats") + +router.register(r"stats/discover", api.DiscoverStatsViewSet, base_name="discover-stats") diff --git a/taiga/stats/services.py b/taiga/stats/services.py index 9d196094..26934be3 100644 --- a/taiga/stats/services.py +++ b/taiga/stats/services.py @@ -22,9 +22,13 @@ from datetime import timedelta from collections import OrderedDict -def get_users_stats(): +########################################################################### +# Public Stats +########################################################################### + +def get_users_public_stats(): model = apps.get_model("users", "User") - queryset = model.objects.filter(is_active=True, is_system=False) + queryset = model.objects.filter(is_active=True, is_system=False) stats = OrderedDict() today = timezone.now() @@ -71,9 +75,9 @@ def get_users_stats(): return stats -def get_projects_stats(): +def get_projects_public_stats(): model = apps.get_model("projects", "Project") - queryset = model.objects.all() + queryset = model.objects.all() stats = OrderedDict() today = timezone.now() @@ -109,9 +113,9 @@ def get_projects_stats(): return stats -def get_user_stories_stats(): +def get_user_stories_public_stats(): model = apps.get_model("userstories", "UserStory") - queryset = model.objects.all() + queryset = model.objects.all() stats = OrderedDict() today = timezone.now() @@ -130,3 +134,20 @@ def get_user_stories_stats(): .count()) / 5 return stats + +########################################################################### +# Discover Stats +########################################################################### + +def get_projects_discover_stats(user=None): + model = apps.get_model("projects", "Project") + queryset = model.objects.all() + stats = OrderedDict() + + # Get Public (visible) projects + queryset = queryset.filter(Q(is_private=False) | + Q(is_private=True, anon_permissions__contains=["view_project"])) + + stats["total"] = queryset.count() + + return stats From 2a970c02052494a747a3c40b391444eba4145fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 8 Jan 2016 16:17:02 +0100 Subject: [PATCH 27/41] Fix some license messages --- taiga/base/signals/thumbnails.py | 7 ++++--- taiga/base/utils/thumbnails.py | 7 ++++--- taiga/locale/ca/LC_MESSAGES/django.po | 2 +- taiga/locale/de/LC_MESSAGES/django.po | 2 +- taiga/locale/en/LC_MESSAGES/django.po | 2 +- taiga/locale/es/LC_MESSAGES/django.po | 2 +- taiga/locale/fi/LC_MESSAGES/django.po | 2 +- taiga/locale/fr/LC_MESSAGES/django.po | 2 +- taiga/locale/it/LC_MESSAGES/django.po | 2 +- taiga/locale/nl/LC_MESSAGES/django.po | 2 +- taiga/locale/pl/LC_MESSAGES/django.po | 2 +- taiga/locale/pt_BR/LC_MESSAGES/django.po | 2 +- taiga/locale/ru/LC_MESSAGES/django.po | 2 +- taiga/locale/zh-Hant/LC_MESSAGES/django.po | 2 +- taiga/projects/filters.py | 7 ++++--- taiga/projects/services/logo.py | 6 +++++- tests/integration/test_fan_projects.py | 8 ++++---- tests/integration/test_totals_projects.py | 12 +++++++----- 18 files changed, 40 insertions(+), 31 deletions(-) diff --git a/taiga/base/signals/thumbnails.py b/taiga/base/signals/thumbnails.py index 334bf970..5709a59b 100644 --- a/taiga/base/signals/thumbnails.py +++ b/taiga/base/signals/thumbnails.py @@ -1,6 +1,7 @@ -# Copyright (C) 2014-2015 Andrey Antukh -# Copyright (C) 2014-2015 Jesús Espino -# Copyright (C) 2014-2015 David Barragán +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/base/utils/thumbnails.py b/taiga/base/utils/thumbnails.py index ce8697ba..2c2ffca0 100644 --- a/taiga/base/utils/thumbnails.py +++ b/taiga/base/utils/thumbnails.py @@ -1,6 +1,7 @@ -# Copyright (C) 2014-2015 Andrey Antukh -# Copyright (C) 2014-2015 Jesús Espino -# Copyright (C) 2014-2015 David Barragán +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index 4231447c..50cfa640 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po index e50e4743..e77d54eb 100644 --- a/taiga/locale/de/LC_MESSAGES/django.po +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index b6d0fae0..6bad9f9b 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # FIRST AUTHOR , YEAR. # diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index 45427d54..d18ccbe3 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index 3c5e2065..d5b2f5b6 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 71c9fa5a..2b6d0801 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index 56959497..cfdfae17 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po index b3c24261..26e4d934 100644 --- a/taiga/locale/nl/LC_MESSAGES/django.po +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/pl/LC_MESSAGES/django.po b/taiga/locale/pl/LC_MESSAGES/django.po index d2e1e8f9..d8666cfe 100644 --- a/taiga/locale/pl/LC_MESSAGES/django.po +++ b/taiga/locale/pl/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/pt_BR/LC_MESSAGES/django.po b/taiga/locale/pt_BR/LC_MESSAGES/django.po index e3fca96d..23593f0a 100644 --- a/taiga/locale/pt_BR/LC_MESSAGES/django.po +++ b/taiga/locale/pt_BR/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/ru/LC_MESSAGES/django.po b/taiga/locale/ru/LC_MESSAGES/django.po index b3c236d1..909191fb 100644 --- a/taiga/locale/ru/LC_MESSAGES/django.po +++ b/taiga/locale/ru/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index 8263e82c..56f4b91e 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -1,5 +1,5 @@ # taiga-back.taiga. -# Copyright (C) 2014-2015 Taiga Dev Team +# Copyright (C) 2014-2016 Taiga Dev Team # This file is distributed under the same license as the taiga-back package. # # Translators: diff --git a/taiga/projects/filters.py b/taiga/projects/filters.py index 7d56ba95..dbc5b557 100644 --- a/taiga/projects/filters.py +++ b/taiga/projects/filters.py @@ -1,6 +1,7 @@ -# Copyright (C) 2014-2015 Andrey Antukh -# Copyright (C) 2014-2015 Jesús Espino -# Copyright (C) 2014-2015 David Barragán +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/taiga/projects/services/logo.py b/taiga/projects/services/logo.py index c1f2bf7e..cbb0bf8e 100644 --- a/taiga/projects/services/logo.py +++ b/taiga/projects/services/logo.py @@ -1,4 +1,8 @@ -# Copyright (C) 2014-2015 Taiga Agile LLC +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Alejandro Alonso +# Copyright (C) 2014-2016 Taiga Agile LLC # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_fan_projects.py b/tests/integration/test_fan_projects.py index dc9b2fc5..30897948 100644 --- a/tests/integration/test_fan_projects.py +++ b/tests/integration/test_fan_projects.py @@ -1,8 +1,8 @@ -# Copyright (C) 2015 Andrey Antukh -# Copyright (C) 2015 Jesús Espino -# Copyright (C) 2015 David Barragán +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán # Copyright (C) 2014-2016 Alejandro Alonso -# Copyright (C) 2015 Anler Hernández +# Copyright (C) 2014-2016 Anler Hernández # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the diff --git a/tests/integration/test_totals_projects.py b/tests/integration/test_totals_projects.py index 8947d6ec..6b46983b 100644 --- a/tests/integration/test_totals_projects.py +++ b/tests/integration/test_totals_projects.py @@ -1,7 +1,9 @@ -# Copyright (C) 2014-2015 Andrey Antukh -# Copyright (C) 2014-2015 Jesús Espino -# Copyright (C) 2014-2015 David Barragán -# Copyright (C) 2014-2015 Anler Hernández +# Copyright (C) 2014-2016 Andrey Antukh +# Copyright (C) 2014-2016 Jesús Espino +# Copyright (C) 2014-2016 David Barragán +# Copyright (C) 2014-2016 Anler Hernández +# Copyright (C) 2014-2016 Alejandro Alonso +# Copyright (C) 2014-2016 Taiga Agile LLC # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the @@ -111,7 +113,7 @@ def test_project_totals_updated_on_activity(client): def test_project_totals_updated_on_like(client): project = f.create_project() f.MembershipFactory.create(project=project, user=project.owner, is_owner=True) - + totals_updated_datetime = project.totals_updated_datetime now = datetime.datetime.now() assert project.total_activity == 0 From 1a341f72525fe8866b8fc45b9af778b79dc8bfb1 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 14 Jan 2016 11:13:01 +0100 Subject: [PATCH 28/41] Fixing bug in get_total_closed_milestones --- taiga/projects/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index 732c7761..6147c962 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -343,7 +343,7 @@ class ProjectSerializer(FanResourceSerializerMixin, WatchedResourceModelSerializ # The "closed_milestone" attribute can be attached in the get_queryset method of the viewset. qs_closed_milestones = getattr(obj, "closed_milestones", None) if qs_closed_milestones is not None: - return qs_closed_milestones + return len(qs_closed_milestones) return obj.milestones.filter(closed=True).count() From 919a770feafc2b9c66b0ee4a3f88583080f875fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Thu, 21 Jan 2016 18:52:23 +0100 Subject: [PATCH 29/41] Update CHANGELOG --- CHANGELOG.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee8e2426..a4172ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,20 @@ ## 1.10.0 ??? (Unreleased) ### Features -- ... +- Add logo field to project model +- Add is_featured field to project model +- Add is_looking_for_people and looking_for_people_note fields to project model +- Filter projects list by + - is_looking_for_people + - is_featured + - is_backlog_activated + - is_kanban_activated +- Search projects by text query (order by ranking name > tags > description) +- Order projects list: + - alphabetically by default + - by fans (last week/moth/year/all time) + - by activity (last week/moth/year/all time) +- Show stats for discover secction ### Misc - Lots of small and not so small bugfixes. From 9e5e1eb1aa8de2ea97e50dedeaab0a6963b1ce4e Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 19 Jan 2016 09:16:20 +0100 Subject: [PATCH 30/41] Improving membership serialization --- taiga/projects/api.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/taiga/projects/api.py b/taiga/projects/api.py index f48b3835..cede5ec9 100644 --- a/taiga/projects/api.py +++ b/taiga/projects/api.py @@ -488,19 +488,24 @@ class MembershipViewSet(ModelCrudViewSet): filter_fields = ("project", "role") def get_serializer_class(self): + use_admin_serializer = False + + if self.action == "create": + use_admin_serializer = True + + if self.action == "retrieve": + use_admin_serializer = permissions_service.is_project_owner(self.request.user, self.object.project) + project_id = self.request.QUERY_PARAMS.get("project", None) - if project_id is None: - # Creation - if self.request.method == 'POST': - return self.admin_serializer_class + if self.action == "list" and project_id is not None: + project = get_object_or_404(models.Project, pk=project_id) + use_admin_serializer = permissions_service.is_project_owner(self.request.user, project) - return self.serializer_class - - project = get_object_or_404(models.Project, pk=project_id) - if permissions_service.is_project_owner(self.request.user, project): + if use_admin_serializer: return self.admin_serializer_class - return self.serializer_class + else: + return self.serializer_class @list_route(methods=["POST"]) def bulk_create(self, request, **kwargs): From 59d05a3d7eaf3260d35cfdcb0b7a2cd43602979d Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 12 Jan 2016 12:34:09 +0100 Subject: [PATCH 31/41] Issue 3183: Error when uploading an image (as attachment) with a name of 254 chars --- taiga/users/models.py | 2 +- tests/integration/test_users.py | 44 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/taiga/users/models.py b/taiga/users/models.py index 52126691..238ffa00 100644 --- a/taiga/users/models.py +++ b/taiga/users/models.py @@ -54,7 +54,7 @@ def generate_random_hex_color(): def get_user_file_path(instance, filename): basename = path.basename(filename).lower() base, ext = path.splitext(basename) - base = slugify(unidecode(base)) + base = slugify(unidecode(base))[0:100] basename = "".join([base, ext]) hs = hashlib.sha256() diff --git a/tests/integration/test_users.py b/tests/integration/test_users.py index 2f4f2c95..88b29523 100644 --- a/tests/integration/test_users.py +++ b/tests/integration/test_users.py @@ -175,6 +175,50 @@ def test_cancel_self_user_with_invalid_token(client): assert response.status_code == 400 +def test_change_avatar(client): + url = reverse('users-change-avatar') + + user = f.UserFactory() + client.login(user) + + with NamedTemporaryFile() as avatar: + # Test no avatar send + post_data = {} + response = client.post(url, post_data) + assert response.status_code == 400 + + # Test invalid file send + post_data = { + 'avatar': avatar + } + response = client.post(url, post_data) + assert response.status_code == 400 + + # Test empty valid avatar send + avatar.write(DUMMY_BMP_DATA) + avatar.seek(0) + response = client.post(url, post_data) + assert response.status_code == 200 + + +def test_change_avatar_with_long_file_name(client): + url = reverse('users-change-avatar') + user = f.UserFactory() + + with NamedTemporaryFile(delete=False) as avatar: + avatar.name=500*"x"+".bmp" + avatar.write(DUMMY_BMP_DATA) + avatar.seek(0) + + client.login(user) + post_data = {'avatar': avatar} + response = client.post(url, post_data) + + print(response.data) + + assert response.status_code == 200 + + @pytest.mark.django_db(transaction=True) def test_change_avatar_removes_the_old_one(client): url = reverse('users-change-avatar') From 915557bbb41c032ad4fa21efc211de10af6ffde5 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 15 Jan 2016 10:30:28 +0100 Subject: [PATCH 32/41] Issue 3641: taiga-back joins milestone task change and the next task change --- taiga/projects/userstories/signals.py | 3 +++ taiga/timeline/signals.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/taiga/projects/userstories/signals.py b/taiga/projects/userstories/signals.py index aa346e8f..8a9c66c0 100644 --- a/taiga/projects/userstories/signals.py +++ b/taiga/projects/userstories/signals.py @@ -17,6 +17,7 @@ from contextlib import suppress from django.core.exceptions import ObjectDoesNotExist +from taiga.projects.history.services import take_snapshot #################################### # Signals for cached prev US @@ -47,6 +48,8 @@ def update_role_points_when_create_or_edit_us(sender, instance, **kwargs): def update_milestone_of_tasks_when_edit_us(sender, instance, created, **kwargs): if not created: instance.tasks.update(milestone=instance.milestone) + for task in instance.tasks.all(): + take_snapshot(task) #################################### diff --git a/taiga/timeline/signals.py b/taiga/timeline/signals.py index 5edc3850..f307fa4a 100644 --- a/taiga/timeline/signals.py +++ b/taiga/timeline/signals.py @@ -78,6 +78,9 @@ def on_new_history_entry(sender, instance, created, **kwargs): if instance.is_hidden: return None + if instance.user["pk"] is None: + return None + model = history_services.get_model_from_key(instance.key) pk = history_services.get_pk_from_key(instance.key) obj = model.objects.get(pk=pk) From 74b7d6c34c9e7fa2af297f910894cff13ef42baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 22 Jan 2016 13:10:40 +0100 Subject: [PATCH 33/41] [i18n] Update locales --- taiga/locale/ca/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/de/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/en/LC_MESSAGES/django.po | 1188 +++++++++--------- taiga/locale/es/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/fi/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/fr/LC_MESSAGES/django.po | 1258 +++++++++++--------- taiga/locale/it/LC_MESSAGES/django.po | 1193 ++++++++++--------- taiga/locale/nl/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/pl/LC_MESSAGES/django.po | 1190 +++++++++--------- taiga/locale/pt_BR/LC_MESSAGES/django.po | 1193 ++++++++++--------- taiga/locale/ru/LC_MESSAGES/django.po | 1193 ++++++++++--------- taiga/locale/zh-Hant/LC_MESSAGES/django.po | 1190 +++++++++--------- 12 files changed, 7438 insertions(+), 6917 deletions(-) diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index 50cfa640..fa7904e7 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Catalan (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/ca/)\n" @@ -20,149 +20,149 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "El registre públic està deshabilitat" -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "Sistema de registre invàlid" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "Sistema de login invàlid" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "nom d'usuari invàlid" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Requerit. 255 caràcters o menys. Lletres, nombres i caràcters /./-/_" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "El mot d'usuari ja està en ús." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Aquest e-mail ja està en ús." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "El token no s'ajusta a cap invitació vàlida" -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Aquest usuari ja està registrat" -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Error creant un nou usuari." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Token invàlid" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Aquest camp es obligatori" -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Valor invàlid" -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "'%s' valor deu ser Verdader o Fals" -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "Introdueix un 'slug' vàlid: lletres, nombres, barra baixa o guió." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Selecciona una opció vàlida. %(value)s no es una opció vàlida." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Introdueix una adreça de correu vàlida-" -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "La data te un format erroni. Utilitza un del següents formats: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "La data te un format erroni. Utilitza un del següents formats: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "L'hora te un format erroni. Utilitza un del següents formats: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Introdueix un nombre complet." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Asegurat que aquest valor es inferior i igual a %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Asegurat que aquest valor es superior o igual a %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" deu ser un float." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Introdueix un nombre." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asegurat que no hi ha més de %s digits en total." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asegurat que no hi ha més de %s posicions decimals." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Asegurat que no hi ha més de %s dígits abans del decimal." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Cap fitxer enviat. Comprova el tipus de codificació en el formulari." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Cap fitxer enviat." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "El fitxer enviat està buit." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -170,11 +170,11 @@ msgstr "" "Asegurat que el nom del fitxer te un màxim de %(max)d caràcters (te " "%(length)d)" -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Per favor envia un fitxer o cancela el checkbox, pero no ambdós." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -182,151 +182,151 @@ msgstr "" "Puja una imatge vàlida. El fitxer que has pujat no ès una imatge o el fitxer " "està corrupte." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "La página no es 'last' ni pot ser convertida a un 'int'" -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Pàgina invàlida (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "" -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "" -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "" -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "" -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "" -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "" -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "" -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Error de connexió." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "" -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "" -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "" -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "" -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "" -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "" -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "" -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "" -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Error inesperat" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "No s'ha trobat." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Mètode no suportat per aquest endpoint." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Arguments invàlids." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Validació de data errònia" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Error d'integritat per argument invàlid o erroni." -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Precondició errònia." @@ -334,12 +334,12 @@ msgstr "Precondició errònia." msgid "Error in filter params types." msgstr "" -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "" -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tags" @@ -454,100 +454,100 @@ msgstr "" " Comentari: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Es necessita arxiu dump." -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Format d'arxiu dump invàlid" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Contingut invàlid. Deu ser {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Conté camps personalitzats invàlids." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "" @@ -698,76 +698,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] El teu bolcat de dades ha sigut importat" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "Nom" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "Descripció" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "Nom complet" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "Adreça d'email" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "Comentari" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "Data de creació" @@ -798,7 +798,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Informació extra" @@ -832,39 +832,39 @@ msgstr "" "\n" "[Taiga] Feedback de %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "El payload no és un arxiu json vàlid" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "El projecte no existeix" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Firma no vàlida." -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "L'element referenciat no existeix" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "L'estatus no existeix." -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Informació d'incidència no vàlida." -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -875,17 +875,17 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Informació del comentari a l'incidència no vàlid." -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -896,7 +896,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -904,7 +904,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -912,11 +912,11 @@ msgid "" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." msgstr "" -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "" -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -927,11 +927,11 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "" -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -942,7 +942,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -950,15 +950,15 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -969,7 +969,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -977,308 +977,316 @@ msgid "" "{message}" msgstr "" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Veure projecte" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Veure fita" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Veure història d'usuari" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Veure tasca" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Veure incidència" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Veure pàgina del wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Veure links del wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Demana membresía" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Afegeix història d'usuari a projecte" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Afegeix comentaris a històries d'usuari" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Afegeix comentaris a tasques" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Afegeix incidéncies" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Afegeix comentaris a incidéncies" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Afegeix pàgina del wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Modifica pàgina del wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Afegeix enllaç de wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modifica enllaç de wiki" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Afegeix fita" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modifica fita" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Borra fita" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Veure història d'usuari" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Afegeix història d'usuari" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modifica història d'usuari" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Borra història d'usuari" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Afegeix tasca" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modifica tasca" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Borra tasca" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Afegeix incidència" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modifica incidència" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Borra incidència" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Borra pàgina de wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Borra enllaç de wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modifica projecte" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Afegeix membre" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Borra membre" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Borra projecte" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Administrar valors de projecte" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Administrar rols" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Arguments incomplets." + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Format d'image invàlid" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Al menys un del usuaris ha de ser administrador" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "No tens permisos per a veure açò." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "Amo" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "Projecte" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "Tipus de contingut" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "Id d'objecte" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "Data de modificació" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "Arxiu adjunt" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "està obsolet " -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "Ordre" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "tipus" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "història d'usuari" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "tasca" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "incidéncia" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Ja existix altre amb el matex nom." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "" @@ -1346,7 +1354,7 @@ msgstr "Borrat" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Sense assignar" @@ -1393,120 +1401,115 @@ msgstr "Desde:" msgid "To:" msgstr "A:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "contingut" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "nota de bloqueig" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "No tens permissos per a ficar aquest sprint a aquesta incidència" -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "No tens permissos per a ficar aquest status a aquesta tasca" -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "No tens permissos per a ficar aquesta severitat a aquesta tasca" -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "No tens permissos per a ficar aquesta prioritat a aquesta incidència" -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "No tens permissos per a ficar aquest tipus a aquesta incidència" -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "estatus" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "severitat" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "prioritat" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "fita" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "Data de finalització" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "tema" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "assignada a" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "referència externa" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "M'agrada" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "Data estimada d'inici" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "Data estimada de finalització" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "està tancat" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibilitat" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "" @@ -1514,230 +1517,275 @@ msgstr "" msgid "There's no sprint with that id" msgstr "No hi ha cap sprint amb aquest id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "està bloquejat" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "email" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "text extra d'invitació" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "L'usuari ja es membre del projecte" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "Points per defecte" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "estatus d'història d'usuai per defecte" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "Estatus de tasca per defecte" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "Prioritat per defecte" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "Severitat per defecte" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "Status d'incidència per defecte" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "Tipus d'incidència per defecte" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "membres" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "total de fites" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "total de punts d'història" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "activa panell de backlog" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "activa panell de kanban" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "activa panell de wiki" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "activa panell d'incidències" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "sistema de videoconferència" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "template de creació" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "permisos d'anònims" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "permisos d'usuaris" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "es privat" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "colors de tags" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "configuració de mòdules" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "està arxivat" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "color" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "limit de treball en progrés" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "valor" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "rol d'amo per defecte" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "opcions per defecte" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "status d'històries d'usuari" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "punts" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "status de tasques" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "status d'incidències" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "tipus d'incidències" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "prioritats" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "severitats" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "rols" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "creada data" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "Actualitzada data" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "configuració de mòdules" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "està arxivat" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "color" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "limit de treball en progrés" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "valor" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "rol d'amo per defecte" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "opcions per defecte" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "status d'històries d'usuari" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "punts" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "status de tasques" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "status d'incidències" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "tipus d'incidències" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "prioritats" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "severitats" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "rols" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "creada data" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "" @@ -2218,103 +2266,103 @@ msgstr "" "\n" "[%(project)s] Borrada pàgina de Wiki \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "Versió" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "No pots deixar el projecte si no hi ha més amos" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Aquest e-mail ja està en ús" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Rol invàlid per al projecte" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Opcions per defecte" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Estatus d'històries d'usuari" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Punts" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Estatus de tasques" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Estatus d'incidéncies" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Tipus d'incidéncies" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Prioritats" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Severitats" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Rols" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "order d'històries d'usuari" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "ordre de taskboard" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "es iocaina" @@ -2449,12 +2497,12 @@ msgstr "" "[Taiga] Afegit al projecte '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2465,12 +2513,12 @@ msgid "" msgstr "" #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2479,350 +2527,342 @@ msgid "" msgstr "" #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rol" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "ordre de backlog" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "ordre d'sprint" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "data de finalització" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "requeriment de client" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "requeriment d'equip" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "generat desde incidéncia" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "No hi ha cap història d'usuari amb eixe id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "No hi ha cap projecte amb eixe id" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "No hi ha cap estatis d'història d'usuari amb eixe id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "No hi ha cap estatus de tasca amb eixe id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Vots" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Vot" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "últim a modificar" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Informació personal" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Permissos" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Dates importants" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Email duplicat" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Email no vàlid" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Nom d'usuari o email invàlid" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Correu enviat satisfactòriament" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Token invàlid" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Paràmetre de password actual requerit" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Paràmetre de password requerit" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Password invàlid, al menys 6 caràcters requerits" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Password actual invàlid" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Arguments incomplets." - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Format d'image invàlid" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -2833,11 +2873,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Invàlid. Estás segur que el token es correcte?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "estatus de superusuari" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -2845,24 +2885,24 @@ msgstr "" "Designa que aquest usuari te tots els permisos sense asignarli-los " "explícitament." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "mot d'usuari" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Requerit. 30 caràcters o menys. Lletres, nombres i caràcters /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Introdueix un nom d'usuari vàlid" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "actiu" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -2870,55 +2910,55 @@ msgstr "" "Designa si aquest usuari ha de se tractac com actiu. Deselecciona açó en " "lloc de borrar el compte." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografia" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "foto" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "data d'unió" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "llenguatge per defecte" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "zona horaria per defecte" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "coloritza tags" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "token de correu" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nova adreça de correu" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "permissos" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "invàlid" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Nom d'usuari invàlid" -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "" @@ -3039,47 +3079,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "" diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po index e77d54eb..a79ede06 100644 --- a/taiga/locale/de/LC_MESSAGES/django.po +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: German (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/de/)\n" @@ -28,169 +28,169 @@ msgstr "" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Die Registrierung ist für die Öffentlichkeit gesperrrt." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "Ungültige Registrierungsart" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "Ungültige Loginart" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "Ungültiger Benutzername" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "" "255 oder weniger Zeichen aus Buchstaben, Zahlen und Punkt, Minus oder " "Unterstrich erforderlich." -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Der Benutzername wird schon verwendet." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Diese E-Mail Adresse wird schon verwendet." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Das Token kann keiner gültigen Einladung zugeordnet werden." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Der Benutzer ist schon registriert." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Fehler bei der Erstellung des neuen Benutzers." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Ungültiges Token" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Das ist ein Pflichtfeld." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Ungültiger Wert." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "Der Wert für '%s' muss entweder True/Wahr oder False/Falsch sein." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Geben Sie einen gültigen 'slug' ein, bestehend aus Buchstaben, Zahlen, " "Unterstrichen oder Bindestrichen." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Bitte machen Sie eine gültige Auswahl. %(value)s ist nicht verfügbar." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Geben Sie bitte eine gültige E-Mail Adresse an." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "" "Das Datum hat das falsche Format. Bitte verwenden Sie eines der folgenden " "Formate: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" "Der Datentyp 'Datetime' hat ein falsches Format. Bitte verwenden Sie eines " "der folgenden Formate: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" "Die Zeit hat ein falsches Format. Bitte verwenden Sie eines der folgenden " "Formate: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Geben Sie bitte eine ganze Zahl ein." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "" "Stellen Sie sicher, dass dieser Wert niedriger oder gleich ist wie " "%(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "" "Stellen Sie sicher, dass dieser Wert höher oder gleich ist wie " "%(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "Der Wert für '%s' muss eine Fließkommazahl sein." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Bitte geben Sie eine Zahl ein." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "" "Bitte stellen Sie sicher, dass nicht mehr als %s insgesamt vorhanden sind. " -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "" "Bitte stellen Sie sicher, dass nicht mehr als %s Dezimalstellen vorhanden " "sind." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "" "Stellen Sie sicher, dass nicht mehr als %s Ziffern vor dem Dezimalpunkt " "vorhanden sind." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Es wurde keine Datei übergeben. Prüfen Sie die Kodierung der HTML-Form." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Es wurde keine Datei eingereicht." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Die eingereichte Datei ist leer." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -198,13 +198,13 @@ msgstr "" "Stellen Sie sicher, dass dieser Dateiname höchstens %(max)d Zeichen hat (er " "hat %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" "Bitte senden Sie entweder eine Datei oder markieren Sie \"Löschen\", nicht " "beides." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -212,153 +212,153 @@ msgstr "" "Bitte laden Sie ein gültiges Bild hoch. Die Datei, die Sie hochgeladen " "haben, ist entweder kein Bild oder defekt." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Seite ist nicht 'letzte', noch kann diese konvertiert werden." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Ungültige Seite (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Ungültige Berechtigungsdefinition" -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Ungültige pk '%s' - Das Objekt existiert nicht." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Falsche Eingabe. Erwartet pk Wert, erhalten %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Objekt mit %s=%s existiert nicht." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Ungültiger Hyperlink - keine passende URL. " -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Ungültiger Hyperlink - Falsche URL Verknüpfung" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Ungültiger Hyperlink durch Konfigurationsfehler" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Ungültiger Hyperlink - Ziel existiert nicht." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Falsche Eingabe. Erwartet url Zeichenkette, erhalten %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Ungültige Daten" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Es gab keine Eingabe" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Es können nur existierende Einträge aktualisiert werden. Eine Neuerstellung " "ist nicht möglich." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Es wurde eine Liste von Einträgen erwartet." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Nicht gefunden." -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Zugriff verweigert" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Fehler bei der Serveranmeldung" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Verbindungsfehler." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Fehlerhafte Anfrage." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Ungültige Authentifizierungsdaten." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Die Authentifizierungsdaten wurden nicht erbracht." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Sie haben keine Berechtigung, diese Aktion auszuführen. " -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Methode '%s' ist nicht erlaubt." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Könnte der Anforderung im Header nicht entsprechen." -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Nicht unterstützter Medientyp '%s' in Anfrage." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Die Anfrage wurde ausgebremst." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Voraussichtlich verfügbar in %d second%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Unerwarteter Fehler" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Nicht gefunden." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Methode wird für diesen Endpunkt nicht unterstützt. " -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Falsche Argumente" -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Fehler bei Datenüberprüfung " -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Integritätsfehler wegen falscher oder ungültiger Argumente" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Voraussetzungsfehler" @@ -366,12 +366,12 @@ msgstr "Voraussetzungsfehler" msgid "Error in filter params types." msgstr "Fehler in Filter Parameter Typen." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' muss ein Integer-Wert sein." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "Tags" @@ -509,100 +509,100 @@ msgstr "" "Kommentar: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Es ist mindestens eine Rolle nötig" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Exportdatei erforderlich" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Ungültiges Exportdatei Format" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "Fehler beim Importieren der Projektdaten" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "Fehler beim Importieren der Listen von Projektattributen" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "Fehler beim Importieren der vorgegebenen Projekt Attributwerte " -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "Fehler beim Importieren der Kundenattribute" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "Fehler beim Importieren der Rollen" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "Fehler beim Importieren der Mitgliedschaften" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "Fehler beim Import der Sprints" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "Fehler beim Importieren von Wiki Seiten" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "Fehler beim Importieren von Wiki Links" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "Fehler beim Importieren der Tickets" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "Fehler beim Importieren der User-Stories" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "Fehler beim Importieren der Aufgaben" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "Fehler beim Importieren der Schlagworte" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "Fehler beim Importieren der Chroniken" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" wurde in diesem Projekt nicht gefunden" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Invalider Inhalt. Er muss wie folgt sein: {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Enthält ungültige Benutzerfelder." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Der Name für das Projekt ist doppelt vergeben" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Fehler beim Erzeugen der Projekt Export-Datei " -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Fehler beim Laden von Projekt Export-Datei" @@ -846,76 +846,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Ihre Projekt Export-Datei wurde importiert" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "Authentifizierung erforderlich" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "Name" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "Icon URL" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "Web" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "Beschreibung" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Nächste URL" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "Geheimer Schlüssel für Verschlüsselung der Anwensungs-Token" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "Benutzer" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "Applikation" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "vollständiger Name" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "E-Mail Adresse" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "Kommentar" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "Erstellungsdatum" @@ -945,7 +945,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Zusätzliche Information" @@ -980,39 +980,39 @@ msgstr "" "[Taiga] Feedback von %(full_name)s <%(email)s>\n" " \n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "Die Nutzlast ist kein gültiges json" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Das Projekt existiert nicht" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Falsche Signatur" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "Das referenzierte Element existiert nicht" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "Der Status existiert nicht" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Der Status des BitBucket Commits hat sich geändert" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Ungültige Ticket-Information" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1029,17 +1029,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Ticket erstellt von BitBucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Ungültige Ticket-Kommentar Information" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1056,7 +1056,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1067,7 +1067,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1078,11 +1078,11 @@ msgstr "" "@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Der Status des GitHub Commits hat sich geändert" -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1099,11 +1099,11 @@ msgstr "" "\n" " {description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Ticket erstellt von GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1120,7 +1120,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1131,15 +1131,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Der Status des GitLab Commits hat sich geändert" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Erstellt von GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1156,7 +1156,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1167,308 +1167,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Projekt ansehen" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Meilensteine ansehen" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "User-Stories ansehen. " -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Aufgaben ansehen" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Tickets ansehen" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Wiki Seiten ansehen" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Wiki Links ansehen" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Mitgliedschaft beantragen" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "User-Story zu Projekt hinzufügen" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Kommentar zu User-Stories hinzufügen" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Kommentare zu Aufgaben hinzufügen" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Tickets hinzufügen" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Kommentare zu Tickets hinzufügen" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Wiki Seite hinzufügen" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Wiki Seite ändern" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Wiki Link hinzufügen" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Wiki Link ändern" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Meilenstein hinzufügen" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Meilenstein ändern" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Meilenstein löschen" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "User-Story ansehen" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "User-Story hinzufügen" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "User-Story ändern" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "User-Story löschen" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Aufgabe hinzufügen" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Aufgabe ändern" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Aufgabe löschen" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Ticket hinzufügen" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Ticket ändern" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Gelöschtes Ticket" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Wiki Seite löschen" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Wiki Link löschen" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Projekt ändern" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Mitglied hinzufügen" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Mitglied entfernen" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Projekt löschen" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Administrator Projekt Werte" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Administrator-Rollen" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Unvollständige Argumente" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Ungültiges Bildformat" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Unglültiger Templatename" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Ungültige Templatebeschreibung" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Mindestens ein Benutzer muss ein aktiver Administrator sein. " -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Sie haben keine Berechtigungen für diese Ansicht" -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "Teil-Aktualisierungen sind nicht unterstützt" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "Nr. unterschreidet sich zwischen dem Objekt und dem Projekt" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "Besitzer" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "Projekt" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "Inhaltsart" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "Objekt Nr." -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "Zeitpunkt der Änderung" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "Angehangene Datei" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "SHA1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "wurde verworfen" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "Reihenfolge" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "Erscheint in" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Kunde" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Gesprächig" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Text" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Mehrzeiliger Text" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "Datum" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "Art" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "Werte" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "User-Story" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "Aufgabe" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "Ticket" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Dieser Name wird schon verwendet." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Kommentar bereits gelöscht" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Kommentar nicht gelöscht" @@ -1536,7 +1544,7 @@ msgstr "entfernt" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Nicht zugewiesen" @@ -1583,124 +1591,119 @@ msgstr "Von:" msgid "To:" msgstr "An:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "Inhalt" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "Blockierungsgrund" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "Sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "" "Sie haben nicht die Berechtigung, das Ticket auf diesen Sprint zu setzen." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "" "Sie haben nicht die Berechtigung, das Ticket auf diesen Status zu setzen. " -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "" "Sie haben nicht die Berechtigung, das Ticket auf diese Gewichtung zu setzen." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "" "Sie haben nicht die Berechtigung, das Ticket auf diese Priorität zu setzen. " -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Sie haben nicht die Berechtigung, das Ticket auf diese Art zu setzen." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "Status" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "Gewichtung" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "Priorität" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "Meilenstein" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "Datum der Fertigstellung" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "Betreff" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "zugewiesen an" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "externe Referenz" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "Count" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Likes" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Like" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Likes" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "Slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "geschätzter Starttermin" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "geschätzter Endtermin" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "ist geschlossen" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "Verfügbarkeit" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "Der erwartete Beginn muss vor dem erwarteten Ende liegen. " @@ -1708,230 +1711,275 @@ msgstr "Der erwartete Beginn muss vor dem erwarteten Ende liegen. " msgid "There's no sprint with that id" msgstr "Es gibt keinen Sprint mit dieser id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "wird blockiert" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' Parameter ist ein Pflichtfeld" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "Der 'project' Parameter ist ein Pflichtfeld" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "E-Mail" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "erstellt am " -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "Token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "Einladung Zusatztext " -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "Benutzerreihenfolge" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "Der Benutzer ist bereits Mitglied dieses Projekts" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "voreingestellte Punkte" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "voreingesteller User-Story Status " -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "voreingestellter Aufgabenstatus" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "voreingestellte Priorität " -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "voreingestellte Gewichtung " -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "voreingestellter Ticket Status" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "voreingestellter Ticket Typ" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "Mitglieder" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "Meilensteine Gesamt" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "Story Punkte insgesamt" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "aktives Backlog Panel" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "aktives Kanban Panel" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "aktives Wiki Panel" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "aktives Tickets Panel" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "Videokonferenzsystem" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "Zusatzdaten Videokonferenz" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "Vorlage erstellen" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "Rechte für anonyme Nutzer" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "Rechte für registrierte Nutzer" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "ist privat" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "Tag Farben" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "Module konfigurieren" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "ist archiviert" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "Farbe" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "Ausführungslimit" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "Wert" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "voreingestellte Besitzerrolle" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "Vorgabe Optionen" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "User-Story Status " - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "Punkte" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "Aufgaben Status" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "Ticket Status" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "Ticket Arten" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "Prioritäten" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "Gewichtung" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "Rollen" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "Beteiligt" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "Alle" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "Keine" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "Erstelldatum" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "Aktualisierungsdatum" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "Count" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "Module konfigurieren" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "ist archiviert" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "Farbe" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "Ausführungslimit" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "Wert" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "voreingestellte Besitzerrolle" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "Vorgabe Optionen" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "User-Story Status " + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "Punkte" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "Aufgaben Status" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "Ticket Status" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "Ticket Arten" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "Prioritäten" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "Gewichtung" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "Rollen" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Beteiligt" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Alle" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Keine" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "Erstelldatum" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "Chronik Einträge" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "Benutzer benachrichtigen" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Beobachtet" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Benachrichtigung für bestimmte Benutzer und Projekt aktiviert" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Ungültiger Wert für Benachrichtigungslevel" @@ -2690,109 +2738,109 @@ msgstr "" "[%(project)s] löschte die Wiki Seite \"%(page)s\"\n" "\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Beobachter enthält ungültige Benutzer " -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "Die Watcher beinhalten einen ungültigen Benutzer" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "Der Versionsparameter ist ungültig" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "Die Version stimmt nicht mit der aktuellen überein" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "Version" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "" "Sie können das Projekt nicht verlassen, wenn keine weiteren Besitzer " "vorhanden sind" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Die E-Mailadresse ist bereits vergeben" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Ungültige Rolle für dieses Projekt" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Voreingestellte Optionen" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Status für User-Stories" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Punkte" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Aufgaben Status" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Ticket Status" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Ticket Arten" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Prioritäten" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Gewichtung" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Rollen" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Zukünftiger Sprint" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Projektende" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" "Sie haben nicht die Berechtigung, diesen Sprint auf diese Aufgabe zu setzen" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" "Sie haben nicht die Berechtigung, diese User-Story auf diese Aufgabe zu " "setzen" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" "Sie haben nicht die Berechtigung, diesen Status auf diese Aufgabe zu setzen." -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "User-Story Befehl " -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "Taskboard Befehl " -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "ist Iocaine" @@ -2959,12 +3007,12 @@ msgstr "" " \n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2981,12 +3029,12 @@ msgstr "" "seiner Kunden gerecht wird." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -3000,354 +3048,346 @@ msgstr "" "der nächsten Integrationsstufe verbaut werden." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Neu" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Fertig" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "In Arbeit" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Bereit zum Testen" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Erledigt" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Archiviert" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Geschlossen" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Information wird benötigt" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Verschoben" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Zurückgewiesen" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Fehler" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Frage" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Erweiterung" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Niedrig" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normal" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Hoch" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Wunschliste" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Gering" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Wichtig" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Kritisch" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Projekteigentümer " #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" "Sie haben nicht die Berechtigung, diesen Sprint auf diese User-Story zu " "setzen." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" "Sie haben nicht die Berechtigung, diesen Status auf diese User-Story zu " "setzen." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "Erstelle die User-Story #{ref} - {subject}" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "Rolle" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "Backlog Befehl " -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "Sprintreihenfolge" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "Endtermin" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "ist Kundenanforderung" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "ist Teamanforderung" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "erzeugt von Ticket" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Es gibt keine User-Story mit dieser id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Es gibt kein Projekt mit dieser id" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Es gibt keinen User-Story Status mit dieser id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Es gibt keinen Aufgabenstatus mit dieser id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Stimmen" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Stimme" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "'content' Parameter ist erforderlich" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "'project_id' Parameter ist erforderlich" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "letzte Änderung" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Prüfe die API der Historie auf Übereinstimmung" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Personal Information" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Berechtigungen" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Wichtige Termine" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Doppelte E-Mail" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Ungültige E-Mail" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Ungültiger Benutzername oder E-Mail" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "E-Mail erfolgreich gesendet." -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Token ist ungültig" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Aktueller Passwort Parameter wird benötigt" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Neuer Passwort Parameter benötigt" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Ungültige Passwortlänge, mindestens 6 Zeichen erforderlich" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Ungültiges aktuelles Passwort" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Unvollständige Argumente" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Ungültiges Bildformat" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3359,11 +3399,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Ungültig. Sind Sie sicher, dass das Token korrekt ist?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "Superuser Status" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -3371,25 +3411,25 @@ msgstr "" "Dieser Benutzer soll alle Berechtigungen erhalten, ohne dass diese zuvor " "zugewiesen werden müssen. " -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "Benutzername" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "" "Benötigt. 30 Zeichen oder weniger.. Buchstaben, Zahlen und /./-/_ Zeichen" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Geben Sie einen gültigen Benuzternamen ein." -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "aktiv" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3397,55 +3437,55 @@ msgstr "" "Kennzeichnet den Benutzer als aktiv. Deaktiviere die Option anstelle einen " "Benutzer zu löschen." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "Über mich" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "Foto" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "Beitrittsdatum" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "Vorgegebene Sprache" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "Standard-Theme" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "Vorgegebene Zeitzone" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "Tag-Farben" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "E-Mail Token" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "neue E-Mail Adresse" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "Berechtigungen" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "ungültig" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Ungültiger Benutzername. Versuchen Sie es mit einem anderen." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Benutzername oder Passwort stimmen mit keinem Benutzer überein." @@ -3647,49 +3687,49 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Sie wurden taigatisiert! " -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Es gibt keine Rolle mit dieser id" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Doppelter Schlüsselwert verstößt einzigartige Vorgaben. Schlüssel '{}' " "existiert bereits." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "Schlüssel" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "Geheimer Schlüssel" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "Status Code" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "Anfrage Daten" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "Anfrage Header" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "Antwort Daten" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "Antwort Header" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "Dauer" diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index 6bad9f9b..5e823823 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Taiga Dev Team \n" @@ -16,309 +16,309 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "" -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "" -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "" -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "" -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "" -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "" -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "" -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "" -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "" -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "" -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "" -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "" -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "" -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "" -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "" -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "" -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "" -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "" -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "" -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "" -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "" -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "" -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "" -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "" -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "" -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "" -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "" -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "" -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "" -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "" -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "" -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "" -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "" -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "" -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "" -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "" -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "" -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "" -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "" -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "" -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "" -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "" -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "" @@ -326,12 +326,12 @@ msgstr "" msgid "Error in filter params types." msgstr "" -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "" -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "" @@ -443,100 +443,100 @@ msgid "" " " msgstr "" -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "" -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "" @@ -687,76 +687,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "" @@ -779,7 +779,7 @@ msgid "" msgstr "" #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "" @@ -805,39 +805,39 @@ msgid "" "[Taiga] Feedback from %(full_name)s <%(email)s>\n" msgstr "" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -848,17 +848,17 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -869,7 +869,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -877,7 +877,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -885,11 +885,11 @@ msgid "" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." msgstr "" -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "" -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -900,11 +900,11 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "" -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -915,7 +915,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -923,15 +923,15 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -942,7 +942,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -950,308 +950,316 @@ msgid "" "{message}" msgstr "" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "" -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "" -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "" @@ -1319,7 +1327,7 @@ msgstr "" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "" @@ -1366,120 +1374,115 @@ msgstr "" msgid "To:" msgstr "" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "" -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "" -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "" -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "" -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "" -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "" @@ -1487,230 +1490,275 @@ msgstr "" msgid "There's no sprint with that id" msgstr "" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "" @@ -2185,103 +2233,103 @@ msgid "" "[%(project)s] Deleted the Wiki Page \"%(page)s\"\n" msgstr "" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "" @@ -2398,12 +2446,12 @@ msgid "" msgstr "" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2414,12 +2462,12 @@ msgid "" msgstr "" #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2428,350 +2476,342 @@ msgid "" msgstr "" #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -2781,88 +2821,88 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "" -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "" -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "" @@ -2983,47 +3023,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "" diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index d18ccbe3..ee6fd281 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Spanish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/es/)\n" @@ -24,161 +24,161 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "El registro público está deshabilitado." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "Tipo de registro inválido" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "Tipo de login inválido" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "nombre de usuario no válido" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Son necesarios. 255 caracteres o menos (letras, números y /./-/_)" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Nombre de usuario no disponible" -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Email no disponible" -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "El token no pertenece a ninguna invitación válida." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Este usuario ya está registrado." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Error al crear un nuevo usuario " -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Token inválido" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Este campo es requerido." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Valor inválido." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "El valor para '%s' debe ser True o False." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Escribe un slug válido que esté formado por letras, números o los símbolos " "de guión o subrayado." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Seleccione una opción válida. %(value)s no es una de las opciones " "disponibles." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Introduzca una dirección de email válida." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "" "La fecha posee un formato inválido. Utiliza alguno de los siguientes " "formatos: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" "La fecha y hora poseen un formato inválido. Utiliza alguno de los siguientes " "formatos: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" "El tiempo indicado posee un formato inválido. Utiliza alguno de los " "siguientes formatos: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Introduce un número entero" -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Asegúrate de que el valor es menor o igual a %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Asegúrate de que el valor es mayor o igual a %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "El valor \"%s\" debe ser un número en coma flotante." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Introduce un número." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Asegúrate de que no haya más de %s dígitos en total." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Asegúrate de que no haya más de %s decimales." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "" "Asegúrate de que no haya más de %s dígitos en la parte entera del número." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "No se ha adjuntado ningún archivo. Comprueba el encoding en el formulario." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "No se envió el archivo" -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "El archivo enviado está vacío." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -186,164 +186,164 @@ msgstr "" "Asegúrate de que el nombre del fichero contiene menos de %(max)d caracteres " "(ahora tiene %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Por favor, adjunta un fichero o marca la casilla de vacío, no ambos." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "Adjunta una imagen válida. El fichero no es una imagen o está dañada." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "La página no es 'last' o no es un número." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Página no válida (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Definición de permiso inválida." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "PK '%s' inválida - el objeto no existe." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "" "Tipo incorrecto. Se esperaba un identificador (pk) y se ha recibido %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "El objeto con %s=%s no existe." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Hipervínculo inválido - La URL no encaja con ningun objeto." -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Hipervínculo inválido - La URL es incorrecta" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Hipervínculo inválido debido a un error de configuración" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Hipervínculo inválido - el objeto no existe." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Tipo incorrecto. Se esperaba una url y se ha recibido %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Datos invalidos" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "No se han introducido datos." -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "No se pueden crear nuevos objetos. Sólo está permitida la actualización de " "los existentes." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Se esperaba una lista de objetos." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "No encontrado" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Permiso denegado." -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Error en la aplicación del servidor." -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Error de conexión" -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Petición con formato incorrecto." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Credenciales de autenticación incorrectas." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "No se han proporcionado las credenciales de autenticación." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "No tienes permisos para realizar esta acción." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Método '%s' no permitido." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "No se ha podido satisfacer la perición de cabecera Accept" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Típo de medio '%s' no soportado." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Demasiadas peticiones." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Estará disponible en %d segundos%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Error inesperado" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "No encontrado." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Método no soportado por este recurso." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Argumentos erróneos." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Error de validación de datos" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Error de integridad por argumentos incorrectos o inválidos" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Error por incumplimiento de precondición" @@ -351,12 +351,12 @@ msgstr "Error por incumplimiento de precondición" msgid "Error in filter params types." msgstr "Error en los típos de parámetros de filtrado" -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' debe ser un valor entero." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "etiquetas" @@ -493,100 +493,100 @@ msgstr "" "\n" "Comentario: %(comment)s" -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Necesitamos al menos un rol" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Se necesita el fichero con los datos exportados" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Formato de fichero de exportación inválido" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "error importando los datos del proyecto" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "error importando la listados de valores de attributos del proyecto" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "error importando los valores por defecto de los atributos del proyecto" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "error importando los atributos personalizados" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "error importando los roles" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "error importando los miembros" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "error importando los sprints" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "error importando las páginas del wiki" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "error importando los enlaces del wiki" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "error importando las peticiones" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "error importando las historias de usuario" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "error importando las tareas" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "error importando las etiquetas" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "error importando los timelines" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" no se ha encontrado en este proyecto" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Contenido inválido. Debe ser {\"clave\": \"valor\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Contiene attributos personalizados inválidos." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Nombre duplicado para el proyecto" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Erro generando el volcado de datos del proyecto" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Error cargando el volcado de datos del proyecto" @@ -825,76 +825,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Tu proyecto ha sido importado" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "Se requiere autenticación" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "nombre" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "URL del icono" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "web" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "descripción" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Siguiente URL" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "clave secreta para cifrar los tokens de aplicación" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "usuario" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "aplicación" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "nombre completo" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "dirección de email" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "comentario" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "fecha de creación" @@ -924,7 +924,7 @@ msgstr "" "

%(comment)s

" #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Información extra" @@ -958,39 +958,39 @@ msgstr "" "\n" "[Taiga] Feedback de %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "El payload no es un json válido" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "El proyecto no existe" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Firma errónea" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "El elemento referenciado no existe" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "El estado no existe" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Estado cambiado desde un commit de BitBucket" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Información inválida de Issue" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1007,17 +1007,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Petición creada desde BitBucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Información de comentario de Issue inválida" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1034,7 +1034,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1045,7 +1045,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1057,11 +1057,11 @@ msgstr "" "de GitHub [{commit_id}]({commit_url} \"Ver commit '{commit_id} - " "{commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Estado cambiado a través de un commit en GitHub." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1077,11 +1077,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Petición creada a través de GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1097,7 +1097,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1108,15 +1108,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Estado cambiado desde un commit de GitLab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Creado desde Gitlab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1133,7 +1133,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1144,308 +1144,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Ver proyecto" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Ver sprints" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Ver historias de usuarios" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Ver tareas" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Ver peticiones" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Ver páginas del wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Ver enlaces del wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Solicitar afiliación" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Añadir historias de usuario al proyecto" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Agregar comentarios a historia de usuario" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Agregar comentarios a tareas" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Añadir peticiones" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Añadir comentarios a peticiones" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Agregar pagina wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Modificar pagina wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Agregar enlace wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modificar enlace wiki" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Añadir sprint" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modificar sprint" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Borrar sprint" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Ver historia de usuario" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Agregar historia de usuario" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modificar historia de usuario" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Borrar historia de usuario" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Agregar tarea" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modificar tarea" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Borrar tarea" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Añadir petición" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modificar petición" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Borrar petición" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Borrar pagina wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Borrar enlace wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modificar proyecto" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Agregar miembro" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Eliminar miembro" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Eliminar proyecto" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Administrar valores de proyecto" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Administrar roles" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Argumentos incompletos" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Formato de imagen no válido" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Nombre de plantilla invalido" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Descripción de plantilla invalida" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Al menos uno de los usuario debe ser un administrador." -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "No tienes suficientes permisos para ver esto." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "La actualización parcial no está soportada." -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "El ID de proyecto no coincide entre el adjunto y un proyecto" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "Dueño" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "Proyecto" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "típo de contenido" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "id de objeto" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "fecha modificada" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "archivo adjunto" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "sha1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "está desactualizado" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "orden" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Personalizado" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Texto" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Texto multilínea" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "Fecha" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "tipo" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "valores" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "historia de usuario" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "tarea" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "petición" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Ya existe uno con el mismo nombre." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "El comentario ya ha sido borrado." -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "El comentario no se borro." @@ -1513,7 +1521,7 @@ msgstr "borrado" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "No asignado" @@ -1560,120 +1568,115 @@ msgstr "De:" msgid "To:" msgstr "A:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "contenido" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "nota de bloqueo" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "No tienes permisos para asignar un sprint a esta petición." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "No tienes permisos para asignar un estado a esta petición." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "No tienes permisos para establecer la gravedad de esta petición." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "No tienes permiso para establecer la prioridad de esta petición." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "No tienes permiso para establecer el tipo de esta petición." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "estado" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "gravedad" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "prioridad" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "sprint" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "fecha de finalización" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "asunto" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "asignado a" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "referencia externa" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "recuento" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Likes" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Like" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Likes" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "fecha estimada de comienzo" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "fecha estimada de finalización" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "está cerrada" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibilidad" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "" "La fecha de inicio estimada debe ser previa a la fecha de finalización " @@ -1683,231 +1686,276 @@ msgstr "" msgid "There's no sprint with that id" msgstr "No hay sprints con este id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "está bloqueada" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "el parámetro '{param}' es obligatório" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "el parámetro 'project' es obligatório" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "email" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "creado el" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "texto extra de la invitación" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "orden del usuario" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "El usuario ya es miembro del proyecto" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "puntos por defecto" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "estado de historia por defecto" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "estado de tarea por defecto" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "prioridad por defecto" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "gravedad por defecto" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "estado de petición por defecto" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "tipo de petición por defecto" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "miembros" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "total de sprints" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "puntos de historia totales" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "panel de backlog activado" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "panel de kanban activado" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "panel de wiki activo" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "panel de peticiones activo" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "sistema de videoconferencia" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "datos extra de videoconferencia" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "creación de plantilla" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "permisos de anónimo" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "permisos de usuario" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "privado" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "colores de etiquetas" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "configuración de modulos" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "archivado" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "color" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "limite del trabajo en progreso" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "valor" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "rol por defecto para el propietario" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "opciones por defecto" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "estatuas de historias" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "puntos" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "estatus de tareas" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "estados de petición" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "tipos de petición" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "prioridades" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "gravedades" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "roles" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "Involucrado" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "Todas" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "Ninguna" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "fecha y hora de creación" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "fecha y hora de actualización" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "recuento" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "configuración de modulos" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "archivado" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "color" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "limite del trabajo en progreso" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "valor" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "rol por defecto para el propietario" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "opciones por defecto" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "estatuas de historias" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "puntos" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "estatus de tareas" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "estados de petición" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "tipos de petición" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "prioridades" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "gravedades" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "roles" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Involucrado" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Todas" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Ninguna" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "fecha y hora de creación" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "entradas del histórico" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "usuarios notificados" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Observado" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "" "Ya existe una política de notificación para este usuario en el proyecto." -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Valor inválido para el nivel de notificación" @@ -2618,104 +2666,104 @@ msgstr "" "\n" "[%(project)s] Borrada la página del wiki \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Los observadores tienen usuarios invalidos" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "La versión debe ser un número entero" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "La versión no es válida" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "Las version difiere de la actual" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "versión" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "" "No puedes abandonar este proyecto si no existen mas propietarios del mismo" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "La dirección de email ya está en uso." -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Rol inválido para el proyecto" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Opciones por defecto" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Estados de historia de usuario" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Puntos" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Estado de tareas" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Estados de peticion" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Tipos de petición" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Prioridades" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Gravedades" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Roles" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Sprint futuro" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Final de proyecto" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "No tienes permisos para asignar este sprint a esta tarea." -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "No tienes permisos para asignar esta historia a esta tarea." -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "No tienes permisos para asignar este estado a esta tarea." -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "orden en la historia" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "orden en el taskboard" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "tiene iocaína" @@ -2870,12 +2918,12 @@ msgstr "" "[Taiga] Añadido al proyecto '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2893,12 +2941,12 @@ msgstr "" "las nuevas necesidades del cliente." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2914,352 +2962,344 @@ msgstr "" "diferentes colas." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Nueva" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Preparada" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "En curso" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Lista para testear" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Hecha" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Archivada" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Cerrada" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Necesita información" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Pospuesta" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Rechazada" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Bug" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Pregunta" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Mejora" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Baja" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normal" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Alta" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Deseada" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Menor" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Importante" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Crítica" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Diseñador" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Product Owner" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" "No tienes permisos para asignar este sprint a esta historia de usuario." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" "No tienes permisos para asignar este estado a esta historia de usuario." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "Generada la historia de usuario #{ref} - {subject}" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rol" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "orden en el backlog" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "orden en el sprint" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "fecha de finalización" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "requerido por el cliente" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "requerido por el equipo" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "generada desde una petición" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "No existe ninguna historia de usuario con este id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "No existe ningún proyecto con este id" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "No existe ningún estado de historia con este id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "No existe ningún estado de tarea con este id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Votos" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Voto" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "el parámetro 'content' es obligatório" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "el parámetro 'project_id' es obligatório" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "última modificación por" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Comprueba la API de histórico para obtener el diff exacto" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Información personal" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Permisos" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "datos importántes" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Email duplicado" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Email no válido" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Nombre de usuario o email no válidos" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "¡Correo enviado con éxito!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "token inválido" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "La contraseña actual es obligatoria." -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "La nueva contraseña es obligatoria" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "La longitud de la contraseña debe de ser de al menos 6 caracteres" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Contraseña actual inválida" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Argumentos incompletos" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Formato de imagen no válido" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3270,11 +3310,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Inválido, ¿estás seguro de que el token es correcto?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "es superusuario" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -3282,24 +3322,24 @@ msgstr "" "Otorga todos los permisos a este usuario sin necesidad de hacerlo " "explicitamente." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "nombre de usuario" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Obligatorio. 30 caracteres o menos. Letras, números y /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Introduce un nombre de usuario válido" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "activo" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3307,55 +3347,55 @@ msgstr "" "Denota a los usuarios activos. Desmárcalo para dar de baja/borrar a un " "usuario." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografía" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "foto" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "fecha de registro" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "idioma por defecto" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "tema por defecto" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "zona horaria por defecto" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "añade color a las etiquetas" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "token de email" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nueva dirección de email" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "permisos" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "no válido" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Nombre de usuario inválido. Prueba con otro." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Nombre de usuario o contraseña inválidos." @@ -3546,47 +3586,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "¡Te hemos Taigaizado!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "No existe ningún rol con este id" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "Violación de una restricción de unicidad. La clave '{}' ya existe." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "clave" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "clave secreta" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "código de estado" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "datos de petición" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "cabeceras de la petición" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "datos de respuesta" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "cabeceras de la respuesta" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "duración" diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index d5b2f5b6..49862fc8 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Finnish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/fi/)\n" @@ -20,163 +20,163 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Julkinen rekisteri on suljettu." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "väärä rekisterin tyyppi" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "väärä kirjautumistyyppi" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "tuntematon käyttäjänimi" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "" "Vaaditaan. Korkeintaan 255 merkkiä. Kirjaimia, numeroita /./-/_ merkkejä'" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Käyttäjänimi on varattu." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Sähköposti on jo varattu." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Tunniste ei vastaa mihinkään avoimeen kutsuun." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Käyttäjä on jo rekisteröitynyt." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Virhe käyttäjän luonnissa." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Väärä tunniste" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Pakollinen kenttä." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Virheellinen arvo." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "'%s' pitää olla True tai False." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Anna kelvollinen 'avain' joka koostuu merkeistä, numeroista, alaviivoista ja " "tavuviivoista." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Valitse kelvollinen valinta. %(value)s ei ole yksi vaihtoehdoista." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Anna voimassaoleva sähköpostiosoite." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "Päivämäärä on väärässä muodossa. Käytä yhtä näistä muodoista: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "Päiväys on väärässä muodossa. Käytä yhtä näistä muodoista: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "Aika on väärässä muodossa. Käytä yhtä näistä muodoista: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Anna kokonaisluku." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Varmista että arvo on korkeintaan %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Varmista että arvo on vähintään %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" pitää olla desimaaliluku." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Anna numero." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Anna korkeintaan %s numeroa yhteensä." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Desimaaleja voi olla korkeintaan %s." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Ennen desimaalipistettä saa olla korkeintaan %s numeroa." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Tiedostoa ei lähtetty. Varmista merkistö lomakkeella." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Tiedostoa ei lähetetty." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Tiedosto oli tyhjä." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" "Tiedoston nimi saa olla korkeintaan %(max)d pitkä se on nyt %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Valitse tiedosto tai Poista valintaneliö, ei molempia." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -184,151 +184,151 @@ msgstr "" "Anna kelvollinen kuva. Annettu ei ollut tunnistettava kuva tai se oli " "vioittunut." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Sivu ei ole 'viimeinen', ekä sitä pystytä muuntamaan numeroksi." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Virheellinen sivu (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Virheellinen oikeuksien määrittely." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Virheellinen pk '%s' - sitä ei löydy." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Väärä tyyppi. Odotetaan pk-arvoa, vastaanotettu %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Kohdetta jossa %s=%s ei ole." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Viallinen linkki - URL ei löydy" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Viallinen linkki - URL ei löydy" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Virheellinen linkki konfiguraatiovirheen takia" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Virheellinen linkki - kohdetta ei löydy." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Väärä tyyppi. Odotan URL-merkkijonoa, sain %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Virheellinen data" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Syöte puuttuu" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "En voi luoda uutta kohdetta, vain olemassaolevat voidaan päivittää." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Anna lista kohteista." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Ei löytynyt" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Ei käyttöoikeutta" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Palvelinsovelluksen virhe" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Yhteysvirhe." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Virheellinen pyyntö." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Virheelliset tunnistautumistiedot." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Kirjautumistiedot puuttuvat." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Sinulla ei ole tähän oikeuksia." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Method '%s' not allowed." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Could not satisfy the request's Accept header" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Unsupported media type '%s' in request." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Request was throttled." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Tulee saataville %d sekunttia %s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Odottamaton virhe" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Ei löytynyt." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Method not supported for this endpoint." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Väärät argumentit." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Data validation error" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Integrity Error for wrong or invalid arguments" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Precondition error" @@ -336,12 +336,12 @@ msgstr "Precondition error" msgid "Error in filter params types." msgstr "Error in filter params types." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' must be an integer value." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "avainsanat" @@ -479,100 +479,100 @@ msgstr "" "\n" "Kommentti: %(comment)s" -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Tarvitaan tiedosto" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Virheellinen tiedostomuoto" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "virhe projektidatan tuonnissa" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "virhe atribuuttilistan tuonnissa" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "virhe oletusarvojen tuonnissa" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "virhe omien arvojen tuonnissa" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "virhe roolien tuonnissa" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "virhe jäsenyyksien tuonnissa" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "virhe kierroksien tuonnissa" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "virhe wiki-sivujen tuonnissa" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "virhe viki-linkkien tuonnissa" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "virhe pyyntöjen tuonnissa" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "virhe käyttäjätarinoiden tuonnissa" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "virhe tehtävien tuonnissa" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "virhe avainsanojen sisäänlukemisessa" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "virhe aikajanojen tuonnissa" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" ei löytynyt tästä projektista" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Virheellinen sisältä, pitää olla muodossa {\"avain\": \"arvo\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Sisältää vieheellisiä omia kenttiä." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Nimi on tuplana projektille" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Virhe tiedoston luonnissa" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Virhe tiedoston latauksessa" @@ -808,76 +808,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Projetkisi tiedosto on luettu sisään" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "nimi" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "kuvaus" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "koko nimi" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "sähköpostiosoite" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "kommentti" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "luontipvm" @@ -909,7 +909,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Lisätiedot" @@ -943,39 +943,39 @@ msgstr "" "\n" "[Taiga] Palautetta käyttäjältä %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "The payload is not a valid json" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Projektia ei löydy" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Virheellinen allekirjoitus" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "Viitattu elementtiä ei löydy" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "Tilaa ei löydy" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Tila muutettu BitBucket kommitilla" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Virheellinen pyynnön tieto" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -986,17 +986,17 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Virheellinen pyynnön kommentin tieto" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1007,7 +1007,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1015,7 +1015,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1026,11 +1026,11 @@ msgstr "" "@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Tila muutettu GitHub commitin toimesta." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1047,11 +1047,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Pyyntö luotu GitHubista" -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1068,7 +1068,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1079,15 +1079,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Tila muutettu GitLab kommitilla" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Luotu GitLabissa" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1098,7 +1098,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1106,308 +1106,316 @@ msgid "" "{message}" msgstr "" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Katso projektia" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Katso virstapylvästä" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Katso käyttäjätarinoita" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Katso tehtäviä" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Katso pyyntöjä" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Katso wiki-sivuja" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Katso wiki-linkkejä" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Pyydä jäsenyyttä" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Lisää käyttäjätarina projektiin" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Lisää kommentteja käyttäjätarinoihin" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Lisää kommentteja tehtäviin" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Lisää pyyntöjä" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Lisää kommentteja pyyntöihin" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Lisää wiki-sivu" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Muokkaa wiki-sivua" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Lisää wiki-linkki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Muokkaa wiki-linkkiä" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Lisää virstapylväs" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Muokkaa virstapyvästä" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Poista virstapylväs" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Katso käyttäjätarinaa" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Lisää käyttäjätarina" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Muokkaa käyttäjätarinaa" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Poista käyttäjätarina" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Lisää tehtävä" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Muokkaa tehtävää" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Poista tehtävä" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Lisää pyyntö" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Muokkaa pyyntöä" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Poista pyyntö" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Poista wiki-sivu" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Poista wiki-linkki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Muokkaa projekti" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Lisää jäsen" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Poista jäsen" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Poista projekti" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Hallinnoi projektin arvoja" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Hallinnoi rooleja" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Puutteelliset argumentit" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Väärä kuvaformaatti" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Virheellinen mallipohjan nimi" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Virheellinen mallipohjan kuvaus" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Vähintään yhden käyttäjän pitää olla aktiivinen ylläpitäjä" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Sinulla ei ole oikeuksia nähdä tätä." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "Projekti ID ei vastaa kohdetta ja projektia" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "omistaja" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "projekti" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "sisältötyyppi" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "objekti ID" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "muokkauspvm" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "liite" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "on poistettu" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "order" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "tyyppi" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "arvot" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "käyttäjätarina" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "tehtävä" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "pyyntö" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Nimi on jo olemassa" -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Kommentti on jo poistettu" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Kommenttia ei poistettu" @@ -1475,7 +1483,7 @@ msgstr "poistettu" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Tekijä puuttuu" @@ -1522,120 +1530,115 @@ msgstr "Keneltä:" msgid "To:" msgstr "Kenelle:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "sisältö" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "suljettu muistiinpano" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Sinulla ei ole oikeuksia laittaa kierrosta tälle pyynnölle." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Sinulla ei ole oikeutta asettaa statusta tälle pyyntö." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "Sinulla ei ole oikeutta asettaa vakavuutta tälle pyynnölle." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "Sinulla ei ole oikeutta asettaa kiireellisyyttä tälle pyynnölle." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Sinulla ei ole oikeutta asettaa tyyppiä tälle pyyntö." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "viittaus" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "tila" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "vakavuus" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "kiireellisyys" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "virstapylväs" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "loppupvm" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "aihe" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "tekijä" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "ulkoinen viittaus" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "hukka-aika" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "arvioitu alkupvm" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "arvioitu loppupvm" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "on suljettu" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibility" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "Alkuajan pitää olla ennen loppuaikaa." @@ -1643,230 +1646,275 @@ msgstr "Alkuajan pitää olla ennen loppuaikaa." msgid "There's no sprint with that id" msgstr "Kierrosta tällä ID:llä ei ole" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "on lukittu" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' parametri on pakollinen" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project' parametri on pakollinen" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "sähköposti" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "luo täällä" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "tunniste" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "kutsun lisäteksti" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "käyttäjäjärjestys" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "Käyttäjä on jo projektin jäsen" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "oletuspisteet" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "oletus Kt tila" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "oletus tehtävän tila" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "oletus kiireellisyys" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "oletus vakavuus" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "oletus pyynnön tila" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "oletus pyyntö tyyppi" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "jäsenet" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "virstapyväitä yhteensä" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "käyttäjätarinan yhteispisteet" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "aktiivinen odottavien paneeli" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "aktiivinen kanban-paneeli" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "aktiivinen wiki-paneeli" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "aktiivinen pyyntöpaneeli" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "videokokous järjestelmä" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "luo mallipohja" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "vieraan oikeudet" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "käyttäjän oikeudet" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "on yksityinen" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "avainsanojen värit" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "moduulien asetukset" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "on arkistoitu" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "väri" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "työn alla olevien max" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "arvo" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "oletus omistajan rooli" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "oletus optiot" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "kt tilat" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "pisteet" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "tehtävän tilat" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "pyyntöjen tilat" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "pyyntötyypit" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "kiireellisyydet" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "vakavuudet" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "roolit" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "luontipvm" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "päivityspvm" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "moduulien asetukset" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "on arkistoitu" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "väri" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "työn alla olevien max" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "arvo" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "oletus omistajan rooli" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "oletus optiot" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "kt tilat" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "pisteet" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "tehtävän tilat" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "pyyntöjen tilat" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "pyyntötyypit" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "kiireellisyydet" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "vakavuudet" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "roolit" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "luontipvm" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "historian kohteet" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "ilmoita käyttäjille" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Ilmoita olemassaolosta määritellyille käyttäjille ja projektille" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "" @@ -2587,103 +2635,103 @@ msgstr "" "\n" "[%(project)s] Poistettiin wiki-sivu \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Vahdit sisältävät virheellisiä käyttäjiä" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "Versio pitää olla kokonaisluku" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "Versio ei ole sama kuin nykyinen" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "versio" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Et voi jättää projektia, jos olet ainoa omistaja" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Sähköpostiosoite on jo käytössä" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Virheellinen rooli projektille" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Oletusoptiot" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Käyttäjätarinatilat" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Pisteet" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Tehtävien tilat" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Pyyntöjen tilat" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "pyyntötyypit" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Kiireellisyydet" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Vakavuudet" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Roolit" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Tuleva kierros" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Projektin loppu" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "kt järjestys" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "tehtävätaulun järjestys" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "on hidaste" @@ -2840,12 +2888,12 @@ msgstr "" "[Taiga] Lisätty projektiin '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2861,12 +2909,12 @@ msgstr "" "kasvaa ja muuttua kun tuotteesta ja asiakkaista opitaan lisää." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2879,350 +2927,342 @@ msgstr "" "jäsenille." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Uusi" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Valmis" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "Työn alla" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Valmis testattavaksi" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Tehty" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Arkistoitu" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Suljettu" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Tarvitsee lisätietoja" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Siirretty odottamaan" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Hylätty" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Virhe" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Kysymys" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Uusi ominaisuus" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Matala" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normaali" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Korkea" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Toivelista" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Vähäpätöinen" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Tärkeä" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Kriittinen" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "Käyttäjäkokemus" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Suunnittelu" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Edusta" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Palvelin" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Tuoteomistaja" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Sidosryhmä" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rooli" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "odottavien listan järjestys" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "kierros järjestys" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "loppupvm" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "on asiakkaan vaatimus" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "on tiimin vaatimus" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "luotu pyynnöstä" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "En löydä käyttäjätarinaa tällä id:llä" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "En löydä projektia tällä id:llä" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "En löydä käyttäjätarinan tilaa tällä id:llä" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "En löydä tehtävän tilaa tällä id:llä" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Ääniä" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Äänestä" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "'content' parametri on pakollinen" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "'project_id' parametri on pakollinen" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "viimeksi muokannut" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Henkilökohtaiset tiedot" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Oikeudet" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Tärkeät päivämäärät" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Sähköposti on jo olemassa" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Virheellinen sähköposti" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Tuntematon käyttäjänimi tai sähköposti" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Sähköposti lähetetty." -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Tunniste on virheellinen" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Nykyinen salasanaparametri tarvitaan" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Uusi salasanaparametri tarvitaan" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Salasanan pitää olla vähintään 6 merkkiä pitkä" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Virheellinen nykyinen salasana" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Puutteelliset argumentit" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Väärä kuvaformaatti" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3234,92 +3274,92 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Virheellinen, oletko varma että tunniste on oikea?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "pääkäyttäjän status" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "" "Kertoo että käyttäjä saa tehdä kaiken ilman erikseen annettuja oiekuksia." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "käyttäjänimi" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "" "Vaaditaan. Korkeintaan 30merkkiä. Kirjaimet, numerot ja merkit /./-/_ " "sallittuja" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Anna olemassa oleva käyttäjänimi." -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "aktiivinen" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "" "Käyttäjä on aktiivinen. Poista aktiivisuus käyttäjän poistamisen sijaan." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografia" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "kuva" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "liittymispvm" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "oletuskieli" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "oletus aikavyöhyke" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "väritä avainsanat" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "sähköpostitunniste" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "uusi sähköpostiosoite" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "oikeudet" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "virheellinen" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Tuntematon käyttäjänimi, yritä uudelleen." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Käyttäjätunnus tai salasana eivät ole oikein." @@ -3501,48 +3541,48 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Olet nyt Taigatettu!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "En löydä roolia tällä id:llä" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Duplicate key value violates unique constraint. Key '{}' already exists." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "key" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "secret key" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "status code" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "request data" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "request headers" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "response data" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "response headers" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "duration" diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 2b6d0801..52b5a926 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -7,9 +7,11 @@ # David Barragán , 2015 # Djyp Forest Fortin , 2015 # Florent B. , 2015 +# Gautier Ferandelle , 2016 # Louis-Michel Couture , 2015 # Matthieu Durocher , 2015 # naekos , 2015 +# Nicolas Minelle , 2016 # Nlko , 2015 # Regis TEDONE , 2015 # Stéphane Mor , 2015 @@ -18,8 +20,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: French (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/fr/)\n" @@ -29,160 +31,160 @@ msgstr "" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "L'inscription publique est désactivée." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "type d'inscription invalide" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "type d'identifiant invalide" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "nom d'utilisateur invalide" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "" "Requis. 255 caractères ou moins. Lettres, chiffres et caractères /./-/_'" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Ce nom d'utilisateur est déjà utilisé." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Cette adresse email est déjà utilisée." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Le jeton ne correspond à aucune invitation." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Cet utilisateur est déjà inscrit." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "Cet utilisateur est déjà membre de ce projet." -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Erreur à la création du nouvel utilisateur." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Jeton invalide" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Ce champ est requis." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Valeur invalide." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "La valeur de '%s' doit être soit Vrai soit Faux." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Entrez un 'slug' valide composé de lettres, chiffres, tirets bas ou traits " "d'union." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Sélectionnez une option valide. %(value)s ne fait pas partie des choix " "possibles." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Entrez une adresse email valide." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "" "Le format de la date est mauvais. Utilisez un de ces formats à la place: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" "Le format de l'horodatage est mauvais. Utilisez un de ces formats à la " "place: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" "Le format de l'heure est mauvais. Utilisez un de ces formats à la place: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Entrez un nombre entier." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "" "Assurez-vous que cette valeur est inférieure ou égale à %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "" "Assurez-vous que cette valeur est supérieure ou égale à %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "La valeur de \"%s\" doit être un nombre en virgule flottante." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Entrez un nombre." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres au total." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Assurez-vous qu'il n'y a pas plus de %s décimales." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Assurez-vous qu'il n'y a pas plus de %s chiffres avant le point." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Aucun fichier n'a été soumis. Vérifiez l'encodage sur le formulaire. " -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Aucun fichier n'a été soumis." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Le fichier soumis est vide." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -190,13 +192,13 @@ msgstr "" "Assurez-vous que le nom de fichier comporte au plus %(max)d caractères (il " "en a %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" "Veuillez soit soumettre un fichier ou cocher la case de remise à zéro, mais " "pas les deux." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -204,155 +206,155 @@ msgstr "" "Envoyez une image valide. Le fichier que vous avez envoyé n'était pas une " "image ou était une image corrompue." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "" "La page n'est pas la \"dernière\", et ne peut pas non plus être convertie en " "entier." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Page invalide (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Définition de permission invalide." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Pk '%s' invalide - l'objet n'existe pas." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Type incorrect. Valeur pk attendue, %s reçu." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "L'objet pour lequel %s=%s n'existe pas." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Hyperlien invalide - aucune correspondance d'URL." -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Hyperlien invalide - Correspondance d'URL incorrecte." -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Hyperlien invalide dû à une erreur de configuration" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Hyperlien invalide - l'objet n'existe pas." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Type incorrect. Chaîne URL attendu, %s reçu." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Donnée invalide" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Aucune entrée fournie" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Impossible de créer un nouvel élément, seuls les éléments existants peuvent " "être mis à jour." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Une liste d'éléments était attendue." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Non trouvé" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Permission refusée" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Erreur du serveur d'application" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Erreur de connexion." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Requête mal formée." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Informations de connexion incorrects." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Informations d'authentification manquantes." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Vous n'avez pas l'autorisation d'effectuer cette action." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "La méthode %s n'est pas autorisée" -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Impossible de satisfaire l'en-tête Accept" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Type de média %s non pris en charge dans la requête." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "La requête a été limitée" -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Disponible dans %d seconde%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Erreur inattendue" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Non trouvé." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Méthode non supportée par ce point d'entrée" -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Arguments invalides." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Erreur de validation des données" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Erreur d'intégrité ou arguments invalides" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Erreur de précondition" @@ -360,12 +362,12 @@ msgstr "Erreur de précondition" msgid "Error in filter params types." msgstr "Erreur dans les types de paramètres de filtres" -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' doit être une valeur entière." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tags" @@ -509,101 +511,101 @@ msgstr "" " Commentaire : %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Veuillez sélectionner au moins un rôle." -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Fichier de dump obligatoire" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Format de dump invalide" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "Erreur lors de l'importation de données" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "erreur lors de l'importation des listes des attributs de projet" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "" "erreur lors de l'importation des valeurs par défaut des attributs de projet" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "Erreur à l'importation des champs personnalisés" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "Erreur à l'importation des rôles" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "Erreur à l'importation des groupes d'utilisateurs" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "Erreur lors de l'importation des sprints." -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "Erreur à l'importation des pages Wiki" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "Erreur à l'importation des liens Wiki" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "erreur à l'importation des problèmes" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "erreur à l'importation des histoires utilisateur" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "Erreur lors de l'importation des tâches." -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "erreur lors de l'importation des mots-clés" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "erreur lors de l'import des timelines" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" non trouvé dans the projet" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Format non valide. Il doit être de la forme {\"cle\": \"valeur\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Contient des champs personnalisés non valides." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Nom dupliqué pour ce projet" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Error dans la génération du dump du projet" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Erreur au chargement du dump du projet" @@ -740,6 +742,16 @@ msgid "" "

The Taiga Team

\n" " " msgstr "" +"\n" +"

%(error_message)s

\n" +"

Bonjour %(user)s,

\n" +"

Votre projet n'a pas été importé correctement.

\n" +"

L'administrateur système de Taiga en a été informé.
Merci " +"d'essayer à nouveau ou de contacter le support à \n" +" %(support_email)s

\n" +"

L'équipe Taiga

\n" +" " #: taiga/export_import/templates/emails/import_error-body-text.jinja:1 #, python-format @@ -758,6 +770,19 @@ msgid "" "---\n" "The Taiga Team\n" msgstr "" +"\n" +"Bonjour %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Votre projet n'a pas été importé correctement.\n" +"\n" +"L'administrateur système de Taiga en a été informé.\n" +"\n" +"Merci d'essayer à nouveau ou de contacter le support à %(support_email)s\n" +"\n" +"---\n" +"L'équipe Taiga\n" #: taiga/export_import/templates/emails/import_error-subject.jinja:1 #, python-format @@ -798,76 +823,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Votre projet à été importé" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" -msgstr "" +msgstr "Authentification requise" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "nom" -#: taiga/external_apps/models.py:35 -msgid "Icon url" -msgstr "" - #: taiga/external_apps/models.py:36 -msgid "web" -msgstr "" +msgid "Icon url" +msgstr "Url de l'icône" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:37 +msgid "web" +msgstr "web" + +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "description" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" -msgstr "" +msgstr "Url suivante" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "utilisateur" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "application" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "Nom complet" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "Adresse email" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "Commentaire" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "Date de création" @@ -897,7 +922,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Informations supplémentaires" @@ -931,39 +956,39 @@ msgstr "" "\n" "[Taiga] Réaction de %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "Le payload n'est pas un json valide" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Le projet n'existe pas" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Signature non valide" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "L'élément référencé n'existe pas" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "L'état n'existe pas" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Statut changé depuis un commit BitBucket" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Information incorrecte sur le problème" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -974,17 +999,17 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." -msgstr "" +msgstr "Ticket créé depuis BitBucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Ignoré" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -995,15 +1020,18 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" "\n" "{message}" msgstr "" +"Commentaire depuis BitBucket :\n" +"\n" +"{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1011,11 +1039,11 @@ msgid "" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." msgstr "" -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Statut changé depuis un commit GitHub." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1026,11 +1054,11 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Suivi de problème créé à partir de GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1041,7 +1069,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1052,15 +1080,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Statut changé depuis un commit GitLab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Créé à partir de GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1071,7 +1099,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1079,308 +1107,316 @@ msgid "" "{message}" msgstr "" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Consulter le projet" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Voir les jalons" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Voir les histoires utilisateur" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Consulter les tâches" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Voir les problèmes" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Consulter les pages Wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Consulter les liens Wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Demander à devenir membre" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Ajouter l'histoire utilisateur au projet" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Ajouter des commentaires aux histoires utilisateur" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Ajouter des commentaires à une tâche" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Ajouter des problèmes" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Ajouter des commentaires aux problèmes" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Ajouter une page Wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Modifier une page Wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Ajouter un lien Wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modifier un lien Wiki" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Ajouter un jalon" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modifier le jalon" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Supprimer le jalon" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Voir l'histoire utilisateur" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Ajouter une histoire utilisateur" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modifier l'histoire utilisateur" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Supprimer l'histoire utilisateur" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Ajouter une tâche" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modifier une tâche" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Supprimer une tâche" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Ajouter un problème" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modifier le problème" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Supprimer le problème" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Supprimer une page Wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Supprimer un lien Wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modifier le projet" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Ajouter un membre" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Supprimer un membre" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Supprimer le projet" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Administrer les paramètres du projet" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Administrer les rôles" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "arguments manquants" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "format de l'image non valide" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Nom de modèle non valide" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Description du modèle non valide" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Au moins un utilisateur doit être un administrateur actif" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Vous n'avez pas les permissions pour consulter cet élément" -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" -msgstr "" +msgstr "Mises à jour partielles non supportées" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "L'identifiant du projet de correspond pas entre l'objet et le projet" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "propriétaire" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "projet" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "type du contenu" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "identifiant de l'objet" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "état modifié" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "pièces jointes" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" -msgstr "" +msgstr "sha1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "est obsolète" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "ordre" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 -msgid "Custom" -msgstr "" - #: taiga/projects/choices.py:24 +msgid "Custom" +msgstr "Personnalisé" + +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Texte" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Texte multi-ligne" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" -msgstr "" +msgstr "Date" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "type" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "valeurs" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "histoire utilisateur" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "tâche" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "problème" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Un élément de même nom existe déjà" -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Commentaire déjà supprimé" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Commentaire non supprimé" @@ -1448,7 +1484,7 @@ msgstr "supprimé" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Non assigné" @@ -1495,120 +1531,115 @@ msgstr "De :" msgid "To:" msgstr "A :" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "contenu" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "note bloquée" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Vous n'avez pas la permission d'affecter ce sprint à ce problème." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Vous n'avez pas la permission d'affecter ce statut à ce problème." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "Vous n'avez pas la permission d'affecter cette sévérité à ce problème." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "Vous n'avez pas la permission d'affecter cette priorité à ce problème." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Vous n'avez pas la permission d'affecter ce type à ce problème." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "réf" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "état" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "sévérité" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "priorité" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "jalon" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "date de fin" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "sujet" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "assigné à" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "référence externe" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Aime" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Aimer" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Aime" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "date de démarrage estimée" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "date de fin estimée" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "est fermé" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibilité" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "La date de démarrage doit être antérieure à la de fin prévisionnelle" @@ -1616,232 +1647,277 @@ msgstr "La date de démarrage doit être antérieure à la de fin prévisionnell msgid "There's no sprint with that id" msgstr "Il n'y a pas de sprint avec cet id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "est bloqué" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' paramètre obligatoire" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project' paramètre obligatoire" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "email" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "Créé le" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "jeton" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "Text supplémentaire de l'invitation" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "classement utilisateur" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "L'utilisateur est déjà un membre du projet" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "Points par défaut" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "statut de l'HU par défaut" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "Etat par défaut des tâches" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "Priorité par défaut" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "Sévérité par défaut" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "statut du problème par défaut" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "type de problème par défaut" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "membres" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "total des jalons" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "total des points d'histoire" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "panneau backlog actif" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "panneau kanban actif" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "panneau wiki actif" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "panneau problèmes actif" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "plateforme de vidéoconférence" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" -msgstr "" +msgstr "données complémentaires pour la salle de vidéoconférence" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "Modèle de création" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "Permissions anonymes" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "Permission de l'utilisateur" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "est privé" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "couleurs des tags" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "Configurations des modules" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "est archivé" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "couleur" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "limite de travail en cours" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "valeur" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "rôle par défaut du propriétaire" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "options par défaut" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "statuts des us" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "points" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "états des tâches" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "statuts des problèmes" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "types de problèmes" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "priorités" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "sévérités" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "rôles" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "date de création" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "date de mise à jour" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "Configurations des modules" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "est archivé" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "couleur" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "limite de travail en cours" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "valeur" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "rôle par défaut du propriétaire" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "options par défaut" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "statuts des us" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "points" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "états des tâches" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "statuts des problèmes" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "types de problèmes" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "priorités" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "sévérités" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "rôles" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Impliqué" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Aucun" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "date de création" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "entrées dans l'historique" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "notifier les utilisateurs" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Suivre" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "La notification existe pour l'utilisateur et le projet spécifiés" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" -msgstr "" +msgstr "Valeur non valide pour le niveau de notification" #: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 #, python-format @@ -1855,6 +1931,14 @@ msgid "" "%(subject)s in Taiga\">See issue\n" " " msgstr "" +"\n" +"

Ticket mis à jour

\n" +"

Salut %(user)s,
%(changer)s a mis à jour un ticket sur " +"%(project)s

\n" +"

Ticket #%(ref)s %(subject)s

\n" +" Voir ticket\n" +" " #: taiga/projects/notifications/templates/emails/issues/issue-change-body-text.jinja:3 #, python-format @@ -1871,6 +1955,8 @@ msgid "" "\n" "[%(project)s] Updated the issue #%(ref)s \"%(subject)s\"\n" msgstr "" +"\n" +"[%(project)s] Ticket #%(ref)s \"%(subject)s\" mis à jour\n" #: taiga/projects/notifications/templates/emails/issues/issue-create-body-html.jinja:4 #, python-format @@ -2332,104 +2418,104 @@ msgstr "" "\n" "[%(project)s] Page Wiki \"%(page)s\" supprimée\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "La liste des observateurs contient des utilisateurs invalides" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "La version doit être un nombre entier" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "La version ne correspond pas à la version courante" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "version" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "" "Vous ne pouvez pas quitter le projet si il n'y a plus d'autres propriétaires" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Adresse email déjà existante" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Rôle non valide pour le projet" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Options par défaut" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Etats de la User Story" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Points" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Etats des tâches" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Statuts des problèmes" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Types de problèmes" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Priorités" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Sévérités" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Rôles" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Sprint futurs" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Fin du projet" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "ordre des us" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "order du tableau de tâches" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "est de l'iocaine" @@ -2571,12 +2657,12 @@ msgstr "" "[Taiga] Ajouté au projet '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2594,12 +2680,12 @@ msgstr "" "sur le produit et sur ses utilisateurs." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2613,350 +2699,342 @@ msgstr "" "qui peuvent le consulter et y puiser leur travail." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Nouveau" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Prêt" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "En cours" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Prêt à tester" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Fait" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Archivé" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Fermé" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Infos manquantes" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Repoussé" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Rejeté" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Bug" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Question" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Amélioration" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Faible" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normal" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Fort" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Souhaits" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Mineur" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Important" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Critique" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "Expérience utilisateur" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Product Owner" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Participant" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rôle" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "order du backlog" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "ordre du sprint" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "date de fin" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "est un requis client" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "est un requis de l'équipe" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "généré depuis un problème" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Il n'y a pas d'user story avec cet id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Aucun projet avec cet identifiant" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Il n'y a pas de statut d'user story avec cet id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Il n'y a pas de statut de tâche avec cet id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Votes" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "vote" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "'content' paramètre obligatoire" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "'project_id' paramètre obligatoire" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "dernier modificateur" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Informations personnelles" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Permissions" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Dates importantes" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Email dupliquée" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Email non valide" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Nom d'utilisateur ou email non valide" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Mail envoyé avec succès!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Jeton invalide" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Paramètre 'mot de passe actuel' requis" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Paramètre 'nouveau mot de passe' requis" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Le mot de passe doit être d'au moins 6 caractères" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Mot de passe actuel incorrect" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "arguments manquants" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "format de l'image non valide" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -2968,11 +3046,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Invalide, êtes-vous sûre que le jeton est correct ?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "statut superutilisateur" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -2980,25 +3058,25 @@ msgstr "" "Indique que l'utilisateur a toutes les permissions sans avoir à lui les " "donner explicitement" -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "nom d'utilisateur" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "" "Obligatoire. 30 caractères maximum. Lettres, nombres et les caractères /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Entrez un nom d'utilisateur valide" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "actif" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3006,55 +3084,55 @@ msgstr "" "Indique qu'un utilisateur est considéré ou non comme actif. Désélectionnez " "cette option au lieu de supprimer le compte utilisateur." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biographie" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "photo" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "date d'inscription" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "langage par défaut" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "thème par défaut" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "Fuseau horaire par défaut" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "changer la couleur des tags" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "jeton email" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nouvelle adresse email" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "permissions" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "invalide" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Nom d'utilisateur invalide. Essayez avec un autre nom." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Aucun utilisateur avec ce nom ou ce mot de passe." @@ -3238,47 +3316,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Vous avez été Taigarisés!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Aucun rôle avec cet identifiant" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "Violation de clé primaire. La clé '{}' existe déjà." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "clé" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "clé secrète" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "code retour" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "données de la requête" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "en-têtes de la requête" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "données de la réponse" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "en-têtes de la réponse" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "durée" diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index cfdfae17..39ad8cf8 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -5,6 +5,7 @@ # Translators: # Andrea Raimondi , 2015 # David Barragán , 2015 +# F B , 2016 # luca corsato , 2015 # Marco Somma , 2015 # Marco Vito Moscaritolo , 2015 @@ -13,8 +14,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Italian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/it/)\n" @@ -24,154 +25,154 @@ msgstr "" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Registro pubblico disabilitato" -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "Tipo di registro invalido" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "Tipo di login invalido" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "Username non valido" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "" "Sono richiesti 255 caratteri, o meno, contenenti: lettere, numeri e " "caratteri /./-/_ " -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Il nome utente appena scelto è già utilizzato." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "L'email inserita è già utilizzata." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Il token non corrisponde a nessun invito valido" -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "L'Utente è già registrato." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "Questo utente fa già parte del progetto." -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Errore nella creazione dell'utente." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Token non valido" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Questo campo è obbligatorio." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Valore non valido." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "il valore di '%s' deve essere o vero o falso." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Uno slug valido è composto da lettere, numeri, caratteri di sottolineatura o " "trattini" -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Seleziona un valore valido. %(value)s non è una scelta disponibile." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Inserisci un indirizzo e-mail valido." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "La data non ha un formato valido. Usa uno dei formati disponibili: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "L'orario non ha un formato valido. Usa uno dei formati disponibili: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "Formato temporale errato. Usare uno dei seguenti formati: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Inserire il numero completo." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Assicurati che il valore sia minore o uguale a %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Assicurati che il valore sia maggiore o uguale a %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "il valore \"%s\" deve essere un valore \"float\"." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Inserisci un numero" -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Assicurati che non ci siano più di %s cifre in totale." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Assicurati che non ci siano più di %s decimali." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Assicurati che non ci siano più di %s cifre prima del punto decimale." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Non è stato caricato nessun file. Controlla il tipo di codifica nella scheda." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Nessun file caricato." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Il file caricato è vuoto." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -179,12 +180,12 @@ msgstr "" "Assicurati che il nome del file abbiamo al massimo %(max)d caratteri (ne ha " "%(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" "Carica il file oppure controlla la casella deselezionata. Non entrambi. " -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -192,154 +193,154 @@ msgstr "" "Carica un'immagina valida. Il file caricato potrebbe non essere un'immagine " "o l'immagine potrebbe essere corrotta. " -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "La pagina non è 'last', né può essere convertita come int." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Pagina (%(page_number)s) invalida: %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Definizione di permesso non valida." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "pk '%s' invalido - l'oggetto non esiste" -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Inserimento scorretto. Atteso un valore pk, ricevuto %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "L'oggetto con %s=%s non esiste." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Hyperlink invalido - nessun URL abbinato" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Hyperlink invalido - l'URL abbinato non è corretto" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "URL invalido a causa di un errore di configurazione" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Hyperlink invalido - l'oggetto non esiste" -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Inserimento scorretto. Attesa una stringa con URL, ricevuto %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Dati non validi" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Non è stato fornito nessun input" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Non è possibile creare un nuovo elemento, solo quelli esistenti possono " "essere aggiornati" -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Ci si aspetta una lista di oggetti." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Non trovato" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Permesso negato" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Errore sul server" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Errore di connessione" -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Richiesta composta erroneamente." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Le credenziali non sono corrette." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Le credenziali per l'autenticazione non sono state fornite." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Non hai il permesso per eseguire l'azione. " -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Metodo '%s' non permesso." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "" "Non è possibile soddisfare la richiesta di accettazione dell'intestazione." -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Nella richiesta è presente un contenuto media '%s' non supportato." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "La richiesta è stata soppressa" -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Disponibile in %d secondi%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Errore inaspettato" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Non trovato." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Metodo non supportato dall'endpoint." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Argomento errato." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Errore di validazione dei dati" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Errore di integrità causato da un argomento invalido o sbagliato" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Errore di precondizione" @@ -347,12 +348,12 @@ msgstr "Errore di precondizione" msgid "Error in filter params types." msgstr "Errore nel filtro del tipo di parametri." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'Progetto' deve essere un valore intero." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tags" @@ -502,101 +503,101 @@ msgstr "" "\n" "Commento: %(comment)s" -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "C'è bisogno di almeno un ruolo" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "E' richiesto un file di dump" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Formato di dump invalido" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "Errore nell'importazione del progetto dati" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "Errore nell'importazione della lista degli attributi di progetto" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "" "Errore nell'importazione dei valori predefiniti degli attributi del progetto." -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "Errore nell'importazione degli attributi personalizzati" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "Errore nell'importazione i ruoli" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "Errore nell'importazione delle iscrizioni" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "errore nell'importazione degli sprints" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "Errore nell'importazione delle pagine wiki" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "Errore nell'importazione dei link di wiki" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "errore nell'importazione dei problemi" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "Errore nell'importazione delle user story" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "Errore nell'importazione dei compiti " -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "Errore nell'importazione dei tags" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "Errore nell'importazione delle timelines" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" non è stato trovato in questo progetto" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Contenuto errato. Deve essere {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Contiene campi personalizzati invalidi." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Il nome del progetto è duplicato" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Errore nella creazione del dump di progetto" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Errore nel caricamento del dump di progetto" @@ -894,76 +895,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Il dump del tuo progetto è stato importato" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "E' richiesta l'autenticazione" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "nome" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "Url dell'icona" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "web" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "descrizione" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Url successivo" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "chiave segreta per cifrare i token dell'applicazione" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "utente" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "applicazione" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "Nome completo" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "Inserisci un indirizzo e-mail valido." -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "Commento" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "data creata" @@ -993,7 +994,7 @@ msgstr "" "

%(comment)s

" #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Informazioni aggiuntive" @@ -1033,39 +1034,39 @@ msgstr "" "\n" "[Taiga] Hai un feedback da %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "Il carico non è un json valido" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Il progetto non esiste" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Firma non valida" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "L'elemento di riferimento non esiste" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "Lo stato non esiste" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Lo stato è stato modificato a seguito di un commit di BitBucket" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Informazione sul problema non valida" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1085,17 +1086,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Problema creato da BItBucket" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Commento sul problema non valido" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1115,7 +1116,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1128,7 +1129,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1139,11 +1140,11 @@ msgstr "" "@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Lo stato è stato modificato da un commit su GitHub." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1163,11 +1164,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Problema creato su GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1184,7 +1185,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1197,15 +1198,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Lo stato è stato modificato tramite commit su GitLab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Creato da GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1226,7 +1227,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1239,308 +1240,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Vedi progetto" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Guarda le milestones" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Guarda le storie utente" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Guarda i compiti" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Guarda i problemi" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Guarda le pagine wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Guarda i lik di wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Richiedi l'iscrizione" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Aggiungi una storia utente al progetto" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Aggiungi dei commenti alle storia utente" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Aggiungi dei commenti ai compiti" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Aggiungi i problemi" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Aggiungi dei commenti ai problemi" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Aggiungi una pagina wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Modifica la pagina wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Aggiungi un link wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modifica il link di wiki" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Aggiungi una tappa" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modifica la tappa" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Elimina la tappa" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Guarda la storia utente" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Aggiungi una storia utente" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modifica una storia utente" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Cancella una storia utente" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Aggiungi un compito" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modifica il compito" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Elimina compito" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Aggiungi un problema" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modifica il problema" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Elimina il problema" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Elimina la pagina wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Elimina la pagina wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modifica il progetto" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Aggiungi un membro" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Rimuovi il membro" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Elimina il progetto" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Valori dell'amministratore del progetto" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Ruoli dell'amministratore" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Argomento non valido" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Formato dell'immagine non valido" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Il nome del template non è valido" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "La descrizione del template non è valida" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Almeno uno degli utenti deve essere attivo come amministratore" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Non hai il permesso di vedere questo elemento." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "Aggiornamento non parziale non supportato" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "L'ID di progetto non corrisponde tra oggetto e progetto" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "proprietario" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "progetto" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "tipo di contenuto" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "ID dell'oggetto" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "data modificata" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "file allegato" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "sha1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "non approvato" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "ordine" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "ApparIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Personalizzato" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Testo" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Testo multi-linea" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "Data" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "tipo" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "valori" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "storia utente" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "compito" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "problema" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Ne esiste già un altro con lo stesso nome" -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Il commento è già stato eliminato" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Commento non eliminato" @@ -1608,7 +1617,7 @@ msgstr "rimosso" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Non assegnato" @@ -1655,120 +1664,115 @@ msgstr "Da:" msgid "To:" msgstr "A:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "contenuto" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "nota bloccata" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Non hai i permessi per aggiungere questo sprint a questo problema" -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Non hai i permessi per aggiungere questo stato a questo problema" -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "Non hai i permessi per aggiungere questa criticità a questo problema" -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "Non hai i permessi per aggiungere questa priorità a questo problema." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Non hai i permessi per aggiungere questa tipologia a questo problema" -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "referenza" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "stato" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "criticità" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "priorità" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "tappa" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "data di conclusione" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "soggeto" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "assegnato a" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "referenza esterna" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "conta" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Piaciuto" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Like" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Piaciuto" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "lumaca" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "data stimata di inizio" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "data stimata di fine" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "è concluso" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibilità" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "" "La data stimata di inizio deve essere precedente alla data stimata di fine." @@ -1777,230 +1781,275 @@ msgstr "" msgid "There's no sprint with that id" msgstr "Non c'è nessuno sprint on questo ID" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "è bloccato" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "il parametro '{param}' è obbligatorio" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "il parametro 'project' è obbligatorio" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "email" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "creato a " -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "testo ulteriore per l'invito" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "ordine dell'utente" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "L'utente è già membro del progetto" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "punti predefiniti" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "stati predefiniti per le storie utente" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "stati predefiniti del compito" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "priorità predefinita" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "criticità predefinita" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "stato predefinito del problema" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "tipologia predefinita del problema" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "membri" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "tappe totali" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "punti totali della storia" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "pannello di backlog attivo" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "pannello kanban attivo" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "pannello wiki attivo" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "pannello dei problemi attivo" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "sistema di videoconferenza" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "ulteriori dati di videoconferenza " -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "creazione del template" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "permessi anonimi" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "permessi dell'utente" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "è privato" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "colori dei tag" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "configurazione dei moduli" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "è archivitato" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "colore" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "limite dei lavori in corso" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "valore" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "ruolo proprietario predefinito" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "opzioni predefinite " - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "stati della storia utente" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "punti" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "stati del compito" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "stati del probema" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "tipologie del problema" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "priorità" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "criticità " - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "ruoli" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "Coinvolto" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "Tutti" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "Nessuno" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "tempo e data creati" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "tempo e data aggiornati" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "conta" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "configurazione dei moduli" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "è archivitato" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "colore" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "limite dei lavori in corso" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "valore" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "ruolo proprietario predefinito" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "opzioni predefinite " + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "stati della storia utente" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "punti" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "stati del compito" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "stati del probema" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "tipologie del problema" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "priorità" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "criticità " + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "ruoli" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Coinvolto" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Tutti" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Nessuno" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "tempo e data creati" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "inserimenti della storia" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "notifica utenti" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Osservato" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "La notifica esiste per l'utente e il progetto specificati" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Valore non valido per il livello di notifica" @@ -2861,104 +2910,104 @@ msgstr "" "\n" "[%(project)s] ha eliminato la pagina wiki \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "L'osservatore contiene un utente non valido" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "La versione deve essere un intero" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "Il parametro della versione non è valido" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "La versione non corrisponde a quella corrente" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "versione" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Non puoi abbandonare il progetto se non ci sono altri proprietari" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "L'indirizzo email è già usato" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Ruolo di progetto non valido" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Opzioni predefinite" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Stati della storia utente" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Punti" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Stati del compito" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Stati del problema" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Tipologie del problema" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Priorità" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Criticità" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Ruoli" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Sprint futuri" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Termine di progetto" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "Non hai i permessi per aggiungere questo sprint a questo compito." -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" "Non hai i permessi per aggiungere questa storia utente a questo compito." -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "Non hai i permessi per aggiungere questo stato a questo compito." -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "ordine della storia utente" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "ordine del pannello dei compiti" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "è sotto aspirina" @@ -3134,12 +3183,12 @@ msgstr "" "[Taiga] aggiunto al progetto '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -3156,12 +3205,12 @@ msgstr "" "caratteristiche del prodotto e dei suoi clienti." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -3175,351 +3224,343 @@ msgstr "" "membri del team, in modo che possano organizzare il lavoro." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Nuovo" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Pronto" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "In via di sviluppo" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Pronto per il test" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Fatto" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Archiviato" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Concluso" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Necessita di informazioni" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Postposto " #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Rifiutato" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Bug" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Domanda" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Miglioramento" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Basso" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normale" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Alto" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Lista dei desideri" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Minore" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Importante" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Critico" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Product Owner" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" "Non hai i permessi per aggiungere questo sprint a questa storia utente." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "Non hai i permessi per aggiungere questo stato a questa storia utente." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "Stiamo generando la storia utente #{ref} - {subject}" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "ruolo" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "ordine del backlog" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "ordine dello sprint" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "data di termine" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "é un requisito del cliente " -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "é una richiesta del team" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "generato da un problema" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Non c'è nessuna storia utente con questo ID" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Non c'è nessuno progetto con questo ID" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Non c'è nessuno stato della storia utente con questo ID" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Non c'è nessuno stato del compito con questo ID" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Voti" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Voto" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "il parametro 'contenuto' è obbligatorio" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "Il parametro 'ID progetto' è obbligatorio" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "ultima modificatore" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Controlla le API della storie per la differenza esatta" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Informazioni personali" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Permessi" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Date importanti" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "E-mail duplicata" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "E-mail non valida" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Username o e-mail non validi" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Mail inviata con successo!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Token non valido" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "E' necessario il parametro della password corrente" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "E' necessario il parametro della nuovo password" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Lunghezza della password non valida, sono necessari almeno 6 caratteri" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Password corrente non valida" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Argomento non valido" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Formato dell'immagine non valido" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3531,11 +3572,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Non valido. Sicuro che il token sia corretto?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "Stato del super-utente" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -3543,26 +3584,26 @@ msgstr "" "Definisce che questo utente ha tutti i permessi senza assegnarglieli " "esplicitamente." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "nome utente" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "" "Richiede 30 caratteri o meno. Deve comprendere: lettere, numeri e caratteri " "come /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Inserisci un nome utente valido." -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "attivo" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3570,55 +3611,55 @@ msgstr "" "Definisce se questo utente debba essere trattato come attivo. Deseleziona " "questo invece di eliminare gli account." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografia" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "fotografia" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "data di inizio partecipazione" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "lingua predefinita" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "tema predefinito" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "timezone predefinita" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "colora i tag" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "token e-mail" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nuovo indirizzo e-mail" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "permessi" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "non valido" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Nome utente non valido. Provane uno diverso." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Il nome utente o la password non corrispondono all'utente." @@ -3846,49 +3887,49 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Sei stato Taigazzato!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Non c'è nessuno ruolo con questo ID" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Un valore di chiave duplicato viola il vincolo unico. La chiave '{}' esiste " "già." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "chiave" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "chiave segreta" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "codice di stato" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "dati della richiesta" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "header della richiesta" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "dati della risposta" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "header della risposta" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "durata" diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po index 26e4d934..6f618bad 100644 --- a/taiga/locale/nl/LC_MESSAGES/django.po +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Dutch (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/nl/)\n" @@ -20,158 +20,158 @@ msgstr "" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Publieke registratie is uitgeschakeld." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "ongeldig registratie type" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "ongeldig login type" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "ongeldige gebruikersnaam" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Verplicht. 255 tekens of minder. Letters, nummers en /./-/_ tekens'" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Gebruikersnaame is al in gebruik." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "E-mail adres is al in gebruik." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Token stemt niet overeen met een geldige uitnodiging." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Gebruiker is al geregistreerd." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Fout bij het aanmaken van een nieuwe gebruiker." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Ongeldig token" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Dit veld is verplicht." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Ongeldige waarde." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "'%s' waarde moet True of False zijn." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Geef een geldige 'slug' in bestaande uit letters, nummers, underscores of " "koppeltekens." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Selecteer een geldige keuze. %(value)s is niet één van de aanwezige " "keuzemogelijkheden." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Voeg een geldig e-mail adres toe." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "" "Datum heeft het verkeerde formaat. Gebruik één van de volgende formaten: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" "Datum en tijd heeft het verkeerde formaat. Gebruik één van de volgende " "formaten: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" "Tijd heeft een verkeerd formaat. Gebruik één van de volgende formaten: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Geef een geheel getal in." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Zorg ervoor dat deze waarde minder of gelijk is aan %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Zorg ervoor dat deze waarde groter of gelijk is aan %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" waarde dient een float te zijn." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Geef een getal in." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Zorg ervoor dat er niet meer dan %s nummers in totaal zijn." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Zorg ervoor dat er niet meer dan %s plaatsen na de comma zijn." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Zorg ervoor dat er niet meer dan %s nummers voor de comma staan." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "" "Er was geen bestand aangegeven. Bekijken het type encoding in het formulier." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Er was geen bestand aangegeven." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Het gegeven bestand is leeg." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -179,13 +179,13 @@ msgstr "" "Zorg ervoor dat deze bestandsnaam maximaal %(max)d tekens lang is (de naam " "heeft %(length)d tekens)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "" "Gelieve ofwel een bestand mee te geven ofwel de checkbox aan te tikken, niet " "beide." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -193,152 +193,152 @@ msgstr "" "Upload een geldige afbeelding. Het bestand dat je hebt geuploadet was ofwel " "een afbeelding ofwel een corrupte afbeelding." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Pagina is niet 'last', noch kan het omgezet worden naar een int." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Ongeldige pagina (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Ongeldige definitie van permissie." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Ongeldige pk '%s' - object bestaat niet." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Incorrect type. Pk waarde werd verwacht, maar %s gekregen." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Object met %s=%s bestaat niet." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Ongeldige hyperlink - Geen URL match" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Ongeldige hyperlink - Incorrecte URL match" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Ongeldige hyperlink door configuratiefout" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Ongeldige hyperlink - object bestaat niet." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Incorrect type. Url string werd verwacht, maar %s gekregen." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Ongeldige data" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Geen input gegeven" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Kan geen nieuw item aanmaken, enkel bestaande items mogen bijgewerkt worden." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Verwachtte een lijst van items." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Niet gevonden" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Toestemming geweigerd" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Server applicatie fout" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Verbindingsfout." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Slecht gevormde request." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Incorrecte authenticatie gegevens." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Authenticatie gegevens werden niet gegeven." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Je hebt geen toestemming om deze actie te ondernemen." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Methode '%s' is niet toegestaan." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Kon niet voldoen aan de Accept header van de request" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Niet ondersteund media type '%s' in de request." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Request werd gethrottled." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Verwachtte beschikbaarheid in %d second%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Onverwachte fout" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Niet gevonden." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Methode niet ondersteund voor dit endpoint." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Verkeerde argumenten." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Data validatie fout" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Integriteitsfout voor verkeerde of ongeldige argumenten" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Preconditie fout" @@ -346,12 +346,12 @@ msgstr "Preconditie fout" msgid "Error in filter params types." msgstr "Fout in filter params types." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' moet een integer waarde zijn." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tags" @@ -492,100 +492,100 @@ msgstr "" " Commentaar: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "We hadden minstens één rol nodig" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Dump file nodig" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Ongeldig dump formaat" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "fout bij het importeren van project data" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "fout bij importeren van project attributenlijst" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "fout bij importeren van standaard projectattributen waarden" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "fout bij importeren eigen attributen" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "fout bij importeren rollen" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "fout bij importeren lidmaatschappen" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "fout bij importeren sprints" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "fout bij importeren wiki pagina's" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "fout bij importeren wiki links" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "fout bij importeren issues" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "fout bij importeren user stories" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "fout bij importeren taken" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "fout bij importeren tags" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "fout bij importeren tijdlijnen" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" niet gevonden in dit project" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Ongeldige inhoud. Volgend formaat geldt {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Het bevat ongeldige eigen velden:" -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Naam gedupliceerd voor het project" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Fout bij genereren project dump" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Fout bij laden project dump" @@ -758,76 +758,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Je project dump is geïmporteerd" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "naam" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "omschrijving" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "volledige naam" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "e-mail adres" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "commentaar" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "aanmaakdatum" @@ -858,7 +858,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Extra info" @@ -892,39 +892,39 @@ msgstr "" "\n" "[Taiga] Feedback van %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "De payload is geen geldige json" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Het project bestaat niet" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Slechte signature" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "Het element waarnaar verwezen wordt bestaat niet" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "De status bestaat niet" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Status veranderd door Bitbucket commit" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Ongeldige issue informatie" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -935,17 +935,17 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Ongeldige issue commentaar informatie" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -956,7 +956,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -964,7 +964,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -972,11 +972,11 @@ msgid "" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." msgstr "" -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Status veranderd door GitHub commit." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -987,11 +987,11 @@ msgid "" "{description}" msgstr "" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Issue aangemaakt via GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1002,7 +1002,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1013,15 +1013,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Status veranderd door GitLab commit" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Aangemaakt via GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1032,7 +1032,7 @@ msgid "" "{message}" msgstr "" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1040,308 +1040,316 @@ msgid "" "{message}" msgstr "" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Bekijk project" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Bekijk milestones" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Bekijk user stories" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Bekijk taken" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Bekijk issues" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Bekijk wiki pagina's" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Bekijk wiki links" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Vraag lidmaatschap aan" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Voeg user story toe aan project" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Voeg commentaar toe aan user stories" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Voeg commentaar toe aan taken" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Voeg issues toe" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Voeg commentaar toe aan issues" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Voeg wiki pagina toe" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Wijzig wiki pagina" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Voeg wiki link toe" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Wijzig wiki link" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Voeg milestone toe" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Wijzig milestone" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Verwijder milestone" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Bekijk user story" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Voeg user story toe" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Wijzig user story" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Verwijder user story" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Voeg taak toe" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Wijzig taak" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Verwijder taak" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Voeg issue toe" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Wijzig issue" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Verwijder issue" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Verwijder wiki pagina" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Verwijder wiki link" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Wijzig project" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Voeg lid toe" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Verwijder lid" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Verwijder project" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Admin project waarden" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Admin rollen" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Onvolledige argumenten" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Ongeldig afbeelding formaat" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Ongeldige template naam" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Ongeldige template omschrijving" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Minstens één van de gebruikers moet een active admin zijn" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Je hebt geen toestamming om dat te bekijken." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "Project ID van object is niet gelijk aan die van het project" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "eigenaar" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "project" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "inhoud type" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "object id" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "gemodifieerde datum" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "bijgevoegd bestand" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "is verouderd" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "volgorde" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "type" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "waarden" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "user story" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "taak" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "issue" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Er bestaat er al één met dezelfde naam." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Commentaar is al verwijderd" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Commentaar niet verwijderd" @@ -1409,7 +1417,7 @@ msgstr "verwijderd" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Niet toegewezen" @@ -1456,122 +1464,117 @@ msgstr "Van:" msgid "To:" msgstr "Naar:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "inhoud" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "geblokkeerde notitie" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Je hebt geen toestemming om deze sprint op deze issue te zetten." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Je hebt geen toestemming om deze status toe te kennen aan dze issue." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "" "Je hebt geen toestemming om dit ernstniveau toe te kennen aan deze issue." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "" "Je hebt geen toestemming om deze prioriteit toe te kennen aan deze issue." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Je hebt geen toestemming om dit type toe te kennen aan deze issue." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "status" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "erstniveau" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "prioriteit" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "milestone" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "datum van afwerking" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "onderwerp" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "toegewezen aan" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "externe referentie" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Personen die dit leuk vinden" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Vind ik leuk" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Personen die dit leuk vinden" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "geschatte start datum" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "geschatte datum van afwerking" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "is gesloten" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "beschikbaarheid" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "The geschatte start moet vroeger zijn dan het geschatte einde." @@ -1579,230 +1582,275 @@ msgstr "The geschatte start moet vroeger zijn dan het geschatte einde." msgid "There's no sprint with that id" msgstr "Er is geen sprint met dat id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "is geblokkeerd" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' parameter is verplicht" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project' parameter is verplicht" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "e-mail" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "aangemaakt op" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "uitnodiging extra text" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "gebruiker volgorde" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "The gebruikers is al lid van het project" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "standaard punten" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "standaard US status" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "default taak status" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "standaard prioriteit" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "standaard ernstniveau" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "standaard issue status" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "standaard issue type" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "leden" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "totaal van de milestones" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "totaal story points" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "actief backlog paneel" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "actief kanban paneel" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "actief wiki paneel" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "actief issues paneel" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "videoconference systeem" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "aanmaak template" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "anonieme toestemmingen" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "gebruikers toestemmingen" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "is privé" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "tag kleuren" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "module config" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "is gearchiveerd" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "kleur" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "work in progress limiet" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "waarde" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "standaard rol eigenaar" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "standaard instellingen" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "us statussen" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "punten" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "taak statussen" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "issue statussen" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "issue types" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "prioriteiten" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "ernstniveaus" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "rollen" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "aanmaak datum en tijd" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "gewijzigde datum en tijd" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "module config" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "is gearchiveerd" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "kleur" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "work in progress limiet" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "waarde" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "standaard rol eigenaar" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "standaard instellingen" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "us statussen" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "punten" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "taak statussen" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "issue statussen" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "issue types" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "prioriteiten" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "ernstniveaus" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "rollen" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "aanmaak datum en tijd" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "geschiedenis items" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "verwittig gebruikers" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Verwittiging bestaat voor gespecifieerde gebruiker en project" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "" @@ -2307,103 +2355,103 @@ msgstr "" "\n" "[%(project)s] Wiki Pagina verwijderd \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Volgers bevat ongeldige gebruikers" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "De versie moet een integer zijn" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "De versie stemt niet overeen met de huidige waarde" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "versie" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Je kan het project niet verlaten als er geen andere eigenaars zijn" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "E-mail adres is al in gebruik" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Ongeldige rol voor project" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Standaard opties" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Status van User story" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Punten" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Statussen van taken" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Statussen van Issues" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Types van issue" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Prioriteiten" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Ernstniveaus" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Rollen" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Toekomstige sprint" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Project einde" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "us volgorde" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "takenbord volgorde" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "is iocaine" @@ -2533,12 +2581,12 @@ msgstr "" "[Taiga] Toegevoegd aan het project '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2556,12 +2604,12 @@ msgstr "" "gebruikers" #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2574,350 +2622,342 @@ msgstr "" "definitie tot taak tot het afleveren naar de klant." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Nieuw" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Klaar" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "Lopende" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Klaar om te testen" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Afgewerkt" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Gearchiveerd" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Gesloten" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Info nodig" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Verzet naar later" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Geweigerd" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Bug" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Vraag" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Verbetering" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Laag" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normaal" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Hoog" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Wensenlijst" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Mineur" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Belangrijk" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Kritiek" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Product Owner" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rol" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "backlog volgorde" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "sprint volgorde" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "afwerkdatum" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "is requirement van de klant" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "is requirement van het team" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "gegenereerd van issue" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Er is geen user story met dat id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Er is geen project met dat is" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Er is geen user story status met dat id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Er is geen taak status met dat id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Stemmen" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Stem" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "'inhoud' parameter is verplicht" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "'project_id' parameter is verplicht" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "gebruiker met laatste wijziging" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Persoonlijke info" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Toestemmingen" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Belangrijke data" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Gedupliceerde e-mail" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Ongeldige e-mail" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Ongeldige gebruikersnaam of e-mail" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Mail met succes verzonden!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Token is ongeldig" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Huidig wachtwoord parameter vereist" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Nieuw wachtwoord parameter vereist" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Ongeldige lengte van wachtwoord, minstens 6 tekens vereist" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Ongeldig huidig wachtwoord" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Onvolledige argumenten" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Ongeldig afbeelding formaat" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -2927,11 +2967,11 @@ msgstr "Ongeldig, weet je zeker dat het token correct en ongebruikt is?" msgid "Invalid, are you sure the token is correct?" msgstr "Ongeldig, weet je zeker dat het token correct is?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "superuser status" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -2939,24 +2979,24 @@ msgstr "" "Beduidt dat deze gebruik alle toestemmingen heeft zonder deze expliciet toe " "te wijzen." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "gebruikersnaam" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Vereist. 30 of minder karakters. Letters, nummers en /./-/_ karakters" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Geef een geldige gebruikersnaam in" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "actief" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -2964,55 +3004,55 @@ msgstr "" "Beduidt of deze gebruiker als actief moet behandeld worden. Deselecteer dit " "i.p.v. accounts te verwijderen." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografie" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "foto" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "toetrededatum" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "standaard taal" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "standaard tijdzone" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "kleur tags" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "e-mail token" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nieuw e-mail adres" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "toestemmingen" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "ongeldig" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Ongeldige gebruikersnaam. Probeer met een andere." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Gebruikersnaam of wachtwoord stemt niet overeen met gebruiker." @@ -3135,48 +3175,48 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Je bent getaiganiseerd!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Er is geen rol met dat id" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Gedupliceerde key value overtreed unieke constraint. Key '{}' bestaat al." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "key" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "geheime sleutel" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "status code" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "request data" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "request headers" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "response data" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "response headers" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "duur" diff --git a/taiga/locale/pl/LC_MESSAGES/django.po b/taiga/locale/pl/LC_MESSAGES/django.po index d8666cfe..186653d8 100644 --- a/taiga/locale/pl/LC_MESSAGES/django.po +++ b/taiga/locale/pl/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Polish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/pl/)\n" @@ -22,152 +22,152 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Publiczna rejestracja jest wyłączona" -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "Nieprawidłowy typ rejestracji" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "Nieprawidłowy typ logowania" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "Nieprawidłowa nazwa użytkownika" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Wymagane. Maksymalnie 255 znaków. Litery, cyfry oraz /./-/_ " -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Nazwa użytkownika jest już używana." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Ten adres email jest już w użyciu." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Token nie zgadza się z żadnym zaproszeniem" -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Użytkownik już zarejestrowany" -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Błąd przy tworzeniu użytkownika." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Nieprawidłowy token" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "To pole jest wymagane." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Nieprawidłowa wartość." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "'%s' wartość musi przyjąć True albo False," -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Podaj prawidłowy 'slug' zawierający litery, cyfry, podkreślenia lub myślniki." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Dokonał właściwego wyboru. Wartość %(value)s nie jest jedną z dostępnych " "opcji." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Podaj właściwy adres email." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "Zły format. Użyj jednego z tych formatów: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "Zły format. Użyj jednego z tych formatów: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "Zły format. Użyj jednego z tych formatów: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Wpisz cały numer" -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Upewnij się, że wartość jest mniejsza lub równa od %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Upewnij się, że wartość jest większa lub równa od %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" wartość musi być zmiennoprzecinkowa." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Wpisz numer." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Upewnij się że nie podałeś więcej niż %s znaków." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Upewnij się, że nie ma więcej niż %s miejsc po przecinku." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Upewnij się, że nie ma więcej niż %s cyfr przed przecinkiem." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Plik nie został wysłany. Sprawdź kodowanie znaków w formularzu." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Plik nie został wysłany." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Wysłany plik jest pusty." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -175,11 +175,11 @@ msgstr "" "Upewnij się, że nazwa pliku ma maksymalnie %(max)d znaków.(Ilość znaków to: " "%(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Proszę wybrać jedną z opcji, nie obie." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -187,153 +187,153 @@ msgstr "" "Prześlij właściwy obraz. Plik który próbujesz przesłać nie jest obrazem lub " "jest uszkodzony." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Strona nie jest ostatnią i nie może zostać zmieniona na int." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Niewłaściwa strona (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Nieprawidłowa definicja uprawnień." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Nieprawidłowa wartość klucza '%s' -Obiekt nie istniej." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Niepoprawny typ. Oczekiwana wartość, otrzymana %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Obiekt z %s=%s nie istnieje." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Nieprawidłowy odnośnik - brak pasującego URL" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Nieprawidłowy odnośnik - źle dopasowany URL" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Nieprawidłowy odnośnik z powodu błędu konfiguracji" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Nieprawidłowy odnośnik - obiekt nie istnieje." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Niepoprawny typ. Oczekiwany url, otrzymany %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Nieprawidłowa dana" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Nic nie wpisano" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Nie można utworzyć nowego obiektu, tylko istniejące obiekty mogą być " "aktualizowane." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Oczekiwana lista elementów." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Nie znaleziono" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Dostęp zabroniony" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Błąd aplikacji serwera" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Błąd połączenia." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Błędne żądanie." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Nieprawidłowe dane uwierzytelniające." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Nie podano danych uwierzytelniających." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Nie masz uprawnień do wykonania tej czynności." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Metoda %s nie dozwolona." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Nie udało się spełnić żądania Accept Header" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Niewspierany typ pliku '%s' w żądaniu." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Żądanie zostało zduszone." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Oczekiwana dostępność w ciągu %d sekund%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Nieoczekiwany błąd" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Nie odnaleziono." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Metoda nie wspierana dla tej końcówki." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Złe argumenty." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Błąd walidacji dancyh" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Błąd integralności dla błędnych lub nieprawidłowych argumentów" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Błąd warunków wstępnych" @@ -341,12 +341,12 @@ msgstr "Błąd warunków wstępnych" msgid "Error in filter params types." msgstr "Błąd w parametrach typów filtrów." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' musi być wartością typu int." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tagi" @@ -493,100 +493,100 @@ msgstr "" " Komentarz: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Potrzeba conajmiej jednej roli" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Wymagany plik zrzutu" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Nieprawidłowy format zrzutu" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "błąd w trakcie importu danych projektu" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "błąd w trakcie importu atrybutów projektu" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "błąd w trakcie importu domyślnych atrybutów projektu" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "błąd w trakcie importu niestandardowych atrybutów" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "błąd w trakcie importu ról" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "błąd w trakcie importu członkostw" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "błąd w trakcie importu sprintów" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "błąd w trakcie importu stron Wiki" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "błąd w trakcie importu linków Wiki" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "błąd w trakcie importu zgłoszeń" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "błąd w trakcie importu historyjek użytkownika" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "błąd w trakcie importu zadań" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "błąd w trakcie importu tagów" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "błąd w trakcie importu osi czasu" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" nie odnaleziono w projekcie" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Niewłaściwa zawartość. Musi to być {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Zawiera niewłaściwe pola niestandardowe." -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Nazwa projektu zduplikowana" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Błąd w trakcie generowania zrzutu projektu" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Błąd w trakcie wczytywania zrzutu projektu" @@ -826,76 +826,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Twój zrzut projektu został prawidłowo zaimportowany" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "nazwa" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "web" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "opis" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Następny url" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "użytkownik" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "aplikacja" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "Imię i Nazwisko" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "adres e-mail" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "komentarz" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "data utworzenia" @@ -926,7 +926,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Dodatkowe info" @@ -960,39 +960,39 @@ msgstr "" "\n" "[Taiga] Informacje od %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "Źródło nie jest prawidłowym plikiem json" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Projekt nie istnieje" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Błędna sygnatura" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "Element referencyjny nie istnieje" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "Status nie istnieje" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Status zmieniony przez commit z BitBucket" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Nieprawidłowa informacja o zgłoszeniu" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1009,17 +1009,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Zgłoszenie utworzone przez BitBucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Nieprawidłowa informacja o komentarzu do zgłoszenia" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1036,7 +1036,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1047,7 +1047,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1059,11 +1059,11 @@ msgstr "" "[{commit_id}]({commit_url} \"Zobacz commit'{commit_id} - " "{commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Status zmieniony przez commit z GitHub" -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1080,11 +1080,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Zgłoszenie utworzone przez GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1101,7 +1101,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1112,15 +1112,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Status zmieniony przez commit z GitLab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Utworzone przez GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1137,7 +1137,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1148,308 +1148,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Zobacz projekt" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Zobacz kamienie milowe" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Zobacz historyjki użytkownika" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Zobacz zadania" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Zobacz zgłoszenia" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Zobacz strony Wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Zobacz linki Wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Poproś o członkowstwo" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Dodaj historyjkę użytkownika do projektu" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Dodaj komentarze do historyjek użytkownika" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Dodaj komentarze do zadań" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Dodaj zgłoszenia" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Dodaj komentarze do zgłoszeń" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Dodaj strony Wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Modyfikuj stronę Wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Dodaj link do Wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modyfikuj link do Wiki" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Dodaj kamień milowy" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modyfikuj Kamień milowy" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Usuń kamień milowy" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Zobacz historyjkę użytkownika" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Dodaj historyjkę użytkownika" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modyfikuj historyjkę użytkownika" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Usuń historyjkę użytkownika" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Dodaj zadanie" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modyfikuj zadanie" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Usuń zadanie" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Dodaj zgłoszenie" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modyfikuj zgłoszenie" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Usuń zgłoszenie" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Usuń stronę Wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Usuń link Wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modyfikuj projekt" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Dodaj członka zespołu" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Usuń członka zespołu" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Usuń projekt" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Administruj wartościami projektu" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Administruj rolami" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Pola niekompletne" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Niepoprawny format obrazka" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Nieprawidłowa nazwa szablonu" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Nieprawidłowy opis szablonu" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Przynajmniej jeden użytkownik musi być aktywnym Administratorem" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Nie masz uprawnień by to zobaczyć." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "ID nie pasuje pomiędzy obiektem a projektem" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "właściciel" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "projekt" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "typ zawartości" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "id obiektu" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "data modyfikacji" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "załączony plik" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "jest przestarzałe" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "kolejność" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Niestandardowy" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Tekst" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Teks wielowierszowy" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "typ" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "wartości" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "historyjka użytkownika" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "zadanie" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "zgłoszenie" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Już istnieje jeden z taką nazwą." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Komentarz został już usunięty" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Komentarz nie został usunięty" @@ -1517,7 +1525,7 @@ msgstr "usuniete" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Nieprzypisane" @@ -1564,120 +1572,115 @@ msgstr "Od:" msgid "To:" msgstr "Do:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "zawartość" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "zaglokowana notatka" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Nie masz uprawnień do połączenia tego zgłoszenia ze sprintem." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Nie masz uprawnień do ustawienia statusu dla tego zgłoszenia." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "Nie masz uprawnień do ustawienia ważności dla tego zgłoszenia." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "Nie masz uprawnień do ustawienia priorytetu dla tego zgłoszenia." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Nie masz uprawnień do ustawienia typu dla tego zgłoszenia." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "status" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "ważność" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "priorytet" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "kamień milowy" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "data zakończenia" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "temat" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "przypisane do" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "źródło zgłoszenia" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "ilość" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "szacowana data rozpoczecia" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "szacowana data zakończenia" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "jest zamknięte" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "dostępność" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "Szacowana data rozpoczęcia musi być wcześniejsza niż data zakończenia." @@ -1685,230 +1688,275 @@ msgstr "Szacowana data rozpoczęcia musi być wcześniejsza niż data zakończen msgid "There's no sprint with that id" msgstr "Nie ma sprintu o takim ID" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "jest zablokowane" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' parametr jest obowiązkowy" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project' parametr jest obowiązkowy" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "e-mail" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "utwórz na" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "dodatkowy tekst w zaproszeniu" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "kolejność użytkowników" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "Użytkownik już jest członkiem tego projektu" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "domyślne punkty" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "domyślny status dla HU" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "domyślny status dla zadania" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "domyślny priorytet" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "domyślna ważność" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "domyślny status dla zgłoszenia" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "domyślny typ dla zgłoszenia" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "członkowie" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "wszystkich kamieni milowych" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "wszystkich punktów " -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "aktywny panel backlog" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "aktywny panel Kanban" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "aktywny panel Wiki" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "aktywny panel zgłoszeń " -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "system wideokonferencji" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "dodatkowe dane dla wideokonferencji" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "szablon " -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "uprawnienia anonimowych" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "uprawnienia użytkownika" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "jest prywatna" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "kolory tagów" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "konfiguracja modułów" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "zarchiwizowane" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "kolor" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "limit postępu prac" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "wartość" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "domyśla rola właściciela" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "domyślne opcje" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "statusy HU" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "pinkty" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "statusy zadań" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "statusy zgłoszeń" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "typy zgłoszeń" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "priorytety" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "ważność" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "role" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "data utworzenia" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "data aktualizacji" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "ilość" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "konfiguracja modułów" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "zarchiwizowane" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "kolor" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "limit postępu prac" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "wartość" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "domyśla rola właściciela" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "domyślne opcje" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "statusy HU" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "pinkty" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "statusy zadań" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "statusy zgłoszeń" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "typy zgłoszeń" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "priorytety" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "ważność" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "role" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "data utworzenia" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "wpisy historii" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "powiadom użytkowników" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Obserwowane" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Powiadomienie istnieje dla określonego użytkownika i projektu" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Nieprawidłowa wartość dla poziomu notyfikacji" @@ -2644,104 +2692,104 @@ msgstr "" "\n" "[%(project)s] Usunął stronę Wiki \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Obserwatorzy zawierają niepoprawnych użytkowników" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "Wersja musi być integerem ;)" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "Parametr wersji jest nieprawidłowy" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "Podana wersja nie zgadza się z aktualną." -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "wersja" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Nie możesz opuścić projektu, jeśli jesteś jego jedynym właścicielem" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Tena adres e-mail jest już w użyciu" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Nieprawidłowa rola w projekcie" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Domyślne opcje" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Statusy historyjek użytkownika" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Punkty" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Statusy zadań" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Statusy zgłoszeń" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Typu zgłoszeń" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Priorytety" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Ważność" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Role" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Przyszły sprint" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Zakończenie projektu" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "Nie masz uprawnień do ustawiania sprintu dla tego zadania." -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" "Nie masz uprawnień do ustawiania historyjki użytkownika dla tego zadania" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "Nie masz uprawnień do ustawiania statusu dla tego zadania" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "kolejność HU" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "Kolejność tablicy zadań" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "Iokaina" @@ -2899,12 +2947,12 @@ msgstr "" "[Taiga] Dodany do projektu '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2922,12 +2970,12 @@ msgstr "" "klienta." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2939,354 +2987,346 @@ msgstr "" "wyświetlane dla klienta a członkowie zespołu wyciągają je z kolejki." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Nowe" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Gotowe" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "W toku" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Gotowe do testów" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Gotowe!" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Zarchiwizowane" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Zamknięte" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Potrzebne informacje" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Odroczone" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Odrzucone" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Błąd" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Pytanie" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Ulepszenie" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Niski" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normalny" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Wysoki" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Życzenie" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Pomniejsze" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Istotne" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Krytyczne" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Właściciel produktu" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Interesariusz" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" "Nie masz uprawnień do ustawiania sprintu dla tej historyjki użytkownika." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" "Nie masz uprawnień do ustawiania statusu do tej historyjki użytkownika." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "rola" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "Kolejność backlogu" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "kolejność sprintu" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "data zakończenia" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "wymaganie klienta" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "wymaganie zespołu" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "wygenerowane ze zgłoszenia" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Nie ma historyjki użytkownika z takim ID" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Nie ma projektu z takim ID" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Nie ma statusu historyjki użytkownika z takim ID" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Nie ma statusu zadania z takim ID" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Głosy" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Głos" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "Parametr 'zawartość' jest wymagany" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "Parametr 'id_projektu' jest wymagany" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "ostatnio zmodyfikowane przez" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Dla pełengo diffa sprawdź API historii" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Informacje osobiste" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Uprawnienia" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Ważne daty" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Zduplikowany adres e-mail" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Niepoprawny adres e-mail" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Nieprawidłowa nazwa użytkownika lub adrs e-mail" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "E-mail wysłany poprawnie!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Nieprawidłowy token." -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Należy podać bieżące hasło" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Należy podać nowe hasło" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "" "Nieprawidłowa długość hasła - wymagane jest co najmniej 6 znaków" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Podałeś nieprawidłowe bieżące hasło" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Pola niekompletne" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Niepoprawny format obrazka" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3298,11 +3338,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Niepoprawne, jesteś pewien, że token jest poprawny?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "status SUPERUSER" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -3310,24 +3350,24 @@ msgstr "" "Oznacza, że ten użytkownik posiada wszystkie uprawnienia bez konieczności " "ich przydzielania." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "nazwa użytkownika" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Wymagane. 30 znaków. Liter, cyfr i znaków /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Wprowadź poprawną nazwę użytkownika" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "aktywny" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3335,55 +3375,55 @@ msgstr "" "Oznacza, że ten użytkownik ma być traktowany jako aktywny. Możesz to " "odznaczyć zamiast usuwać konto." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografia" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "zdjęcie" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "data dołączenia" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "domyślny język Taiga" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "domyślny szablon Taiga" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "domyśla strefa czasowa" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "kolory tagów" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "tokem e-mail" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "nowy adres e-mail" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "uprawnienia" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "Niepoprawne" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Niepoprawna nazwa użytkownika. Spróbuj podać inną." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Nazwa użytkownika lub hasło są nieprawidłowe" @@ -3575,47 +3615,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Zostałeś zaTaigowany" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Nie istnieje rola z takim ID" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "Duplikowanie wartości klucza. Klucz '{}' już istnieje." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "klucz" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "sekretny klucz" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "kod statusu" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "data żądania" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "nagłówki żądań" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "dane odpowiedzi" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "nagłówki odpowiedzi" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "czas trwania" diff --git a/taiga/locale/pt_BR/LC_MESSAGES/django.po b/taiga/locale/pt_BR/LC_MESSAGES/django.po index 23593f0a..9a30cfeb 100644 --- a/taiga/locale/pt_BR/LC_MESSAGES/django.po +++ b/taiga/locale/pt_BR/LC_MESSAGES/django.po @@ -9,6 +9,7 @@ # David Barragán , 2015 # Hevertton Barbosa , 2015 # Kemel Zaidan , 2015 +# Lennon Jesus , 2016 # Marlon Carvalho , 2015 # pedromvm , 2015 # Renato Prado , 2015 @@ -18,8 +19,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/taiga-agile-llc/" "taiga-back/language/pt_BR/)\n" @@ -29,151 +30,151 @@ msgstr "" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Registro público está desabilitado. " -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "tipo de registro inválido" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "tipo de login inválido" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "nome de usuário inválido" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Obrigatório. No máximo 255 caracteres. Letras, números e /./-/_ ." -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Nome de usuário já está em uso." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Este e-mail já está em uso." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Esse token não bate com nenhum convite." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Este usuário já está registrado." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "O usuário já é membro do projeto." -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Erro ao criar um novo usuário." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Token inválido" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Este campo é obrigatório." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Valor inválido." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "O valor de '%s' deve ser ou True ou False." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Entre uma 'slug' válida, consistindo de letras, números, underscores ou " "hífens." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "Escolha uma alternativa válida. %(value)s não está disponível." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Preencha com um e-mail válido." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "A data está no formato errado. Use um desses no lugar: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "Formato da data e hora errado. Use um destes: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "Hora com formato errado. Use um destes: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Insira um número inteiro." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Garanta que o valor é menor ou igual a %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Garanta que o valor é maior ou igual a %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "O valor de \"%s\" deve ser decimal (float)." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Insira um número." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Garanta que não há mais que %s dígitos no total." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Garanta que não há mais que %s casas decimais." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Garanta que não há mais que %s dígitos antes do ponto decimal." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação no formulário." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Nenhum arquivo enviado." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "O arquivo enviado está vazio." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -181,11 +182,11 @@ msgstr "" "Garanta que o nome do arquivo tem no máximo %(max)d caracteres (no momento " "tem %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Envie um arquivo ou marque o checkbox \"vazio\", não ambos." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -193,153 +194,153 @@ msgstr "" "Envie uma imagem válida. O arquivo que você mandou ou não era uma imagem ou " "está corrompido." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Página não é \"última\", nem pode ser convertída para um inteiro." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Página inválida (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Definição de permissão inválida." -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Chave primária '%s' inválida - objeto não existe." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Tipo incorreto. Esperado valor de chave primária, recebido %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Objeto com %s=%s não existe." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Hyperlink inválido - Nenhuma URL corresponde" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Hyperlink inválido - Corresponde a URL incorreta" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Hyperlink inválido devido a erro de configuração" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Hyperlink inválido - objeto não existe." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Tipo incorreto. Esperada string de url, recebido %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Dados inválidos" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Nenhuma entrada providenciada" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Não é possível criar um novo item, somente itens já existentes podem ser " "atualizados." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Esperada uma lista de itens." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Não encontrado" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Permissão negada" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Erro no servidor da aplicação" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Erro na conexão." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Requisição mal-formada" -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Credenciais de autenticação incorretas." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Credenciais de autenticação não informadas." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "Você não possui permissão para executar esta ação." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Método '%s' não é permitido" -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Não foi possível satisfazer o cabeçalho Accept da requisição" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Tipo de mídia '%s' não suportado na requisição." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Requisição foi sujeita a limites." -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Esperado disponível em %d segundo%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Erro inesperado" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Não encontrado." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Método não suportado por esse endpoint." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Argumentos errados." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Erro de validação dos dados" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Erro de Integridade para argumentos inválidos ou errados" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Erro de pré-condição" @@ -347,12 +348,12 @@ msgstr "Erro de pré-condição" msgid "Error in filter params types." msgstr "Erro nos tipos de parâmetros do filtro." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'projeto' deve ser um valor inteiro." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "tags" @@ -500,100 +501,100 @@ msgstr "" " Comentário: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Nós precisamos de pelo menos uma função" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Necessário de arquivo de restauração" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Formato de aquivo de restauração inválido" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "erro ao importar informações de projeto" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "erro importando lista de atributos do projeto" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "erro importando valores de atributos do projeto padrão" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "erro importando atributos personalizados" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "erro importando funcões" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "erro importando filiações" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "erro importando sprints" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "erro importando páginas wiki" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "erro importando wiki links" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "erro importando casos" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "erro importando user stories" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "erro importando tarefas" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "erro importando tags" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "erro importando linha do tempo" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" não encontrado nesse projeto" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "conteúdo inválido. Deve ser {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Contém campos personalizados inválidos" -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Nome duplicado para o projeto" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Erro gerando arquivo de restauração do projeto" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Erro carregando arquivo de restauração do projeto" @@ -832,76 +833,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] A restauração do seu projeto foi importada" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "Autenticação necessária" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "Nome" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "Ícone da url" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "web" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "descrição" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Próxima url" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "chave secreta para cifrar os tokens da aplicação" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "usuário" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "aplicação" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "nome completo" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "endereço de e-mail" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "comentário" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "data de criação" @@ -932,7 +933,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Informação extra" @@ -966,39 +967,39 @@ msgstr "" "\n" "[Taiga] Resposta de %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "A carga não é um json válido" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "O projeto não existe" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Assinatura Ruim" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "O elemento referenciado não existe" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "O estatus não existe" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Status alterado em Bitbucket commit" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Informação de caso inválida" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1015,17 +1016,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Caso criado pelo Bitbucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Informação de comentário de caso inválido" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1042,7 +1043,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1053,7 +1054,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1064,11 +1065,11 @@ msgstr "" "@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Status alterado por commit do Github." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1085,11 +1086,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Caso criado pelo Github." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1106,7 +1107,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1117,15 +1118,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Status alterado por um commit de Gitlab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Criado pelo Gitlab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1142,7 +1143,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1153,308 +1154,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Ver projeto" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Ver marco de progresso" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Ver user stories" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Ver tarefa" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Ver casos" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Ver página wiki" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Ver links wiki" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Solicitar filiação" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Adicionar user story para projeto" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Adicionar comentários para user story" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Adicionar comentário para tarefa" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Adicionar casos" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Adicionar comentários aos casos" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Adicionar página wiki" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "modificar página wiki" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Adicionar link wiki" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Modificar wiki link" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Adicionar marco de progresso" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Modificar marco de progresso" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Remover marco de progresso" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Ver user story" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Adicionar user story" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Modificar user story" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Deletar user story" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Adicionar tarefa" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Modificar tarefa" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Deletar tarefa" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Adicionar caso" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Modificar caso" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Deletar caso" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Deletar página wiki" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Deletar link wiki" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Modificar projeto" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Adicionar membro" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Remover membro" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Deletar projeto" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Valores projeto admin" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Funções Admin" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Argumentos incompletos" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Formato de imagem inválida" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Nome de template inválido" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Descrição de template inválida" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "Pelo menos one dos usuários deve ser um administrador ativo" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "Você não tem permissão para ver isso" -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "Atualizações parciais não são suportadas" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "ID do projeto não combina entre objeto e projeto" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "dono" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "projeto" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "tipo de conteúdo" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "identidade de objeto" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "data modificação" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "arquivo anexado" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "sha1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "está obsoleto" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "ordem" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "Aparece em" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Personalizado" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Texto" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Multi-linha" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "Data" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "Tipo" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "valores" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "user story" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "tarefa" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "caso" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Já existe um com o mesmo nome." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Comentário já apagado" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Comentário não apagado" @@ -1522,7 +1531,7 @@ msgstr "removido" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Não-atribuído" @@ -1569,120 +1578,115 @@ msgstr "De:" msgid "To:" msgstr "Para:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "conteúdo" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "nota bloqueada" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "sprint" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "Você não tem permissão para colocar esse sprint para esse caso." -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "Você não tem permissão para colocar esse status para esse caso." -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "Você não tem permissão para colocar essa severidade para esse caso." -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "Você não tem permissão para colocar essa prioridade para esse caso." -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "Você não tem permissão para colocar esse tipo para esse caso." -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "status" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "severidade" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "prioridade" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "marco de progresso" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "data de término" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "assunto" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "assinado a" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "referência externa" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "contagem" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Curtidas" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Curtir" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Curtidas" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "slug" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "data de início estimada" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "data de encerramento estimada" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "está fechado" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibilidade" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "A estimativa de inicio deve ser anterior a estimativa de encerramento" @@ -1690,230 +1694,275 @@ msgstr "A estimativa de inicio deve ser anterior a estimativa de encerramento" msgid "There's no sprint with that id" msgstr "Não há sprint com esse id" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "está bloqueado" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' parametro é mandatório" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project' parametro é mandatório" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "email" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "criado em" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "token" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "texto extra de convite" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "ordem de usuário" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "O usuário já é membro do projeto" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "pontos padrão" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "status de US padrão" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "status padrão de tarefa" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "prioridade padrão" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "severidade padrão" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "status padrão de caso" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "tipo padrão de caso" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "membros" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "total de marcos de progresso" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "pontos totais de US" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "painel de backlog ativo" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "painel de kanban ativo" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "painel de wiki ativo" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "painel de casos ativo" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "sistema de vídeo conferência" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "informação extra de vídeo conferência" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "template de criação" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "permissão anônima" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "permissão de usuário" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "é privado" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "cores de tags" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "configurações de módulos" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "está arquivado" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "cor" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "trabalho no limite de progresso" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "valor" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "função padrão para dono " - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "opções padrão" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "status de US" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "pontos" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "status de tarefa" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "status de casos" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "tipos de caso" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "prioridades" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "severidades" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "funções" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "data de criação" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "data de atualização" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "contagem" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "configurações de módulos" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "está arquivado" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "cor" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "trabalho no limite de progresso" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "valor" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "função padrão para dono " + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "opções padrão" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "status de US" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "pontos" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "status de tarefa" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "status de casos" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "tipos de caso" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "prioridades" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "severidades" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "funções" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "data de criação" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "histórico de entradas" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "notificar usuário" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Observado" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Existe notificação para usuário e projeto especifcado" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Valor inválido para nível de notificação" @@ -2627,103 +2676,103 @@ msgstr "" "\n" "[%(project)s] Apagou a página Wiki \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "Observadores contém usuários inválidos" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "A versão precisa ser um inteiro" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "O parâmetro da versão não é válido" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "A versão não corresponde com a atual" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "versão" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Você não pode deixar o projeto se não há mais donos" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Endereço de e-mail já utilizado" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Função inválida para projeto" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Opções padrão" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Status de user story" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Pontos" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Status de tarefas" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Status de casos" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Tipos de casos" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Prioridades" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Severidades" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Funções" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Sprint futuro" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Fim do projeto" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "Você não tem permissão para colocar esse sprint para essa tarefa." -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "Você não tem permissão para colocar essa user story para essa tarefa." -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "Você não tem permissão para colocar esse status para essa tarefa." -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "ordenar por US" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "ordenar por quadro de tarefa" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "é Iocaine" @@ -2881,12 +2930,12 @@ msgstr "" "[Taiga] Adicionado ao projeto '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2902,12 +2951,12 @@ msgstr "" "se no processo que é compreendido sobre o produto e seus clientes." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2921,350 +2970,342 @@ msgstr "" "uma lista." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Novo" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Pronto" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "Em andamento" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Pronto para teste" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Terminado" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Arquivado" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Fechado" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Precisa de informação" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Adiado" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Rejeitado" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Bug" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Pergunta" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Melhoria" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Baixa" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Normal" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Alta" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Desejável" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Secundário" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Importante" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Crítica" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "UX" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Design" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Front" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Back" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Product Owner" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Stakeholder" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "Você não tem permissão para colocar esse sprint para essa user story." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "Você não tem permissão para colocar esse status para essa user story." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "função" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "ordem do backlog" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "ordem do sprint" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "data de término" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "É requerimento do cliente" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "É requerimento do time" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "Gerado do caso" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Não há user story com esse id" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Não há projeto com esse id" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Não há status de user story com este id" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Não há status de tarega com este id" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Votos" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Vote" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "parâmetro 'conteúdo' é mandatório" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "parametro 'project_id' é mandatório" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "último modificador" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Verifique o histórico da API para a exata diferença" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Informação pessoal" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Permissões" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Datas importantes" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "E-mail duplicado" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Não é um e-mail válido" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Usuário ou e-mail inválido" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "E-mail enviado com sucesso" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Token é inválido" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Parâmetro de senha atual necessário" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Parâmetro de nova senha necessário" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Comprimento de senha inválido, pelo menos 6 caracteres necessários" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Senha atual inválida" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Argumentos incompletos" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Formato de imagem inválida" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3276,11 +3317,11 @@ msgstr "" msgid "Invalid, are you sure the token is correct?" msgstr "Inválido, tem certeza que o token está correto?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "status de superuser" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -3288,24 +3329,24 @@ msgstr "" "Designa que esse usuário tem todas as permissões sem explicitamente assiná-" "las" -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "usuário" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Requerido. 30 caracteres ou menos. Letras, números e caracteres /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Digite um usuário válido" -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "ativo" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -3313,55 +3354,55 @@ msgstr "" "Designa quando esse usuário deve ser tratado como ativo. desmarque isso em " "vez de deletar contas." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "biografia" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "foto" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "data ingressado" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "lingua padrão" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "tema padrão" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "fuso horário padrão" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "tags coloridas" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "token de e-mail" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "novo endereço de email" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "permissões" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "inválido" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Usuário inválido. Tente com um diferente." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Usuário ou senha não correspondem ao usuário" @@ -3549,48 +3590,48 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Você foi Taigatizado!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Não há função com esse id" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Valor de chave duplicada viola regra de limitação. Chave '{}' já existe." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "chave" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "chave secreta" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "código de status" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "dados da requisição" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "cabeçalhos da requisição" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "dados de resposta" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "cabeçalhos de resposta" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "duração" diff --git a/taiga/locale/ru/LC_MESSAGES/django.po b/taiga/locale/ru/LC_MESSAGES/django.po index 909191fb..37ff75f3 100644 --- a/taiga/locale/ru/LC_MESSAGES/django.po +++ b/taiga/locale/ru/LC_MESSAGES/django.po @@ -7,13 +7,14 @@ # Dmitriy Volkov , 2015 # Dmitry Lobanov , 2015 # Dmitry Vinokurov , 2015 +# Igor Bezukladnikov , 2016 # Марат , 2015 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Russian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/ru/)\n" @@ -25,156 +26,156 @@ msgstr "" "%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" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "Публичная регистрация отключена." -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "неправильный тип регистрации" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "неправильный тип логина" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "неправильное имя пользователя" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "Обязательно. 255 символов или меньше. Буквы, числа и символы /./-/_" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "Это имя пользователя уже используется." -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "Этот адрес почты уже используется." -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "Токен не подходит ни под одно корректное приглашение." -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "Пользователь уже зарегистрирован." -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "Этот пользователь уже является участником данного проекта" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "Ошибка при создании нового пользователя." -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "Неверный токен" -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "Это поле обязательно." -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "Неправильное значение." -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "значение '%s' должно быть True - верно - или False - ложно." -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" "Введите корректное 'ссылочное имя' состоящее из букв, чисел, подчёркиваний и " "дефисов." -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "" "Выберите правильное значение. %(value)s не является одним из доступных " "значений." -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "Введите правильный адрес email." -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "Дата имеет неверный формат. Воспользуйтесь одним из этих форматов: %s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "" "Дата и время имеют неправильный формат. Воспользуйтесь одним из этих " "форматов: %s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "" "Время имеет неправильный формат. Воспользуйтесь одним из этих форматов: %s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "Введите целое число." -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "Убедитесь, что это значение меньше или равно %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "Убедитесь, что это значение больше или равно %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" значение должно быть числом с плавающей точкой." -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "Введите число." -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "Убедитесь, что здесь всего не больше %s цифр." -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "Убедитесь, что здесь не больше %s цифр после точкой." -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "Убедитесь, что здесь не больше %s цифр перед точкой." -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "Файл не был отправлен. Проверьте тип кодировки на форме." -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "Файл не был отправлен." -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "Отправленный файл пуст." -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." @@ -182,11 +183,11 @@ msgstr "" "Убедитесь, что имя этого файла имеет не больше %(max)d букв (сейчас - " "%(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "Пожалуйста, или отправьте файл, или снимите флажок." -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." @@ -194,152 +195,152 @@ msgstr "" "Загрузите корректное изображение. Файл, который вы загрузили - либо не " "изображение, либо не корректное изображение." -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "Страница не является 'последней' и не может быть приведена к int." -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "Неправильная страница (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "Неправильное определение разрешения" -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "Неправильное значение ключа '%s' - объект не существует." -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "Неверный тип. Ожидалось значение ключа, пришло %s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr "Объект с %s=%s не существует." -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "Неправильная гиперссылка - нет подходящего URL" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "Неправильная гиперссылка - URL не подходит" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "Неправильная гиперссылка из-за ошибки конфигурации" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "Неправильная ссылка - объект не существует." -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "Неверный тип. Ожидалась строка URL, получено %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "Неправильные данные." -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "Ввод отсутствует" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "" "Нельзя создать новые объект, только существующие объекты могут быть изменены." -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "Ожидался список объектов." -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "Не найдено" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "Доступ запрещён" -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "Ошибка приложения на сервере" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "Ошибка соединения." -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "Неверное сформированный запрос." -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "Неверные данные для аутентификации." -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "Данные для аутентификации не предоставлены." -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "У вас нет разрешения для этого действия." -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "Метод '%s' не разрешён." -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "Не удалось соответствовать заголовку принятия для этого запроса" -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "Не поддерживаемый тип медиа '%s' в запросе." -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "Запрос был замят" -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "Будет доступно в течение %d секунд%s." -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "Неожиданная ошибка" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "Не найдено." -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "Метод не поддерживается с этого конца." -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "Неправильные аргументы." -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "Ошибка при проверке данных" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "Ошибка целостности из-за неправильных параметров" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "Ошибка предусловия" @@ -347,12 +348,12 @@ msgstr "Ошибка предусловия" msgid "Error in filter params types." msgstr "Ошибка в типах фильтров для параметров." -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "'project' должно быть целым значением." -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "тэги" @@ -500,100 +501,100 @@ msgstr "" " Комментарий: %(comment)s\n" " " -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "Нам была нужна хотя бы одна роль" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "Необходим дамп-файл" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "Неправильный формат для свалки" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "ошибка импорта данных по проекту" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "ошибка импорта списка атрибутов проекта" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "ошибка импорта значение по умолчанию для атрибутов проекта" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "ошибка импорта специальных атрибутов" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "ошибка импорта ролей" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "ошибка импорта членства" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "ошибка импорта спринтов" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "ошибка импорта вики-страниц" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "ошибка импорта вики-ссылок" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "ошибка импорта запросов" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "ошибка импорта историй от пользователей" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "ошибка импорта задач" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "ошибка импорта тэгов" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "ошибка импорта хронологии проекта" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" не найдено в этом проекте" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "Неправильные данные. Должны быть в формате {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "Содержит неверные специальные поля" -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "Уже есть такое имя для проекта" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "Ошибка создания свалочного файла для проекта" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "Ошибка загрузки свалочного файла проекта" @@ -830,76 +831,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] Дамп вашего проекта импортирован" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "Необходима аутентификация" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "имя" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "url иконки" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "веб" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "описание" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "Следующий url" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "секретный ключ для шифрования токенов приложения" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "пользователь" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "приложение" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "полное имя" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "адрес email" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "комментарий" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "дата создания" @@ -930,7 +931,7 @@ msgstr "" " " #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "Дополнительное инфо" @@ -964,39 +965,39 @@ msgstr "" "\n" "[Taiga] Отзыв от %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "Нагрузочный файл не является правильным json-файлом" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "Проект не существует" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "Плохая подпись" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "Указанный элемент не существует" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "Статус не существует" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "Статус изменён из-за вклада с BitBucket" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "Неверная информация о запросе" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1013,17 +1014,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "Запрос создан из BitBucket." -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "Неправильная информация в комментарии к запросу" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1040,7 +1041,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1051,7 +1052,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1063,11 +1064,11 @@ msgstr "" "[{commit_id}]({commit_url} \"Посмотреть вклад '{commit_id} - " "{commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "Статус изменён из-за вклада на GitHub." -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1084,11 +1085,11 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "Запрос создан из GitHub." -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1105,7 +1106,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1116,15 +1117,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "Статус изменён из-за вклада на GitLab" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "Создано из GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1141,7 +1142,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1152,309 +1153,317 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "Просмотреть проект" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "Просмотреть вехи" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "Просмотреть пользовательские истории" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "Просмотреть задачи" -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "Посмотреть запросы" -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "Просмотреть wiki-страницы" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "Просмотреть wiki-ссылки" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "Запросить членство" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "Добавить пользовательскую историю к проекту" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "Добавить комментарии к пользовательским историям" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "Добавить комментарии к задачам" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "Добавить запросы" -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "Добавить комментарии к запросам" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "Создать wiki-страницу" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "Изменить wiki-страницу" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "Добавить wiki-ссылку" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "Изменить wiki-ссылку" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "Добавить веху" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "Изменить веху" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "Удалить веху" -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "Просмотреть пользовательскую историю" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "Добавить пользовательскую историю" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "Изменить пользовательскую историю" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "Удалить пользовательскую историю" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "Добавить задачу" -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "Изменить задачу" -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "Удалить задачу" -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "Добавить запрос" -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "Изменить запрос" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "Удалить запрос" -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "Удалить wiki-страницу" -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "Удалить wiki-ссылку" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "Изменить проект" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "Добавить участника" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "Удалить участника" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "Удалить проект" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "Управлять значениями проекта" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "Управлять ролями" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Список аргументов неполон" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Неправильный формат изображения" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "Неверное название шаблона" -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "Неверное описание шаблона" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "" "По крайней мере один пользователь должен быть активным администратором." -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "У вас нет разрешения на просмотр." -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "Частичные обновления не поддерживаются" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "Идентификатор проекта не подходит к этому объекту" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "владелец" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "проект" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "тип содержимого" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "идентификатор объекта" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "изменённая дата" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "приложенный файл" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "sha1" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "устаревшее" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "порядок" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "Специальный" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "Текст" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "Многострочный текст" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "Дата" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "тип" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "значения" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "пользовательская история" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "задача" -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "запрос" -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "Это имя уже используется." -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "Комментарий уже был удалён" -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "Комментарий не удалён" @@ -1522,7 +1531,7 @@ msgstr "удалено" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "Не назначено" @@ -1569,124 +1578,119 @@ msgstr "От:" msgid "To:" msgstr "Кому:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "содержимое" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "Заметка о блокировке" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "спринт" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "" "У вас нет прав для того чтобы установить такой спринт для этого запроса" -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "" "У вас нет прав для того чтобы установить такой статус для этого запроса" -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "" "У вас нет прав для того чтобы установить такую важность для этого запроса" -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "" "У вас нет прав для того чтобы установить такой приоритет для этого запроса" -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "У вас нет прав для того чтобы установить такой тип для этого запроса" -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "Ссылка" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "cтатус" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "важность" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "приоритет" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "веха" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "дата завершения" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "тема" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "назначено" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "внешняя ссылка" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "количество" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "Лайки" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "Лайк" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Лайки" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "ссылочное имя" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "предполагаемая дата начала" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "предполагаемая дата завершения" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "закрыто" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "доступность" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "" "Предполагаемая дата начала должна предшествовать предполагаемой дате " @@ -1696,230 +1700,275 @@ msgstr "" msgid "There's no sprint with that id" msgstr "Не существует спринта с таким идентификатором" -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "заблокировано" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "параметр '{param}' является обязательным" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "параметр 'project' является обязательным" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "электронная почта" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "создано" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "идентификатор" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "дополнительный текст к приглашению" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "порядок пользователей" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "Этот пользователем уже является участником проекта" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "очки по умолчанию" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "статусы ПИ по умолчанию" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "статус задачи по умолчанию" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "приоритет по умолчанию" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "важность по умолчанию" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "статус запроса по умолчанию" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "тип запроса по умолчанию" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "участники" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "общее количество вех" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "очки истории" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "активная панель списка задач" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "активная панель kanban" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "активная wiki-панель" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "панель активных запросов" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "система видеоконференций" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "дополнительные данные системы видеоконференций" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "шаблон для создания" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "права анонимов" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "права пользователя" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "личное" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "цвета тэгов" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "конфигурация модулей" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "архивировано" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "цвет" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "ограничение на активную работу" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "значение" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "роль владельца по умолчанию" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "параметры по умолчанию" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "статусы ПИ" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "очки" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "статусы задач" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "статусы запросов" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "типы запросов" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "приоритеты" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "степени важности" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "роли" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "Вовлеченные" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "Все" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "Никаких" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "дата и время создания" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "дата и время обновления" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "количество" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "конфигурация модулей" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "архивировано" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "цвет" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "ограничение на активную работу" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "значение" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "роль владельца по умолчанию" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "параметры по умолчанию" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "статусы ПИ" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "очки" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "статусы задач" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "статусы запросов" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "типы запросов" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "приоритеты" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "степени важности" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "роли" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Вовлеченные" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Все" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Никаких" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "дата и время создания" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "записи истории" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "уведомить пользователей" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "Просмотренные" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "Уведомление существует для данных пользователя и проекта" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "Неверное значение для уровня уведомлений" @@ -2641,104 +2690,104 @@ msgstr "" "\n" "[%(project)s] Удалена вики-страница \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "наблюдатели содержат неправильных пользователей" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "Версия должна быть целым значением" -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "Значение версии некорректно" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "Версия не соответствует текущей" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "версия" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "Вы не можете покинуть проект если в нём нет других владельцев" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "Этот почтовый адрес уже используется" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "Неверная роль для этого проекта" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "Параметры по умолчанию" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "Статусу пользовательских историй" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "Очки" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "Статусы задачи" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "Статусы запроса" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "Типы запроса" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "Приоритеты" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "Степени важности" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "Роли" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "Будущий спринт" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "Окончание проекта" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "У вас нет прав, чтобы назначить этот спринт для этой задачи." -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "" "У вас нет прав, чтобы назначить эту историю от пользователя этой задаче." -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "У вас нет прав, чтобы установить этот статус для этой задачи." -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "порядок ПИ" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "порядок панели задач" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "- иокаин" @@ -2898,12 +2947,12 @@ msgstr "" "[Taiga] Добавлены к проекту '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2920,12 +2969,12 @@ msgstr "" "известно о продукте и его пользователях." #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2939,352 +2988,344 @@ msgstr "" "задачи из очереди." #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "Новая" #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "Готово" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "В процессе" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "Можно проверять" #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "Завершена" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "Архивирована" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "Закрыта" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "Требуются подробности" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "Отложено" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "Отклонена" #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "Ошибка" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "Вопрос" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "Улучшение" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "Низкий" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "Обычный" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "Высокий" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "Список пожеланий" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "Низкий" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "Важный" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "Критический" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "Юзабилити" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "Дизайнер" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "Фронтенд разработчик" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "Бэкенд разработчик" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "Владелец продукта" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "Заинтересованная сторона" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "" "У вас нет прав чтобы установить спринт для этой пользовательской истории." -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "" "У вас нет прав чтобы установить статус для этой пользовательской истории." -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "Генерируется пользовательская история #{ref} - {subject}" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "роль" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "порядок списка задач" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "порядок спринтов" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "дата окончания" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "является требованием клиента" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "является требованием команды" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "создано из запроса" -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "Не существует пользовательской истории с таким идентификатором" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "Не существует проекта с таким идентификатором" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "Не существует статуса пользовательской истории с таким идентификатором" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "Не существует статуса задачи с таким идентификатором" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "Голоса" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "Голосовать" -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "параметр 'content' является обязательным" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "параметр 'project_id' является обязательным" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "последний отредактировавший" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "Свертесть с историей API для получения изменений" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "Личные данные" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "Права доступа" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "Важные даты" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "Этот email уже используется" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "Невалидный email" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "Неверное имя пользователя или e-mail" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "Письмо успешно отправлено!" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "Неверный токен" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "Поле \"текущий пароль\" является обязательным" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "Поле \"новый пароль\" является обязательным" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "Неверная длина пароля, требуется как минимум 6 символов" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "Неверно указан текущий пароль" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "Список аргументов неполон" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "Неправильный формат изображения" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3294,88 +3335,88 @@ msgstr "Неверно, вы уверены что токен правильны msgid "Invalid, are you sure the token is correct?" msgstr "Неверно, вы уверены что токен правильный?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "статус суперпользователя" -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "Выбранный пользователь имеет все разрешения, ему не чего назначит." -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "имя пользователя" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "Обязательно. 30 символов или меньше. Буквы, числа и символы /./-/_" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "Введите корректное имя пользователя." -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "активный" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "Выбранный пользователь активен. Отменить выбор для удаления аккаунта." -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "биография" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "фотография" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "когда присоединился" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "язык по умолчанию" -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "тема по умолчанию" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "временная зона по умолчанию" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "установить цвета для тэгов" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "email токен" -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "новый email адрес" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "разрешения" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "невалидный" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "Неверное имя пользователя. Попробуйте другое." -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "Имя пользователя или пароль не соответствуют пользователю." @@ -3569,48 +3610,48 @@ msgstr "" msgid "You've been Taigatized!" msgstr "Вы в Тайге!" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "Не существует роли с таким идентификатором" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "" "Дублирующий ключ, значение должно быть уникальны. Ключ '{}' уже существует." -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "ключ" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "Секретный ключ" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "код статуса" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "данные запроса" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "заголовки запроса" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "данные ответа" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "заголовки ответа" -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "длительность" diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index 56f4b91e..a22f76c6 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-07 11:11+0100\n" -"PO-Revision-Date: 2016-01-07 10:12+0000\n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Chinese Traditional (http://www.transifex.com/taiga-agile-llc/" "taiga-back/language/zh-Hant/)\n" @@ -22,309 +22,309 @@ msgstr "" "Language: zh-Hant\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: taiga/auth/api.py:99 +#: taiga/auth/api.py:100 msgid "Public register is disabled." msgstr "註冊功能暫不開放" -#: taiga/auth/api.py:132 +#: taiga/auth/api.py:133 msgid "invalid register type" msgstr "無效的註冊類型" -#: taiga/auth/api.py:145 +#: taiga/auth/api.py:146 msgid "invalid login type" msgstr "無效的登入類型" -#: taiga/auth/serializers.py:34 taiga/users/serializers.py:61 +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 msgid "invalid username" msgstr "無效使用者名稱" -#: taiga/auth/serializers.py:39 taiga/users/serializers.py:67 +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 msgid "" "Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" msgstr "必填。最多255字元(可為數字,字母,符號....)" -#: taiga/auth/services.py:73 +#: taiga/auth/services.py:74 msgid "Username is already in use." msgstr "本用戶名稱已被註冊" -#: taiga/auth/services.py:76 +#: taiga/auth/services.py:77 msgid "Email is already in use." msgstr "本電子郵件已使用" -#: taiga/auth/services.py:92 +#: taiga/auth/services.py:93 msgid "Token not matches any valid invitation." msgstr "代碼與任何有效的邀請不相符" -#: taiga/auth/services.py:120 +#: taiga/auth/services.py:121 msgid "User is already registered." msgstr "使用者已被註冊。" -#: taiga/auth/services.py:144 +#: taiga/auth/services.py:145 msgid "This user is already a member of the project." msgstr "" -#: taiga/auth/services.py:170 +#: taiga/auth/services.py:171 msgid "Error on creating new user." msgstr "無法創建新使用者" -#: taiga/auth/tokens.py:47 taiga/auth/tokens.py:54 -#: taiga/external_apps/services.py:34 +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 msgid "Invalid token" msgstr "無效的代碼 " -#: taiga/base/api/fields.py:268 +#: taiga/base/api/fields.py:292 msgid "This field is required." msgstr "此欄位是必要的。" -#: taiga/base/api/fields.py:269 taiga/base/api/relations.py:311 +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 msgid "Invalid value." msgstr "無效的數值" -#: taiga/base/api/fields.py:453 +#: taiga/base/api/fields.py:477 #, python-format msgid "'%s' value must be either True or False." msgstr "'%s' 數值必須為「是」或「否」。" -#: taiga/base/api/fields.py:517 +#: taiga/base/api/fields.py:541 msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "輸入有效的代稱,其包括字母,數字,底底線與連字符號" -#: taiga/base/api/fields.py:532 +#: taiga/base/api/fields.py:556 #, python-format msgid "Select a valid choice. %(value)s is not one of the available choices." msgstr "請做個有效的選擇。 %(value)s 並不是可以選的選項。" -#: taiga/base/api/fields.py:595 +#: taiga/base/api/fields.py:619 msgid "Enter a valid email address." msgstr "輸入無效之電子郵件地址" -#: taiga/base/api/fields.py:637 +#: taiga/base/api/fields.py:661 #, python-format msgid "Date has wrong format. Use one of these formats instead: %s" msgstr "資料格式錯誤,請改用這些格式取代:%s" -#: taiga/base/api/fields.py:701 +#: taiga/base/api/fields.py:725 #, python-format msgid "Datetime has wrong format. Use one of these formats instead: %s" msgstr "日期格式錯誤,請使用這些格式取代:%s" -#: taiga/base/api/fields.py:771 +#: taiga/base/api/fields.py:795 #, python-format msgid "Time has wrong format. Use one of these formats instead: %s" msgstr "時間格式錯誤,請使用這些格式取代:%s" -#: taiga/base/api/fields.py:828 +#: taiga/base/api/fields.py:852 msgid "Enter a whole number." msgstr "輸入一個整數" -#: taiga/base/api/fields.py:829 taiga/base/api/fields.py:882 +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 #, python-format msgid "Ensure this value is less than or equal to %(limit_value)s." msgstr "確認此值小於等於 %(limit_value)s." -#: taiga/base/api/fields.py:830 taiga/base/api/fields.py:883 +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 #, python-format msgid "Ensure this value is greater than or equal to %(limit_value)s." msgstr "確認此值大於等於 %(limit_value)s." -#: taiga/base/api/fields.py:860 +#: taiga/base/api/fields.py:884 #, python-format msgid "\"%s\" value must be a float." msgstr "\"%s\" 數值必須為一個浮點數" -#: taiga/base/api/fields.py:881 +#: taiga/base/api/fields.py:905 msgid "Enter a number." msgstr "輸入一組號碼" -#: taiga/base/api/fields.py:884 +#: taiga/base/api/fields.py:908 #, python-format msgid "Ensure that there are no more than %s digits in total." msgstr "確認全部沒有多於 %s位數 " -#: taiga/base/api/fields.py:885 +#: taiga/base/api/fields.py:909 #, python-format msgid "Ensure that there are no more than %s decimal places." msgstr "確認沒有多於 %s十進位數 " -#: taiga/base/api/fields.py:886 +#: taiga/base/api/fields.py:910 #, python-format msgid "Ensure that there are no more than %s digits before the decimal point." msgstr "確認在小數點前沒有多於 %s位數 " -#: taiga/base/api/fields.py:953 +#: taiga/base/api/fields.py:977 msgid "No file was submitted. Check the encoding type on the form." msgstr "無檔案送出,請 確認表格中的編碼 格式" -#: taiga/base/api/fields.py:954 +#: taiga/base/api/fields.py:978 msgid "No file was submitted." msgstr "無檔案送出" -#: taiga/base/api/fields.py:955 +#: taiga/base/api/fields.py:979 msgid "The submitted file is empty." msgstr "送出的檔案無內容" -#: taiga/base/api/fields.py:956 +#: taiga/base/api/fields.py:980 #, python-format msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "確認檔案名稱最多有 %(max)d 字元 (它有 %(length)d)." -#: taiga/base/api/fields.py:957 +#: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." msgstr "請上傳擋案或是勾選清除方格中二選一" -#: taiga/base/api/fields.py:997 +#: taiga/base/api/fields.py:1021 msgid "" "Upload a valid image. The file you uploaded was either not an image or a " "corrupted image." msgstr "上傳有效圖片,你所上傳的檔案非圖檔或已損壞" -#: taiga/base/api/pagination.py:212 +#: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." msgstr "頁數不是最後,或者它無法轉成整數 " -#: taiga/base/api/pagination.py:216 +#: taiga/base/api/pagination.py:217 #, python-format msgid "Invalid page (%(page_number)s): %(message)s" msgstr "無效頁面I (%(page_number)s): %(message)s" -#: taiga/base/api/permissions.py:63 +#: taiga/base/api/permissions.py:64 msgid "Invalid permission definition." msgstr "無效的權限定義 " -#: taiga/base/api/relations.py:221 +#: taiga/base/api/relations.py:245 #, python-format msgid "Invalid pk '%s' - object does not exist." msgstr "無效的pk '%s'- 物件並不存在" -#: taiga/base/api/relations.py:222 +#: taiga/base/api/relations.py:246 #, python-format msgid "Incorrect type. Expected pk value, received %s." msgstr "不正確類型,預期為pk值,收到%s." -#: taiga/base/api/relations.py:310 +#: taiga/base/api/relations.py:334 #, python-format msgid "Object with %s=%s does not exist." msgstr " 包含%s=%s物件不存在" -#: taiga/base/api/relations.py:346 +#: taiga/base/api/relations.py:370 msgid "Invalid hyperlink - No URL match" msgstr "無效的超鏈接 - 無相符之網址" -#: taiga/base/api/relations.py:347 +#: taiga/base/api/relations.py:371 msgid "Invalid hyperlink - Incorrect URL match" msgstr "無效的超鏈接 - 不正確的相符網址" -#: taiga/base/api/relations.py:348 +#: taiga/base/api/relations.py:372 msgid "Invalid hyperlink due to configuration error" msgstr "因設定出錯的無效超鏈接" -#: taiga/base/api/relations.py:349 +#: taiga/base/api/relations.py:373 msgid "Invalid hyperlink - object does not exist." msgstr "無效的超鏈接 - 物件並不存在" -#: taiga/base/api/relations.py:350 +#: taiga/base/api/relations.py:374 #, python-format msgid "Incorrect type. Expected url string, received %s." msgstr "不正確類型,預期為網址格式,收到的是 %s." -#: taiga/base/api/serializers.py:296 +#: taiga/base/api/serializers.py:320 msgid "Invalid data" msgstr "無效的資料" -#: taiga/base/api/serializers.py:388 +#: taiga/base/api/serializers.py:412 msgid "No input provided" msgstr "無輸入提供" -#: taiga/base/api/serializers.py:548 +#: taiga/base/api/serializers.py:572 msgid "Cannot create a new item, only existing items may be updated." msgstr "無法建立新項目,只能更新現有項目" -#: taiga/base/api/serializers.py:559 +#: taiga/base/api/serializers.py:583 msgid "Expected a list of items." msgstr "期待的項目清單" -#: taiga/base/api/views.py:100 +#: taiga/base/api/views.py:124 msgid "Not found" msgstr "找不到" -#: taiga/base/api/views.py:103 +#: taiga/base/api/views.py:127 msgid "Permission denied" msgstr "許可遭拒絕 " -#: taiga/base/api/views.py:451 +#: taiga/base/api/views.py:475 msgid "Server application error" msgstr "伺服器應用出錯" -#: taiga/base/connectors/exceptions.py:24 +#: taiga/base/connectors/exceptions.py:25 msgid "Connection error." msgstr "連結出錯" -#: taiga/base/exceptions.py:53 +#: taiga/base/exceptions.py:77 msgid "Malformed request." msgstr "遭封鎖" -#: taiga/base/exceptions.py:58 +#: taiga/base/exceptions.py:82 msgid "Incorrect authentication credentials." msgstr "不正確的授權認證 " -#: taiga/base/exceptions.py:63 +#: taiga/base/exceptions.py:87 msgid "Authentication credentials were not provided." msgstr "未担供授權認證 " -#: taiga/base/exceptions.py:68 +#: taiga/base/exceptions.py:92 msgid "You do not have permission to perform this action." msgstr "你無權限進行此動作" -#: taiga/base/exceptions.py:73 +#: taiga/base/exceptions.py:97 #, python-format msgid "Method '%s' not allowed." msgstr "不允許 '%s' 方式" -#: taiga/base/exceptions.py:81 +#: taiga/base/exceptions.py:105 msgid "Could not satisfy the request's Accept header" msgstr "無法滿藙要求其接受標頭 " -#: taiga/base/exceptions.py:90 +#: taiga/base/exceptions.py:114 #, python-format msgid "Unsupported media type '%s' in request." msgstr "不支援的資料類型'%s' 被提出" -#: taiga/base/exceptions.py:98 +#: taiga/base/exceptions.py:122 msgid "Request was throttled." msgstr "要求無法執行 " -#: taiga/base/exceptions.py:99 +#: taiga/base/exceptions.py:123 #, python-format msgid "Expected available in %d second%s." msgstr "預期在 %d 秒%s.內可取得 " -#: taiga/base/exceptions.py:113 +#: taiga/base/exceptions.py:137 msgid "Unexpected error" msgstr "無預期的錯誤" -#: taiga/base/exceptions.py:125 +#: taiga/base/exceptions.py:149 msgid "Not found." msgstr "找不到" -#: taiga/base/exceptions.py:130 +#: taiga/base/exceptions.py:154 msgid "Method not supported for this endpoint." msgstr "從GitHub取得原始碼" -#: taiga/base/exceptions.py:138 taiga/base/exceptions.py:146 +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 msgid "Wrong arguments." msgstr "錯誤的參數" -#: taiga/base/exceptions.py:150 +#: taiga/base/exceptions.py:174 msgid "Data validation error" msgstr "資料有效性錯誤" -#: taiga/base/exceptions.py:162 +#: taiga/base/exceptions.py:186 msgid "Integrity Error for wrong or invalid arguments" msgstr "因錯誤或無效參數,一致性出錯" -#: taiga/base/exceptions.py:169 +#: taiga/base/exceptions.py:193 msgid "Precondition error" msgstr "前提出錯" @@ -332,12 +332,12 @@ msgstr "前提出錯" msgid "Error in filter params types." msgstr "過濾參數類型出錯" -#: taiga/base/filters.py:132 taiga/base/filters.py:221 -#: taiga/base/filters.py:270 +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 msgid "'project' must be an integer value." msgstr "專案須為整數值" -#: taiga/base/tags.py:25 +#: taiga/base/tags.py:26 msgid "tags" msgstr "標籤" @@ -484,100 +484,100 @@ msgstr "" "\n" "評論: %(comment)s" -#: taiga/export_import/api.py:104 +#: taiga/export_import/api.py:105 msgid "We needed at least one role" msgstr "我們至少需要一個角色" -#: taiga/export_import/api.py:198 +#: taiga/export_import/api.py:199 msgid "Needed dump file" msgstr "需要的堆存檔案" -#: taiga/export_import/api.py:205 +#: taiga/export_import/api.py:206 msgid "Invalid dump format" msgstr "無效堆存格式" -#: taiga/export_import/dump_service.py:96 +#: taiga/export_import/dump_service.py:97 msgid "error importing project data" msgstr "滙入重要專案資料出錯" -#: taiga/export_import/dump_service.py:109 +#: taiga/export_import/dump_service.py:110 msgid "error importing lists of project attributes" msgstr "滙入標籤出錯" -#: taiga/export_import/dump_service.py:114 +#: taiga/export_import/dump_service.py:115 msgid "error importing default project attributes values" msgstr "滙入預設專案屬性數值出錯" -#: taiga/export_import/dump_service.py:124 +#: taiga/export_import/dump_service.py:125 msgid "error importing custom attributes" msgstr "滙入客制性屬出錯" -#: taiga/export_import/dump_service.py:129 +#: taiga/export_import/dump_service.py:130 msgid "error importing roles" msgstr "滙入角色出錯" -#: taiga/export_import/dump_service.py:144 +#: taiga/export_import/dump_service.py:145 msgid "error importing memberships" msgstr "滙入成員資格出錯" -#: taiga/export_import/dump_service.py:149 +#: taiga/export_import/dump_service.py:150 msgid "error importing sprints" msgstr "滙入衝刺任務出錯" -#: taiga/export_import/dump_service.py:154 +#: taiga/export_import/dump_service.py:155 msgid "error importing wiki pages" msgstr "滙入維基頁出錯" -#: taiga/export_import/dump_service.py:159 +#: taiga/export_import/dump_service.py:160 msgid "error importing wiki links" msgstr "滙入維基連結出錯" -#: taiga/export_import/dump_service.py:164 +#: taiga/export_import/dump_service.py:165 msgid "error importing issues" msgstr "滙入問題出錯" -#: taiga/export_import/dump_service.py:169 +#: taiga/export_import/dump_service.py:170 msgid "error importing user stories" msgstr "滙入使用者故事出錯" -#: taiga/export_import/dump_service.py:174 +#: taiga/export_import/dump_service.py:175 msgid "error importing tasks" msgstr "滙入任務出錯" -#: taiga/export_import/dump_service.py:179 +#: taiga/export_import/dump_service.py:180 msgid "error importing tags" msgstr "滙入標籤出錯" -#: taiga/export_import/dump_service.py:183 +#: taiga/export_import/dump_service.py:184 msgid "error importing timelines" msgstr "滙入時間軸出錯" -#: taiga/export_import/serializers.py:177 +#: taiga/export_import/serializers.py:178 msgid "{}=\"{}\" not found in this project" msgstr "{}=\"{}\" 無法在此專案中找到" -#: taiga/export_import/serializers.py:442 -#: taiga/projects/custom_attributes/serializers.py:103 +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 msgid "Invalid content. It must be {\"key\": \"value\",...}" msgstr "無效內容。必須為 {\"key\": \"value\",...}" -#: taiga/export_import/serializers.py:457 -#: taiga/projects/custom_attributes/serializers.py:118 +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 msgid "It contain invalid custom fields." msgstr "包括無效慣例欄位" -#: taiga/export_import/serializers.py:527 -#: taiga/projects/milestones/serializers.py:56 taiga/projects/serializers.py:70 -#: taiga/projects/serializers.py:96 taiga/projects/serializers.py:127 -#: taiga/projects/serializers.py:170 +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 msgid "Name duplicated for the project" msgstr "專案的名稱被複製了" -#: taiga/export_import/tasks.py:53 taiga/export_import/tasks.py:54 +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" msgstr "產生專案傾倒時出錯" -#: taiga/export_import/tasks.py:85 taiga/export_import/tasks.py:86 +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" msgstr "載入專案傾倒時出錯" @@ -813,76 +813,76 @@ msgstr "" msgid "[%(project)s] Your project dump has been imported" msgstr "[%(project)s] 您堆存的專案已滙入" -#: taiga/external_apps/api.py:40 taiga/external_apps/api.py:66 -#: taiga/external_apps/api.py:73 +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 msgid "Authentication required" msgstr "" -#: taiga/external_apps/models.py:33 -#: taiga/projects/custom_attributes/models.py:34 -#: taiga/projects/milestones/models.py:36 taiga/projects/models.py:134 -#: taiga/projects/models.py:351 taiga/projects/models.py:390 -#: taiga/projects/models.py:415 taiga/projects/models.py:452 -#: taiga/projects/models.py:475 taiga/projects/models.py:498 -#: taiga/projects/models.py:533 taiga/projects/models.py:556 -#: taiga/users/models.py:262 taiga/webhooks/models.py:27 +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 msgid "name" msgstr "姓名" -#: taiga/external_apps/models.py:35 +#: taiga/external_apps/models.py:36 msgid "Icon url" msgstr "" -#: taiga/external_apps/models.py:36 +#: taiga/external_apps/models.py:37 msgid "web" msgstr "" -#: taiga/external_apps/models.py:37 taiga/projects/attachments/models.py:74 -#: taiga/projects/custom_attributes/models.py:35 -#: taiga/projects/history/templatetags/functions.py:23 -#: taiga/projects/issues/models.py:61 taiga/projects/models.py:138 -#: taiga/projects/models.py:560 taiga/projects/tasks/models.py:60 -#: taiga/projects/userstories/models.py:91 +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 msgid "description" msgstr "描述" -#: taiga/external_apps/models.py:39 +#: taiga/external_apps/models.py:40 msgid "Next url" msgstr "" -#: taiga/external_apps/models.py:41 +#: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" msgstr "" -#: taiga/external_apps/models.py:55 taiga/projects/likes/models.py:50 -#: taiga/projects/notifications/models.py:84 taiga/projects/votes/models.py:50 +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" msgstr "" -#: taiga/external_apps/models.py:59 +#: taiga/external_apps/models.py:60 msgid "application" msgstr "" -#: taiga/feedback/models.py:23 taiga/users/models.py:116 +#: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" msgstr "全名" -#: taiga/feedback/models.py:25 taiga/users/models.py:111 +#: taiga/feedback/models.py:26 taiga/users/models.py:112 msgid "email address" msgstr "電子郵件" -#: taiga/feedback/models.py:27 +#: taiga/feedback/models.py:28 msgid "comment" msgstr "評論" -#: taiga/feedback/models.py:29 taiga/projects/attachments/models.py:61 -#: taiga/projects/custom_attributes/models.py:44 -#: taiga/projects/issues/models.py:53 taiga/projects/likes/models.py:52 -#: taiga/projects/milestones/models.py:47 taiga/projects/models.py:140 -#: taiga/projects/models.py:562 taiga/projects/notifications/models.py:86 -#: taiga/projects/tasks/models.py:46 taiga/projects/userstories/models.py:83 -#: taiga/projects/votes/models.py:52 taiga/projects/wiki/models.py:39 -#: taiga/userstorage/models.py:27 +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 msgid "created date" msgstr "創建日期" @@ -911,7 +911,7 @@ msgstr "" "

%(comment)s

" #: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 -#: taiga/users/admin.py:51 +#: taiga/users/admin.py:52 msgid "Extra info" msgstr "額外資訊" @@ -944,39 +944,39 @@ msgstr "" "\n" "[Taiga] 回饋來自 %(full_name)s <%(email)s>\n" -#: taiga/hooks/api.py:52 +#: taiga/hooks/api.py:53 msgid "The payload is not a valid json" msgstr "載荷為無效json" -#: taiga/hooks/api.py:61 taiga/projects/issues/api.py:141 -#: taiga/projects/tasks/api.py:84 taiga/projects/userstories/api.py:109 +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 msgid "The project doesn't exist" msgstr "專案不存在" -#: taiga/hooks/api.py:64 +#: taiga/hooks/api.py:65 msgid "Bad signature" msgstr "錯誤簽名" -#: taiga/hooks/bitbucket/event_hooks.py:84 taiga/hooks/github/event_hooks.py:75 -#: taiga/hooks/gitlab/event_hooks.py:73 +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 msgid "The referenced element doesn't exist" msgstr "參考元素不存在" -#: taiga/hooks/bitbucket/event_hooks.py:91 taiga/hooks/github/event_hooks.py:82 -#: taiga/hooks/gitlab/event_hooks.py:80 +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 msgid "The status doesn't exist" msgstr "狀態不存在" -#: taiga/hooks/bitbucket/event_hooks.py:97 +#: taiga/hooks/bitbucket/event_hooks.py:98 msgid "Status changed from BitBucket commit" msgstr "來自BitBucket 投入的狀態更新" -#: taiga/hooks/bitbucket/event_hooks.py:126 -#: taiga/hooks/github/event_hooks.py:141 taiga/hooks/gitlab/event_hooks.py:113 +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 msgid "Invalid issue information" msgstr "無效的問題資訊" -#: taiga/hooks/bitbucket/event_hooks.py:142 +#: taiga/hooks/bitbucket/event_hooks.py:143 #, python-brace-format msgid "" "Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -993,17 +993,17 @@ msgstr "" "\n" "{description}" -#: taiga/hooks/bitbucket/event_hooks.py:153 +#: taiga/hooks/bitbucket/event_hooks.py:154 msgid "Issue created from BitBucket." msgstr "來自BitBucket的問題:" -#: taiga/hooks/bitbucket/event_hooks.py:177 -#: taiga/hooks/github/event_hooks.py:177 taiga/hooks/github/event_hooks.py:192 -#: taiga/hooks/gitlab/event_hooks.py:152 +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 msgid "Invalid issue comment information" msgstr "無效的議題評論資訊" -#: taiga/hooks/bitbucket/event_hooks.py:185 +#: taiga/hooks/bitbucket/event_hooks.py:186 #, python-brace-format msgid "" "Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " @@ -1020,7 +1020,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/bitbucket/event_hooks.py:196 +#: taiga/hooks/bitbucket/event_hooks.py:197 #, python-brace-format msgid "" "Comment From BitBucket:\n" @@ -1031,7 +1031,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:96 +#: taiga/hooks/github/event_hooks.py:97 #, python-brace-format msgid "" "Status changed by [@{github_user_name}]({github_user_url} \"See " @@ -1042,11 +1042,11 @@ msgstr "" "@{github_user_name}'s GitHub profile\") 來自GitHub之投入 [{commit_id}]" "({commit_url} \"See commit '{commit_id} - {commit_message}'\")." -#: taiga/hooks/github/event_hooks.py:107 +#: taiga/hooks/github/event_hooks.py:108 msgid "Status changed from GitHub commit." msgstr "來自GitHub投入的狀態更新" -#: taiga/hooks/github/event_hooks.py:157 +#: taiga/hooks/github/event_hooks.py:158 #, python-brace-format msgid "" "Issue created by [@{github_user_name}]({github_user_url} \"See " @@ -1061,11 +1061,11 @@ msgstr "" "[gh#{number} - {subject}]({github_url} ”跳至 'gh#{number} - {subject}'\") \n" "{description}" -#: taiga/hooks/github/event_hooks.py:168 +#: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." msgstr "自來GitHub 的問題 " -#: taiga/hooks/github/event_hooks.py:200 +#: taiga/hooks/github/event_hooks.py:201 #, python-brace-format msgid "" "Comment by [@{github_user_name}]({github_user_url} \"See " @@ -1081,7 +1081,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/github/event_hooks.py:211 +#: taiga/hooks/github/event_hooks.py:212 #, python-brace-format msgid "" "Comment From GitHub:\n" @@ -1092,15 +1092,15 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:86 +#: taiga/hooks/gitlab/event_hooks.py:87 msgid "Status changed from GitLab commit" msgstr "來自GitLab提供的狀態變更" -#: taiga/hooks/gitlab/event_hooks.py:128 +#: taiga/hooks/gitlab/event_hooks.py:129 msgid "Created from GitLab" msgstr "創建立GitLab" -#: taiga/hooks/gitlab/event_hooks.py:160 +#: taiga/hooks/gitlab/event_hooks.py:161 #, python-brace-format msgid "" "Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " @@ -1117,7 +1117,7 @@ msgstr "" "\n" "{message}" -#: taiga/hooks/gitlab/event_hooks.py:171 +#: taiga/hooks/gitlab/event_hooks.py:172 #, python-brace-format msgid "" "Comment From GitLab:\n" @@ -1128,308 +1128,316 @@ msgstr "" "\n" "{message}" -#: taiga/permissions/permissions.py:21 taiga/permissions/permissions.py:31 -#: taiga/permissions/permissions.py:51 +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 msgid "View project" msgstr "檢視專案" -#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 -#: taiga/permissions/permissions.py:53 +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 msgid "View milestones" msgstr "檢視里程碑" -#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 msgid "View user stories" msgstr "檢視使用者故事" -#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:35 -#: taiga/permissions/permissions.py:63 +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 msgid "View tasks" msgstr "檢視任務 " -#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:34 -#: taiga/permissions/permissions.py:68 +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 msgid "View issues" msgstr "檢視問題 " -#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:36 -#: taiga/permissions/permissions.py:73 +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 msgid "View wiki pages" msgstr "檢視維基頁" -#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 -#: taiga/permissions/permissions.py:78 +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 msgid "View wiki links" msgstr "檢視維基連結" -#: taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:39 msgid "Request membership" msgstr "要求加入會員" -#: taiga/permissions/permissions.py:39 +#: taiga/permissions/permissions.py:40 msgid "Add user story to project" msgstr "專案中新增使用者故事" -#: taiga/permissions/permissions.py:40 +#: taiga/permissions/permissions.py:41 msgid "Add comments to user stories" msgstr "使用者故事附加評論" -#: taiga/permissions/permissions.py:41 +#: taiga/permissions/permissions.py:42 msgid "Add comments to tasks" msgstr "任務附加評論" -#: taiga/permissions/permissions.py:42 +#: taiga/permissions/permissions.py:43 msgid "Add issues" msgstr "加入問題 " -#: taiga/permissions/permissions.py:43 +#: taiga/permissions/permissions.py:44 msgid "Add comments to issues" msgstr "問題加入評論" -#: taiga/permissions/permissions.py:44 taiga/permissions/permissions.py:74 +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 msgid "Add wiki page" msgstr "新增維基頁" -#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 msgid "Modify wiki page" msgstr "修改維基頁" -#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:79 +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 msgid "Add wiki link" msgstr "新增維基連結" -#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 msgid "Modify wiki link" msgstr "修改維基連結" -#: taiga/permissions/permissions.py:54 +#: taiga/permissions/permissions.py:55 msgid "Add milestone" msgstr "加入里程碑" -#: taiga/permissions/permissions.py:55 +#: taiga/permissions/permissions.py:56 msgid "Modify milestone" msgstr "修改里程碑" -#: taiga/permissions/permissions.py:56 +#: taiga/permissions/permissions.py:57 msgid "Delete milestone" msgstr "刪除里程碑 " -#: taiga/permissions/permissions.py:58 +#: taiga/permissions/permissions.py:59 msgid "View user story" msgstr "檢視使用者故事" -#: taiga/permissions/permissions.py:59 +#: taiga/permissions/permissions.py:60 msgid "Add user story" msgstr "新增使用者故事" -#: taiga/permissions/permissions.py:60 +#: taiga/permissions/permissions.py:61 msgid "Modify user story" msgstr "修改使用者故事" -#: taiga/permissions/permissions.py:61 +#: taiga/permissions/permissions.py:62 msgid "Delete user story" msgstr "刪除使用者故事" -#: taiga/permissions/permissions.py:64 +#: taiga/permissions/permissions.py:65 msgid "Add task" msgstr "新增任務 " -#: taiga/permissions/permissions.py:65 +#: taiga/permissions/permissions.py:66 msgid "Modify task" msgstr "修改任務 " -#: taiga/permissions/permissions.py:66 +#: taiga/permissions/permissions.py:67 msgid "Delete task" msgstr "刪除任務 " -#: taiga/permissions/permissions.py:69 +#: taiga/permissions/permissions.py:70 msgid "Add issue" msgstr "新增問題 " -#: taiga/permissions/permissions.py:70 +#: taiga/permissions/permissions.py:71 msgid "Modify issue" msgstr "修改問題" -#: taiga/permissions/permissions.py:71 +#: taiga/permissions/permissions.py:72 msgid "Delete issue" msgstr "刪除問題 " -#: taiga/permissions/permissions.py:76 +#: taiga/permissions/permissions.py:77 msgid "Delete wiki page" msgstr "刪除維基頁 " -#: taiga/permissions/permissions.py:81 +#: taiga/permissions/permissions.py:82 msgid "Delete wiki link" msgstr "刪除維基連結" -#: taiga/permissions/permissions.py:85 +#: taiga/permissions/permissions.py:86 msgid "Modify project" msgstr "修改專案" -#: taiga/permissions/permissions.py:86 +#: taiga/permissions/permissions.py:87 msgid "Add member" msgstr "新增成員" -#: taiga/permissions/permissions.py:87 +#: taiga/permissions/permissions.py:88 msgid "Remove member" msgstr "移除成員" -#: taiga/permissions/permissions.py:88 +#: taiga/permissions/permissions.py:89 msgid "Delete project" msgstr "刪除專案" -#: taiga/permissions/permissions.py:89 +#: taiga/permissions/permissions.py:90 msgid "Admin project values" msgstr "管理員專案數值" -#: taiga/permissions/permissions.py:90 +#: taiga/permissions/permissions.py:91 msgid "Admin roles" msgstr "管理員角色" -#: taiga/projects/api.py:202 +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "不完整參數" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "無效的圖片檔案" + +#: taiga/projects/api.py:286 msgid "Not valid template name" msgstr "非有效樣板名稱 " -#: taiga/projects/api.py:205 +#: taiga/projects/api.py:289 msgid "Not valid template description" msgstr "無效樣板描述" -#: taiga/projects/api.py:458 taiga/projects/serializers.py:264 +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 msgid "At least one of the user must be an active admin" msgstr "至少需有一位使用者擔任管理員" -#: taiga/projects/api.py:488 +#: taiga/projects/api.py:577 msgid "You don't have permisions to see that." msgstr "您無觀看權限" -#: taiga/projects/attachments/api.py:47 +#: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" msgstr "" -#: taiga/projects/attachments/api.py:62 +#: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" msgstr "專案ID不符合物件與專案" -#: taiga/projects/attachments/models.py:52 taiga/projects/issues/models.py:38 -#: taiga/projects/milestones/models.py:41 taiga/projects/models.py:145 -#: taiga/projects/notifications/models.py:59 taiga/projects/tasks/models.py:37 -#: taiga/projects/userstories/models.py:65 taiga/projects/wiki/models.py:35 -#: taiga/userstorage/models.py:25 +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 msgid "owner" msgstr "所有者" -#: taiga/projects/attachments/models.py:54 -#: taiga/projects/custom_attributes/models.py:41 -#: taiga/projects/issues/models.py:51 taiga/projects/milestones/models.py:43 -#: taiga/projects/models.py:339 taiga/projects/models.py:365 -#: taiga/projects/models.py:396 taiga/projects/models.py:425 -#: taiga/projects/models.py:458 taiga/projects/models.py:481 -#: taiga/projects/models.py:508 taiga/projects/models.py:539 -#: taiga/projects/notifications/models.py:71 -#: taiga/projects/notifications/models.py:88 taiga/projects/tasks/models.py:41 -#: taiga/projects/userstories/models.py:63 taiga/projects/wiki/models.py:29 -#: taiga/projects/wiki/models.py:67 taiga/users/models.py:275 +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 msgid "project" msgstr "專案" -#: taiga/projects/attachments/models.py:56 +#: taiga/projects/attachments/models.py:57 msgid "content type" msgstr "內容類型" -#: taiga/projects/attachments/models.py:58 +#: taiga/projects/attachments/models.py:59 msgid "object id" msgstr "物件ID" -#: taiga/projects/attachments/models.py:64 -#: taiga/projects/custom_attributes/models.py:46 -#: taiga/projects/issues/models.py:56 taiga/projects/milestones/models.py:50 -#: taiga/projects/models.py:143 taiga/projects/models.py:565 -#: taiga/projects/tasks/models.py:49 taiga/projects/userstories/models.py:86 -#: taiga/projects/wiki/models.py:42 taiga/userstorage/models.py:29 +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 msgid "modified date" msgstr "修改日期" -#: taiga/projects/attachments/models.py:69 +#: taiga/projects/attachments/models.py:70 msgid "attached file" msgstr "附加檔案" -#: taiga/projects/attachments/models.py:71 +#: taiga/projects/attachments/models.py:72 msgid "sha1" msgstr "" -#: taiga/projects/attachments/models.py:73 +#: taiga/projects/attachments/models.py:74 msgid "is deprecated" msgstr "棄用" -#: taiga/projects/attachments/models.py:75 -#: taiga/projects/custom_attributes/models.py:39 -#: taiga/projects/milestones/models.py:56 taiga/projects/models.py:355 -#: taiga/projects/models.py:392 taiga/projects/models.py:419 -#: taiga/projects/models.py:454 taiga/projects/models.py:477 -#: taiga/projects/models.py:502 taiga/projects/models.py:535 -#: taiga/projects/wiki/models.py:72 taiga/users/models.py:270 +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 msgid "order" msgstr "次序" -#: taiga/projects/choices.py:21 +#: taiga/projects/choices.py:22 msgid "AppearIn" msgstr "AppearIn" -#: taiga/projects/choices.py:22 +#: taiga/projects/choices.py:23 msgid "Jitsi" msgstr "Jitsi" -#: taiga/projects/choices.py:23 +#: taiga/projects/choices.py:24 msgid "Custom" msgstr "自定" -#: taiga/projects/choices.py:24 +#: taiga/projects/choices.py:25 msgid "Talky" msgstr "Talky" -#: taiga/projects/custom_attributes/choices.py:25 +#: taiga/projects/custom_attributes/choices.py:26 msgid "Text" msgstr "單行文字" -#: taiga/projects/custom_attributes/choices.py:26 +#: taiga/projects/custom_attributes/choices.py:27 msgid "Multi-Line Text" msgstr "多行列文字" -#: taiga/projects/custom_attributes/choices.py:27 +#: taiga/projects/custom_attributes/choices.py:28 msgid "Date" msgstr "" -#: taiga/projects/custom_attributes/models.py:38 -#: taiga/projects/issues/models.py:46 +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 msgid "type" msgstr "類型" -#: taiga/projects/custom_attributes/models.py:87 +#: taiga/projects/custom_attributes/models.py:88 msgid "values" msgstr "價值" -#: taiga/projects/custom_attributes/models.py:97 -#: taiga/projects/tasks/models.py:33 taiga/projects/userstories/models.py:35 +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 msgid "user story" msgstr "使用者故事" -#: taiga/projects/custom_attributes/models.py:112 +#: taiga/projects/custom_attributes/models.py:113 msgid "task" msgstr "任務 " -#: taiga/projects/custom_attributes/models.py:127 +#: taiga/projects/custom_attributes/models.py:128 msgid "issue" msgstr "問題 " -#: taiga/projects/custom_attributes/serializers.py:57 +#: taiga/projects/custom_attributes/serializers.py:58 msgid "Already exists one with the same name." msgstr "已存在相同姓名" -#: taiga/projects/history/api.py:70 +#: taiga/projects/history/api.py:71 msgid "Comment already deleted" msgstr "評論已刪除 " -#: taiga/projects/history/api.py:89 +#: taiga/projects/history/api.py:90 msgid "Comment not deleted" msgstr "不可刪除 之評論 " @@ -1497,7 +1505,7 @@ msgstr "移除 " #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 -#: taiga/projects/services/stats.py:55 taiga/projects/services/stats.py:56 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 msgid "Unassigned" msgstr "無指定" @@ -1544,120 +1552,115 @@ msgstr "來自:" msgid "To:" msgstr "給:" -#: taiga/projects/history/templatetags/functions.py:24 -#: taiga/projects/wiki/models.py:33 +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 msgid "content" msgstr "內容" -#: taiga/projects/history/templatetags/functions.py:25 -#: taiga/projects/mixins/blocked.py:31 +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 msgid "blocked note" msgstr "封鎖筆記" -#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/history/templatetags/functions.py:27 msgid "sprint" msgstr "衝刺任務" -#: taiga/projects/issues/api.py:162 +#: taiga/projects/issues/api.py:163 msgid "You don't have permissions to set this sprint to this issue." msgstr "您無權限設定此問題的衝刺任務" -#: taiga/projects/issues/api.py:166 +#: taiga/projects/issues/api.py:167 msgid "You don't have permissions to set this status to this issue." msgstr "您無權限設定此問題的狀態" -#: taiga/projects/issues/api.py:170 +#: taiga/projects/issues/api.py:171 msgid "You don't have permissions to set this severity to this issue." msgstr "您無權限設定此問題的嚴重性" -#: taiga/projects/issues/api.py:174 +#: taiga/projects/issues/api.py:175 msgid "You don't have permissions to set this priority to this issue." msgstr "您無權限設定此問題的優先性" -#: taiga/projects/issues/api.py:178 +#: taiga/projects/issues/api.py:179 msgid "You don't have permissions to set this type to this issue." msgstr "您無權限設定此問題的類型" -#: taiga/projects/issues/models.py:36 taiga/projects/tasks/models.py:35 -#: taiga/projects/userstories/models.py:58 +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 msgid "ref" msgstr "ref" -#: taiga/projects/issues/models.py:40 taiga/projects/tasks/models.py:39 -#: taiga/projects/userstories/models.py:68 +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 msgid "status" msgstr "狀態" -#: taiga/projects/issues/models.py:42 +#: taiga/projects/issues/models.py:43 msgid "severity" msgstr "嚴重性" -#: taiga/projects/issues/models.py:44 +#: taiga/projects/issues/models.py:45 msgid "priority" msgstr "優先性" -#: taiga/projects/issues/models.py:49 taiga/projects/tasks/models.py:44 -#: taiga/projects/userstories/models.py:61 +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 msgid "milestone" msgstr "里程碑" -#: taiga/projects/issues/models.py:58 taiga/projects/tasks/models.py:51 +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 msgid "finished date" msgstr "完成日期" -#: taiga/projects/issues/models.py:60 taiga/projects/tasks/models.py:53 -#: taiga/projects/userstories/models.py:90 +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 msgid "subject" msgstr "主旨" -#: taiga/projects/issues/models.py:64 taiga/projects/tasks/models.py:63 -#: taiga/projects/userstories/models.py:94 +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 msgid "assigned to" msgstr "指派給" -#: taiga/projects/issues/models.py:66 taiga/projects/tasks/models.py:67 -#: taiga/projects/userstories/models.py:104 +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 msgid "external reference" msgstr "外部參考" -#: taiga/projects/likes/models.py:28 taiga/projects/votes/models.py:28 -msgid "count" -msgstr "" - -#: taiga/projects/likes/models.py:31 taiga/projects/likes/models.py:32 -#: taiga/projects/likes/models.py:56 -msgid "Likes" -msgstr "" - -#: taiga/projects/likes/models.py:55 +#: taiga/projects/likes/models.py:35 msgid "Like" msgstr "" -#: taiga/projects/milestones/models.py:39 taiga/projects/models.py:136 -#: taiga/projects/models.py:353 taiga/projects/models.py:417 -#: taiga/projects/models.py:500 taiga/projects/models.py:558 -#: taiga/projects/wiki/models.py:31 taiga/users/models.py:264 +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" msgstr "代稱" -#: taiga/projects/milestones/models.py:44 +#: taiga/projects/milestones/models.py:45 msgid "estimated start date" msgstr "预計開始日期" -#: taiga/projects/milestones/models.py:45 +#: taiga/projects/milestones/models.py:46 msgid "estimated finish date" msgstr "預計完成日期" -#: taiga/projects/milestones/models.py:52 taiga/projects/models.py:357 -#: taiga/projects/models.py:421 taiga/projects/models.py:504 +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 msgid "is closed" msgstr "被關閉" -#: taiga/projects/milestones/models.py:54 +#: taiga/projects/milestones/models.py:55 msgid "disponibility" msgstr "disponibility" -#: taiga/projects/milestones/models.py:79 +#: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." msgstr "預估開始必須在預估結束之前" @@ -1665,230 +1668,275 @@ msgstr "預估開始必須在預估結束之前" msgid "There's no sprint with that id" msgstr "該用戶無衝刺任務 " -#: taiga/projects/mixins/blocked.py:29 +#: taiga/projects/mixins/blocked.py:30 msgid "is blocked" msgstr "已封鎖" -#: taiga/projects/mixins/ordering.py:47 +#: taiga/projects/mixins/ordering.py:48 #, python-brace-format msgid "'{param}' parameter is mandatory" msgstr "'{param}' 參數為必要" -#: taiga/projects/mixins/ordering.py:51 +#: taiga/projects/mixins/ordering.py:52 msgid "'project' parameter is mandatory" msgstr "'project'參數為必要" -#: taiga/projects/models.py:66 +#: taiga/projects/models.py:95 msgid "email" msgstr "電子郵件" -#: taiga/projects/models.py:68 +#: taiga/projects/models.py:97 msgid "create at" msgstr "創建於" -#: taiga/projects/models.py:70 taiga/users/models.py:133 +#: taiga/projects/models.py:99 taiga/users/models.py:134 msgid "token" msgstr "代號" -#: taiga/projects/models.py:76 +#: taiga/projects/models.py:105 msgid "invitation extra text" msgstr "額外文案邀請" -#: taiga/projects/models.py:79 +#: taiga/projects/models.py:108 msgid "user order" msgstr "使用者次序" -#: taiga/projects/models.py:89 +#: taiga/projects/models.py:118 msgid "The user is already member of the project" msgstr "使用者已是專案成員" -#: taiga/projects/models.py:104 +#: taiga/projects/models.py:133 msgid "default points" msgstr "預設點數" -#: taiga/projects/models.py:108 +#: taiga/projects/models.py:137 msgid "default US status" msgstr "預設使用者故事狀態" -#: taiga/projects/models.py:112 +#: taiga/projects/models.py:141 msgid "default task status" msgstr "預設任務狀態" -#: taiga/projects/models.py:115 +#: taiga/projects/models.py:144 msgid "default priority" msgstr "預設優先性" -#: taiga/projects/models.py:118 +#: taiga/projects/models.py:147 msgid "default severity" msgstr "預設嚴重性" -#: taiga/projects/models.py:122 +#: taiga/projects/models.py:151 msgid "default issue status" msgstr "預設問題狀態" -#: taiga/projects/models.py:126 +#: taiga/projects/models.py:155 msgid "default issue type" msgstr "預設議題類型" -#: taiga/projects/models.py:147 +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 msgid "members" msgstr "成員" -#: taiga/projects/models.py:150 +#: taiga/projects/models.py:184 msgid "total of milestones" msgstr "全部里程碑" -#: taiga/projects/models.py:151 +#: taiga/projects/models.py:185 msgid "total story points" msgstr "全部故事點數" -#: taiga/projects/models.py:154 taiga/projects/models.py:571 +#: taiga/projects/models.py:188 taiga/projects/models.py:697 msgid "active backlog panel" msgstr "活躍的待辦任務優先表面板" -#: taiga/projects/models.py:156 taiga/projects/models.py:573 +#: taiga/projects/models.py:190 taiga/projects/models.py:699 msgid "active kanban panel" msgstr "活躍的看板式面板" -#: taiga/projects/models.py:158 taiga/projects/models.py:575 +#: taiga/projects/models.py:192 taiga/projects/models.py:701 msgid "active wiki panel" msgstr "活躍的維基面板" -#: taiga/projects/models.py:160 taiga/projects/models.py:577 +#: taiga/projects/models.py:194 taiga/projects/models.py:703 msgid "active issues panel" msgstr "活躍的問題面板" -#: taiga/projects/models.py:163 taiga/projects/models.py:580 +#: taiga/projects/models.py:197 taiga/projects/models.py:706 msgid "videoconference system" msgstr "視訊會議系統" -#: taiga/projects/models.py:165 taiga/projects/models.py:582 +#: taiga/projects/models.py:199 taiga/projects/models.py:708 msgid "videoconference extra data" msgstr "視訊會議額外資料" -#: taiga/projects/models.py:170 +#: taiga/projects/models.py:204 msgid "creation template" msgstr "創建模版" -#: taiga/projects/models.py:173 +#: taiga/projects/models.py:208 msgid "anonymous permissions" msgstr "匿名權限" -#: taiga/projects/models.py:177 +#: taiga/projects/models.py:212 msgid "user permissions" msgstr "使用者權限" -#: taiga/projects/models.py:180 +#: taiga/projects/models.py:215 msgid "is private" msgstr "私密" -#: taiga/projects/models.py:191 +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 msgid "tags colors" msgstr "標籤顏色" -#: taiga/projects/models.py:340 -msgid "modules config" -msgstr "模組設定" - -#: taiga/projects/models.py:359 -msgid "is archived" -msgstr "已歸檔" - -#: taiga/projects/models.py:361 taiga/projects/models.py:423 -#: taiga/projects/models.py:456 taiga/projects/models.py:479 -#: taiga/projects/models.py:506 taiga/projects/models.py:537 -#: taiga/users/models.py:118 -msgid "color" -msgstr "顏色" - -#: taiga/projects/models.py:363 -msgid "work in progress limit" -msgstr "工作進度限制" - -#: taiga/projects/models.py:394 taiga/userstorage/models.py:31 -msgid "value" -msgstr "價值" - -#: taiga/projects/models.py:568 -msgid "default owner's role" -msgstr "預設所有者角色" - -#: taiga/projects/models.py:584 -msgid "default options" -msgstr "預設選項" - -#: taiga/projects/models.py:585 -msgid "us statuses" -msgstr "我們狀況" - -#: taiga/projects/models.py:586 taiga/projects/userstories/models.py:41 -#: taiga/projects/userstories/models.py:73 -msgid "points" -msgstr "點數" - -#: taiga/projects/models.py:587 -msgid "task statuses" -msgstr "任務狀況" - -#: taiga/projects/models.py:588 -msgid "issue statuses" -msgstr "問題狀況" - -#: taiga/projects/models.py:589 -msgid "issue types" -msgstr "問題類型" - -#: taiga/projects/models.py:590 -msgid "priorities" -msgstr "優先性" - -#: taiga/projects/models.py:591 -msgid "severities" -msgstr "嚴重性" - -#: taiga/projects/models.py:592 -msgid "roles" -msgstr "角色" - -#: taiga/projects/notifications/choices.py:28 -msgid "Involved" -msgstr "" - -#: taiga/projects/notifications/choices.py:29 -msgid "All" -msgstr "" - -#: taiga/projects/notifications/choices.py:30 -msgid "None" -msgstr "" - -#: taiga/projects/notifications/models.py:61 -msgid "created date time" -msgstr "創建日期時間" - -#: taiga/projects/notifications/models.py:63 +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 msgid "updated date time" msgstr "更新日期時間" -#: taiga/projects/notifications/models.py:65 +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "模組設定" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "已歸檔" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "顏色" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "工作進度限制" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "價值" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "預設所有者角色" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "預設選項" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "我們狀況" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "點數" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "任務狀況" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "問題狀況" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "問題類型" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "優先性" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "嚴重性" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "角色" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "創建日期時間" + +#: taiga/projects/notifications/models.py:66 msgid "history entries" msgstr "歷史輸入" -#: taiga/projects/notifications/models.py:68 +#: taiga/projects/notifications/models.py:69 msgid "notify users" msgstr "通知用戶" -#: taiga/projects/notifications/models.py:90 #: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 msgid "Watched" msgstr "" -#: taiga/projects/notifications/services.py:65 -#: taiga/projects/notifications/services.py:79 +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 msgid "Notify exists for specified user and project" msgstr "通知特定使用者與專案退出" -#: taiga/projects/notifications/services.py:427 +#: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" msgstr "" @@ -2613,103 +2661,103 @@ msgstr "" "\n" "[%(project)s] 刪除維基頁 \"%(page)s\"\n" -#: taiga/projects/notifications/validators.py:46 +#: taiga/projects/notifications/validators.py:47 msgid "Watchers contains invalid users" msgstr "監督者包含無效使用者" -#: taiga/projects/occ/mixins.py:35 +#: taiga/projects/occ/mixins.py:36 msgid "The version must be an integer" msgstr "版本須為整數值 " -#: taiga/projects/occ/mixins.py:58 +#: taiga/projects/occ/mixins.py:59 msgid "The version parameter is not valid" msgstr "本版本參數無效" -#: taiga/projects/occ/mixins.py:74 +#: taiga/projects/occ/mixins.py:75 msgid "The version doesn't match with the current one" msgstr "版本與目前使用不相符" -#: taiga/projects/occ/mixins.py:93 +#: taiga/projects/occ/mixins.py:94 msgid "version" msgstr "版本" -#: taiga/projects/permissions.py:39 +#: taiga/projects/permissions.py:40 msgid "You can't leave the project if there are no more owners" msgstr "如果專案無所有者,你將無法脫離該專案" -#: taiga/projects/serializers.py:240 +#: taiga/projects/serializers.py:237 msgid "Email address is already taken" msgstr "電子郵件已使用" -#: taiga/projects/serializers.py:252 +#: taiga/projects/serializers.py:249 msgid "Invalid role for the project" msgstr "專案無效的角色" -#: taiga/projects/serializers.py:397 +#: taiga/projects/serializers.py:425 msgid "Default options" msgstr "預設選項" -#: taiga/projects/serializers.py:398 +#: taiga/projects/serializers.py:426 msgid "User story's statuses" msgstr "使用者故事狀態" -#: taiga/projects/serializers.py:399 +#: taiga/projects/serializers.py:427 msgid "Points" msgstr "點數" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:428 msgid "Task's statuses" msgstr "任務狀態" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:429 msgid "Issue's statuses" msgstr "問題狀態" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:430 msgid "Issue's types" msgstr "問題類型" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:431 msgid "Priorities" msgstr "優先性" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:432 msgid "Severities" msgstr "嚴重性" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:433 msgid "Roles" msgstr "角色" -#: taiga/projects/services/stats.py:197 +#: taiga/projects/services/stats.py:198 msgid "Future sprint" msgstr "未來之衝刺" -#: taiga/projects/services/stats.py:215 +#: taiga/projects/services/stats.py:216 msgid "Project End" msgstr "專案結束" -#: taiga/projects/tasks/api.py:111 taiga/projects/tasks/api.py:120 +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 msgid "You don't have permissions to set this sprint to this task." msgstr "無權限更動此任務下的衝刺任務" -#: taiga/projects/tasks/api.py:114 +#: taiga/projects/tasks/api.py:115 msgid "You don't have permissions to set this user story to this task." msgstr "無權限更動此務下的使用者故事" -#: taiga/projects/tasks/api.py:117 +#: taiga/projects/tasks/api.py:118 msgid "You don't have permissions to set this status to this task." msgstr "無權限更動此任務下的狀態" -#: taiga/projects/tasks/models.py:56 +#: taiga/projects/tasks/models.py:57 msgid "us order" msgstr "使用者故事次序" -#: taiga/projects/tasks/models.py:58 +#: taiga/projects/tasks/models.py:59 msgid "taskboard order" msgstr "任務板次序" -#: taiga/projects/tasks/models.py:66 +#: taiga/projects/tasks/models.py:67 msgid "is iocaine" msgstr "挑戰全新任務" @@ -2863,12 +2911,12 @@ msgstr "" "[Taiga] 被加入專案 '%(project)s'\n" #. Translators: Name of scrum project template. -#: taiga/projects/translations.py:28 +#: taiga/projects/translations.py:29 msgid "Scrum" msgstr "Scrum" #. Translators: Description of scrum project template. -#: taiga/projects/translations.py:30 +#: taiga/projects/translations.py:31 msgid "" "The agile product backlog in Scrum is a prioritized features list, " "containing short descriptions of all functionality desired in the product. " @@ -2882,12 +2930,12 @@ msgstr "" "客戶中學到的回應,加以改變或調整。" #. Translators: Name of kanban project template. -#: taiga/projects/translations.py:33 +#: taiga/projects/translations.py:34 msgid "Kanban" msgstr "Kanban" #. Translators: Description of kanban project template. -#: taiga/projects/translations.py:35 +#: taiga/projects/translations.py:36 msgid "" "Kanban is a method for managing knowledge work with an emphasis on just-in-" "time delivery while not overloading the team members. In this approach, the " @@ -2898,350 +2946,342 @@ msgstr "" "定義任務到其傳送給客戶的過程,以參與者可以看到且成員從次序排列上推動來呈現" #. Translators: User story point value (value = undefined) -#: taiga/projects/translations.py:43 +#: taiga/projects/translations.py:44 msgid "?" msgstr "?" #. Translators: User story point value (value = 0) -#: taiga/projects/translations.py:45 +#: taiga/projects/translations.py:46 msgid "0" msgstr "0" #. Translators: User story point value (value = 0.5) -#: taiga/projects/translations.py:47 +#: taiga/projects/translations.py:48 msgid "1/2" msgstr "1/2" #. Translators: User story point value (value = 1) -#: taiga/projects/translations.py:49 +#: taiga/projects/translations.py:50 msgid "1" msgstr "1" #. Translators: User story point value (value = 2) -#: taiga/projects/translations.py:51 +#: taiga/projects/translations.py:52 msgid "2" msgstr "2" #. Translators: User story point value (value = 3) -#: taiga/projects/translations.py:53 +#: taiga/projects/translations.py:54 msgid "3" msgstr "3" #. Translators: User story point value (value = 5) -#: taiga/projects/translations.py:55 +#: taiga/projects/translations.py:56 msgid "5" msgstr "5" #. Translators: User story point value (value = 8) -#: taiga/projects/translations.py:57 +#: taiga/projects/translations.py:58 msgid "8" msgstr "8" #. Translators: User story point value (value = 10) -#: taiga/projects/translations.py:59 +#: taiga/projects/translations.py:60 msgid "10" msgstr "10" #. Translators: User story point value (value = 13) -#: taiga/projects/translations.py:61 +#: taiga/projects/translations.py:62 msgid "13" msgstr "13" #. Translators: User story point value (value = 20) -#: taiga/projects/translations.py:63 +#: taiga/projects/translations.py:64 msgid "20" msgstr "20" #. Translators: User story point value (value = 40) -#: taiga/projects/translations.py:65 +#: taiga/projects/translations.py:66 msgid "40" msgstr "40" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:73 taiga/projects/translations.py:96 -#: taiga/projects/translations.py:112 +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 msgid "New" msgstr "新 " #. Translators: User story status -#: taiga/projects/translations.py:76 +#: taiga/projects/translations.py:77 msgid "Ready" msgstr "準備好了" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:79 taiga/projects/translations.py:98 -#: taiga/projects/translations.py:114 +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 msgid "In progress" msgstr "進行中" #. Translators: User story status #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:82 taiga/projects/translations.py:100 -#: taiga/projects/translations.py:116 +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 msgid "Ready for test" msgstr "準備測試 " #. Translators: User story status -#: taiga/projects/translations.py:85 +#: taiga/projects/translations.py:86 msgid "Done" msgstr "完成" #. Translators: User story status -#: taiga/projects/translations.py:88 +#: taiga/projects/translations.py:89 msgid "Archived" msgstr "歸檔" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:102 taiga/projects/translations.py:118 +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 msgid "Closed" msgstr "關閉" #. Translators: Task status #. Translators: Issue status -#: taiga/projects/translations.py:104 taiga/projects/translations.py:120 +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 msgid "Needs Info" msgstr "需求資訊" #. Translators: Issue status -#: taiga/projects/translations.py:122 +#: taiga/projects/translations.py:123 msgid "Postponed" msgstr "延後" #. Translators: Issue status -#: taiga/projects/translations.py:124 +#: taiga/projects/translations.py:125 msgid "Rejected" msgstr "拒絕 " #. Translators: Issue type -#: taiga/projects/translations.py:132 +#: taiga/projects/translations.py:133 msgid "Bug" msgstr "系統錯誤" #. Translators: Issue type -#: taiga/projects/translations.py:134 +#: taiga/projects/translations.py:135 msgid "Question" msgstr "問題" #. Translators: Issue type -#: taiga/projects/translations.py:136 +#: taiga/projects/translations.py:137 msgid "Enhancement" msgstr "強化" #. Translators: Issue priority -#: taiga/projects/translations.py:144 +#: taiga/projects/translations.py:145 msgid "Low" msgstr "低" #. Translators: Issue priority #. Translators: Issue severity -#: taiga/projects/translations.py:146 taiga/projects/translations.py:159 +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 msgid "Normal" msgstr "一般" #. Translators: Issue priority -#: taiga/projects/translations.py:148 +#: taiga/projects/translations.py:149 msgid "High" msgstr "高" #. Translators: Issue severity -#: taiga/projects/translations.py:155 +#: taiga/projects/translations.py:156 msgid "Wishlist" msgstr "願望清單" #. Translators: Issue severity -#: taiga/projects/translations.py:157 +#: taiga/projects/translations.py:158 msgid "Minor" msgstr "次要" #. Translators: Issue severity -#: taiga/projects/translations.py:161 +#: taiga/projects/translations.py:162 msgid "Important" msgstr "重要" #. Translators: Issue severity -#: taiga/projects/translations.py:163 +#: taiga/projects/translations.py:164 msgid "Critical" msgstr "關鍵" #. Translators: User role -#: taiga/projects/translations.py:170 +#: taiga/projects/translations.py:171 msgid "UX" msgstr "使用者介面" #. Translators: User role -#: taiga/projects/translations.py:172 +#: taiga/projects/translations.py:173 msgid "Design" msgstr "設計" #. Translators: User role -#: taiga/projects/translations.py:174 +#: taiga/projects/translations.py:175 msgid "Front" msgstr "前台" #. Translators: User role -#: taiga/projects/translations.py:176 +#: taiga/projects/translations.py:177 msgid "Back" msgstr "後台" #. Translators: User role -#: taiga/projects/translations.py:178 +#: taiga/projects/translations.py:179 msgid "Product Owner" msgstr "產品所有人" #. Translators: User role -#: taiga/projects/translations.py:180 +#: taiga/projects/translations.py:181 msgid "Stakeholder" msgstr "利害關係人" -#: taiga/projects/userstories/api.py:161 +#: taiga/projects/userstories/api.py:162 msgid "You don't have permissions to set this sprint to this user story." msgstr "無權限更動使用者故事的衝刺任務" -#: taiga/projects/userstories/api.py:165 +#: taiga/projects/userstories/api.py:166 msgid "You don't have permissions to set this status to this user story." msgstr "無權限更動此使用者故事的狀態" -#: taiga/projects/userstories/api.py:259 +#: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" msgstr "" -#: taiga/projects/userstories/models.py:38 +#: taiga/projects/userstories/models.py:39 msgid "role" msgstr "角色" -#: taiga/projects/userstories/models.py:76 +#: taiga/projects/userstories/models.py:77 msgid "backlog order" msgstr "待辦任務先後次序" -#: taiga/projects/userstories/models.py:78 -#: taiga/projects/userstories/models.py:80 +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 msgid "sprint order" msgstr "衝刺次序" -#: taiga/projects/userstories/models.py:88 +#: taiga/projects/userstories/models.py:89 msgid "finish date" msgstr "完成日期" -#: taiga/projects/userstories/models.py:96 +#: taiga/projects/userstories/models.py:97 msgid "is client requirement" msgstr "客戶要求" -#: taiga/projects/userstories/models.py:98 +#: taiga/projects/userstories/models.py:99 msgid "is team requirement" msgstr "團隊要求" -#: taiga/projects/userstories/models.py:103 +#: taiga/projects/userstories/models.py:104 msgid "generated from issue" msgstr "産生自問題 " -#: taiga/projects/userstories/validators.py:28 +#: taiga/projects/userstories/validators.py:29 msgid "There's no user story with that id" msgstr "該ID無相關使用者故事" -#: taiga/projects/validators.py:28 +#: taiga/projects/validators.py:29 msgid "There's no project with that id" msgstr "該ID無相關專案" -#: taiga/projects/validators.py:37 +#: taiga/projects/validators.py:38 msgid "There's no user story status with that id" msgstr "該ID無相關使用者故事狀態" -#: taiga/projects/validators.py:46 +#: taiga/projects/validators.py:47 msgid "There's no task status with that id" msgstr "該ID無相關任務狀況" -#: taiga/projects/votes/models.py:31 taiga/projects/votes/models.py:32 -#: taiga/projects/votes/models.py:56 +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 msgid "Votes" msgstr "投票數" -#: taiga/projects/votes/models.py:55 +#: taiga/projects/votes/models.py:56 msgid "Vote" msgstr "投票 " -#: taiga/projects/wiki/api.py:66 +#: taiga/projects/wiki/api.py:67 msgid "'content' parameter is mandatory" msgstr "'content'參數為必要" -#: taiga/projects/wiki/api.py:69 +#: taiga/projects/wiki/api.py:70 msgid "'project_id' parameter is mandatory" msgstr "'project_id'參數為必要" -#: taiga/projects/wiki/models.py:37 +#: taiga/projects/wiki/models.py:38 msgid "last modifier" msgstr "上次更改" -#: taiga/projects/wiki/models.py:70 +#: taiga/projects/wiki/models.py:71 msgid "href" msgstr "href" -#: taiga/timeline/signals.py:67 +#: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" msgstr "" -#: taiga/users/admin.py:50 +#: taiga/users/admin.py:51 msgid "Personal info" msgstr "個人資訊" -#: taiga/users/admin.py:52 +#: taiga/users/admin.py:53 msgid "Permissions" msgstr "許可" -#: taiga/users/admin.py:53 +#: taiga/users/admin.py:54 msgid "Important dates" msgstr "重要日期" -#: taiga/users/api.py:111 +#: taiga/users/api.py:112 msgid "Duplicated email" msgstr "複製電子郵件" -#: taiga/users/api.py:113 +#: taiga/users/api.py:114 msgid "Not valid email" msgstr "非有效電子郵性" -#: taiga/users/api.py:146 +#: taiga/users/api.py:147 msgid "Invalid username or email" msgstr "無效使用者或郵件" -#: taiga/users/api.py:155 +#: taiga/users/api.py:156 msgid "Mail sended successful!" msgstr "成功送出郵件" -#: taiga/users/api.py:167 taiga/users/api.py:172 +#: taiga/users/api.py:168 taiga/users/api.py:173 msgid "Token is invalid" msgstr "代號無效" -#: taiga/users/api.py:193 +#: taiga/users/api.py:194 msgid "Current password parameter needed" msgstr "需要目前密碼之參數" -#: taiga/users/api.py:196 +#: taiga/users/api.py:197 msgid "New password parameter needed" msgstr "需要新密碼參數" -#: taiga/users/api.py:199 +#: taiga/users/api.py:200 msgid "Invalid password length at least 6 charaters needed" msgstr "無效密碼長度,至少需6個字元" -#: taiga/users/api.py:202 +#: taiga/users/api.py:203 msgid "Invalid current password" msgstr "無效密碼" -#: taiga/users/api.py:218 -msgid "Incomplete arguments" -msgstr "不完整參數" - -#: taiga/users/api.py:223 -msgid "Invalid image format" -msgstr "無效的圖片檔案" - #: taiga/users/api.py:250 taiga/users/api.py:256 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" @@ -3251,88 +3291,88 @@ msgstr "無效,請確認代號正確,之前是否曾使用過?" msgid "Invalid, are you sure the token is correct?" msgstr "無效,請確認代號是否正確?" -#: taiga/users/models.py:74 +#: taiga/users/models.py:75 msgid "superuser status" msgstr "超級使用者狀態 " -#: taiga/users/models.py:75 +#: taiga/users/models.py:76 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." msgstr "無經明確分派,即賦予該使用者所有權限," -#: taiga/users/models.py:105 +#: taiga/users/models.py:106 msgid "username" msgstr "使用者名稱" -#: taiga/users/models.py:106 +#: taiga/users/models.py:107 msgid "" "Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" msgstr "必填。最多30字元(可為數字,字母,符號....)" -#: taiga/users/models.py:109 +#: taiga/users/models.py:110 msgid "Enter a valid username." msgstr "輸入有效的使用者名稱 " -#: taiga/users/models.py:112 +#: taiga/users/models.py:113 msgid "active" msgstr "活躍" -#: taiga/users/models.py:113 +#: taiga/users/models.py:114 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." msgstr "賦予該使用者活躍角色,以不選擇取代刪除帳戶功能。" -#: taiga/users/models.py:119 +#: taiga/users/models.py:120 msgid "biography" msgstr "自傳" -#: taiga/users/models.py:122 +#: taiga/users/models.py:123 msgid "photo" msgstr "照片" -#: taiga/users/models.py:123 +#: taiga/users/models.py:124 msgid "date joined" msgstr "加入日期" -#: taiga/users/models.py:125 +#: taiga/users/models.py:126 msgid "default language" msgstr "預設語言 " -#: taiga/users/models.py:127 +#: taiga/users/models.py:128 msgid "default theme" msgstr "預設主題" -#: taiga/users/models.py:129 +#: taiga/users/models.py:130 msgid "default timezone" msgstr "預設時區" -#: taiga/users/models.py:131 +#: taiga/users/models.py:132 msgid "colorize tags" msgstr "顏色標籤" -#: taiga/users/models.py:136 +#: taiga/users/models.py:137 msgid "email token" msgstr "電子郵件符號 " -#: taiga/users/models.py:138 +#: taiga/users/models.py:139 msgid "new email address" msgstr "新電子郵件地址" -#: taiga/users/models.py:267 +#: taiga/users/models.py:256 msgid "permissions" msgstr "許可" -#: taiga/users/serializers.py:62 +#: taiga/users/serializers.py:65 msgid "invalid" msgstr "無效" -#: taiga/users/serializers.py:73 +#: taiga/users/serializers.py:76 msgid "Invalid username. Try with a different one." msgstr "無效使用者名稱,請重試其它名稱 " -#: taiga/users/services.py:51 taiga/users/services.py:69 +#: taiga/users/services.py:52 taiga/users/services.py:69 msgid "Username or password does not matches user." msgstr "用戶名稱與密碼不符" @@ -3509,47 +3549,47 @@ msgstr "" msgid "You've been Taigatized!" msgstr "您已加入Taiga" -#: taiga/users/validators.py:29 +#: taiga/users/validators.py:30 msgid "There's no role with that id" msgstr "該用戶無角色" -#: taiga/userstorage/api.py:50 +#: taiga/userstorage/api.py:51 msgid "" "Duplicate key value violates unique constraint. Key '{}' already exists." msgstr "複製的關鍵值侵害獨特約束 關鍵值'{}' 已存在" -#: taiga/userstorage/models.py:30 +#: taiga/userstorage/models.py:31 msgid "key" msgstr "關鍵值" -#: taiga/webhooks/models.py:28 taiga/webhooks/models.py:38 +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 msgid "URL" msgstr "URL" -#: taiga/webhooks/models.py:29 +#: taiga/webhooks/models.py:30 msgid "secret key" msgstr "袐密代碼" -#: taiga/webhooks/models.py:39 +#: taiga/webhooks/models.py:40 msgid "status code" msgstr "狀態碼" -#: taiga/webhooks/models.py:40 +#: taiga/webhooks/models.py:41 msgid "request data" msgstr "要求資料" -#: taiga/webhooks/models.py:41 +#: taiga/webhooks/models.py:42 msgid "request headers" msgstr "要求標頭" -#: taiga/webhooks/models.py:42 +#: taiga/webhooks/models.py:43 msgid "response data" msgstr "回應資料" -#: taiga/webhooks/models.py:43 +#: taiga/webhooks/models.py:44 msgid "response headers" msgstr "回應標頭 " -#: taiga/webhooks/models.py:44 +#: taiga/webhooks/models.py:45 msgid "duration" msgstr "期間" From eaabde11536dc702a452798090ffadf4a3c6b0c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Sat, 23 Jan 2016 20:27:18 +0100 Subject: [PATCH 34/41] [i18n] Update locales --- taiga/locale/es/LC_MESSAGES/django.po | 26 +++++++++++++------------- taiga/locale/it/LC_MESSAGES/django.po | 24 ++++++++++++------------ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index ee6fd281..130c5431 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -8,13 +8,13 @@ # gustavodiazjaimes , 2015 # Hector Colina , 2015 # Jesus Marin , 2015 -# Taiga Dev Team , 2015 +# Taiga Dev Team , 2015-2016 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" +"PO-Revision-Date: 2016-01-23 19:17+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Spanish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/es/)\n" @@ -63,7 +63,7 @@ msgstr "Este usuario ya está registrado." #: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "Este usuario ya es miembro del proyecto." #: taiga/auth/services.py:171 msgid "Error on creating new user." @@ -1753,7 +1753,7 @@ msgstr "tipo de petición por defecto" #: taiga/projects/models.py:171 msgid "logo" -msgstr "" +msgstr "logo" #: taiga/projects/models.py:181 msgid "members" @@ -1809,15 +1809,15 @@ msgstr "privado" #: taiga/projects/models.py:218 msgid "is featured" -msgstr "" +msgstr "es destacado" #: taiga/projects/models.py:221 msgid "is looking for people" -msgstr "" +msgstr "está buscando a gente" #: taiga/projects/models.py:223 msgid "loking for people note" -msgstr "" +msgstr "nota (buscando a gente)" #: taiga/projects/models.py:235 msgid "tags colors" @@ -1834,27 +1834,27 @@ msgstr "recuento" #: taiga/projects/models.py:245 msgid "fans last week" -msgstr "" +msgstr "fans la última semana" #: taiga/projects/models.py:248 msgid "fans last month" -msgstr "" +msgstr "fans el último mes" #: taiga/projects/models.py:251 msgid "fans last year" -msgstr "" +msgstr "fans el último año" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "actividad la última semana" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "actividad el último mes" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "actividad el último áño" #: taiga/projects/models.py:466 msgid "modules config" diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index 39ad8cf8..4e553761 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -15,8 +15,8 @@ msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" -"Last-Translator: Taiga Dev Team \n" +"PO-Revision-Date: 2016-01-22 13:03+0000\n" +"Last-Translator: F B \n" "Language-Team: Italian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/it/)\n" "MIME-Version: 1.0\n" @@ -1848,7 +1848,7 @@ msgstr "tipologia predefinita del problema" #: taiga/projects/models.py:171 msgid "logo" -msgstr "" +msgstr "logo" #: taiga/projects/models.py:181 msgid "members" @@ -1904,15 +1904,15 @@ msgstr "è privato" #: taiga/projects/models.py:218 msgid "is featured" -msgstr "" +msgstr "in vetrina" #: taiga/projects/models.py:221 msgid "is looking for people" -msgstr "" +msgstr "sta cercando persone" #: taiga/projects/models.py:223 msgid "loking for people note" -msgstr "" +msgstr "note sulla ricerca delle persone " #: taiga/projects/models.py:235 msgid "tags colors" @@ -1929,27 +1929,27 @@ msgstr "conta" #: taiga/projects/models.py:245 msgid "fans last week" -msgstr "" +msgstr "fans nella settimana" #: taiga/projects/models.py:248 msgid "fans last month" -msgstr "" +msgstr "fans nel mese" #: taiga/projects/models.py:251 msgid "fans last year" -msgstr "" +msgstr "fans nell'anno" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "attività nella settimana" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "attività nel mese" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "attività nell'anno" #: taiga/projects/models.py:466 msgid "modules config" From 4b37dc413e8d34475d1b2423812af5a99ed7d339 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Mon, 25 Jan 2016 08:43:38 +0100 Subject: [PATCH 35/41] Issue 3783: Hooks origin ips configuration allowing networks --- requirements.txt | 1 + settings/common.py | 3 ++- taiga/hooks/bitbucket/api.py | 3 ++- taiga/hooks/gitlab/api.py | 4 +++- tests/integration/test_hooks_bitbucket.py | 19 +++++++++++++++++++ tests/integration/test_hooks_gitlab.py | 20 ++++++++++++++++++++ 6 files changed, 47 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8501843c..993c3787 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,3 +34,4 @@ lxml==3.5.0 git+https://github.com/Xof/django-pglocks.git@dbb8d7375066859f897604132bd437832d2014ea pyjwkest==1.0.9 python-dateutil==2.4.2 +netaddr==0.7.18 diff --git a/settings/common.py b/settings/common.py index 13e5ae4b..de8bc628 100644 --- a/settings/common.py +++ b/settings/common.py @@ -508,7 +508,8 @@ PROJECT_MODULES_CONFIGURATORS = { "bitbucket": "taiga.hooks.bitbucket.services.get_or_generate_config", } -BITBUCKET_VALID_ORIGIN_IPS = ["131.103.20.165", "131.103.20.166"] +BITBUCKET_VALID_ORIGIN_IPS = ["131.103.20.165", "131.103.20.166", "104.192.143.192/28", "104.192.143.208/28"] + GITLAB_VALID_ORIGIN_IPS = [] EXPORTS_TTL = 60 * 60 * 24 # 24 hours diff --git a/taiga/hooks/bitbucket/api.py b/taiga/hooks/bitbucket/api.py index ee1ffd5b..afd3c47b 100644 --- a/taiga/hooks/bitbucket/api.py +++ b/taiga/hooks/bitbucket/api.py @@ -24,6 +24,7 @@ from taiga.hooks.api import BaseWebhookApiViewSet from . import event_hooks +from netaddr import all_matching_cidrs from urllib.parse import parse_qs from ipware.ip import get_ip @@ -55,7 +56,7 @@ class BitBucketViewSet(BaseWebhookApiViewSet): valid_origin_ips = bitbucket_config.get("valid_origin_ips", settings.BITBUCKET_VALID_ORIGIN_IPS) origin_ip = get_ip(request) - if valid_origin_ips and (not origin_ip or origin_ip not in valid_origin_ips): + if valid_origin_ips and (len(all_matching_cidrs(origin_ip,valid_origin_ips)) == 0): return False return project_secret == secret_key diff --git a/taiga/hooks/gitlab/api.py b/taiga/hooks/gitlab/api.py index 66c4a58e..89f6a5c8 100644 --- a/taiga/hooks/gitlab/api.py +++ b/taiga/hooks/gitlab/api.py @@ -26,6 +26,7 @@ from taiga.hooks.api import BaseWebhookApiViewSet from . import event_hooks +from netaddr import all_matching_cidrs class GitLabViewSet(BaseWebhookApiViewSet): event_hook_classes = { @@ -53,7 +54,8 @@ class GitLabViewSet(BaseWebhookApiViewSet): gitlab_config = project.modules_config.config.get("gitlab", {}) valid_origin_ips = gitlab_config.get("valid_origin_ips", settings.GITLAB_VALID_ORIGIN_IPS) origin_ip = get_ip(request) - if valid_origin_ips and (not origin_ip or origin_ip not in valid_origin_ips): + + if valid_origin_ips and (len(all_matching_cidrs(origin_ip,valid_origin_ips)) == 0): return False return project_secret == secret_key diff --git a/tests/integration/test_hooks_bitbucket.py b/tests/integration/test_hooks_bitbucket.py index bef9330f..c21ca332 100644 --- a/tests/integration/test_hooks_bitbucket.py +++ b/tests/integration/test_hooks_bitbucket.py @@ -61,6 +61,25 @@ def test_ok_signature(client): assert response.status_code == 204 +def test_ok_signature_ip_in_network(client): + project = f.ProjectFactory() + f.ProjectModulesConfigFactory(project=project, config={ + "bitbucket": { + "secret": "tpnIwJDz4e" + } + }) + + url = reverse("bitbucket-hook-list") + url = "{}?project={}&key={}".format(url, project.id, "tpnIwJDz4e") + data = json.dumps({"push": {"changes": [{"new": {"target": { "message": "test message"}}}]}}) + response = client.post(url, + data, + content_type="application/json", + HTTP_X_EVENT_KEY="repo:push", + REMOTE_ADDR="104.192.143.193") + assert response.status_code == 204 + + def test_invalid_ip(client): project = f.ProjectFactory() f.ProjectModulesConfigFactory(project=project, config={ diff --git a/tests/integration/test_hooks_gitlab.py b/tests/integration/test_hooks_gitlab.py index 7264b2c1..cd0c2b8b 100644 --- a/tests/integration/test_hooks_gitlab.py +++ b/tests/integration/test_hooks_gitlab.py @@ -59,6 +59,26 @@ def test_ok_signature(client): assert response.status_code == 204 +def test_ok_signature_ip_in_network(client): + project = f.ProjectFactory() + f.ProjectModulesConfigFactory(project=project, config={ + "gitlab": { + "secret": "tpnIwJDz4e", + "valid_origin_ips": ["111.111.111.0/24"], + } + }) + + url = reverse("gitlab-hook-list") + url = "{}?project={}&key={}".format(url, project.id, "tpnIwJDz4e") + data = {"test:": "data"} + response = client.post(url, + json.dumps(data), + content_type="application/json", + REMOTE_ADDR="111.111.111.112") + + assert response.status_code == 204 + + def test_invalid_ip(client): project = f.ProjectFactory() f.ProjectModulesConfigFactory(project=project, config={ From fcb337a3926563beee523086401794d3171847d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 26 Jan 2016 12:19:43 +0100 Subject: [PATCH 36/41] [i18n] Add swedish lang --- CHANGELOG.md | 2 + settings/common.py | 2 +- taiga/locale/sv/LC_MESSAGES/django.po | 3134 +++++++++++++++++++++++++ 3 files changed, 3137 insertions(+), 1 deletion(-) create mode 100644 taiga/locale/sv/LC_MESSAGES/django.po diff --git a/CHANGELOG.md b/CHANGELOG.md index a4172ce7..d31a36dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,8 @@ - by fans (last week/moth/year/all time) - by activity (last week/moth/year/all time) - Show stats for discover secction +- i18n. + - Add swedish (sv) translation. ### Misc - Lots of small and not so small bugfixes. diff --git a/settings/common.py b/settings/common.py index de8bc628..b24c12d4 100644 --- a/settings/common.py +++ b/settings/common.py @@ -139,7 +139,7 @@ LANGUAGES = [ #("sq", "Shqip"), # Albanian #("sr", "Српски"), # Serbian #("sr-latn", "srpski"), # Serbian Latin - #("sv", "Svenska"), # Swedish + ("sv", "Svenska"), # Swedish #("sw", "Kiswahili"), # Swahili #("ta", "தமிழ்"), # Tamil #("te", "తెలుగు"), # Telugu diff --git a/taiga/locale/sv/LC_MESSAGES/django.po b/taiga/locale/sv/LC_MESSAGES/django.po new file mode 100644 index 00000000..8a17bef5 --- /dev/null +++ b/taiga/locale/sv/LC_MESSAGES/django.po @@ -0,0 +1,3134 @@ +# taiga-back.taiga. +# Copyright (C) 2014-2016 Taiga Dev Team +# This file is distributed under the same license as the taiga-back package. +# +# Translators: +# Harald Indgul , 2015 +msgid "" +msgstr "" +"Project-Id-Version: taiga-back\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" +"Last-Translator: Taiga Dev Team \n" +"Language-Team: Swedish (http://www.transifex.com/taiga-agile-llc/taiga-back/" +"language/sv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: taiga/auth/api.py:100 +msgid "Public register is disabled." +msgstr "Publikt register är avvaktiverad." + +#: taiga/auth/api.py:133 +msgid "invalid register type" +msgstr "Felaktigt registertyp" + +#: taiga/auth/api.py:146 +msgid "invalid login type" +msgstr "Invalid inloggningstyp" + +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 +msgid "invalid username" +msgstr "Felaktigt användarnamn" + +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 +msgid "" +"Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" +msgstr "Kräver färre än 255 tecken. Kan vara tecken, nummer och /./-/_." + +#: taiga/auth/services.py:74 +msgid "Username is already in use." +msgstr "Användarnamnet används redan" + +#: taiga/auth/services.py:77 +msgid "Email is already in use." +msgstr "E-postadressen används redan" + +#: taiga/auth/services.py:93 +msgid "Token not matches any valid invitation." +msgstr "Förekomsten passar inte invitationen. " + +#: taiga/auth/services.py:121 +msgid "User is already registered." +msgstr "Användaren finns redan." + +#: taiga/auth/services.py:145 +msgid "This user is already a member of the project." +msgstr "" + +#: taiga/auth/services.py:171 +msgid "Error on creating new user." +msgstr "Ett fel uppstod når användaren skapades. " + +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 +msgid "Invalid token" +msgstr "Felaktig förekomst. " + +#: taiga/base/api/fields.py:292 +msgid "This field is required." +msgstr "Fältet är obligatoriskt." + +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 +msgid "Invalid value." +msgstr "Felaktigt värde. " + +#: taiga/base/api/fields.py:477 +#, python-format +msgid "'%s' value must be either True or False." +msgstr "'%s' värdet måste vara sann eller falskt. " + +#: taiga/base/api/fields.py:541 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" +"Skriv in ett giltigt 'slugg' som består av bokstäver, nummer, understreck " +"och bindestreck." + +#: taiga/base/api/fields.py:556 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "Välj korrekt. %(value)s är inte ett giltigt val. " + +#: taiga/base/api/fields.py:619 +msgid "Enter a valid email address." +msgstr "Skriv in en giltig e-postadress" + +#: taiga/base/api/fields.py:661 +#, python-format +msgid "Date has wrong format. Use one of these formats instead: %s" +msgstr "Felaktigt datumformat. Använd ett av dessa formaten istället: %s" + +#: taiga/base/api/fields.py:725 +#, python-format +msgid "Datetime has wrong format. Use one of these formats instead: %s" +msgstr "Tidsdatum har fel format. Bruk ett av dessa formaten istället: %s" + +#: taiga/base/api/fields.py:795 +#, python-format +msgid "Time has wrong format. Use one of these formats instead: %s" +msgstr "Felaktigt tidsformat. Bruk ett av dessa formaten istället: %s" + +#: taiga/base/api/fields.py:852 +msgid "Enter a whole number." +msgstr "Skriv ett helt nummer." + +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "Försäkra dig om att värdet är mindre eller lika med %(limit_value)s." + +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "Försäkra dig om att värdet är större eller lika med %(limit_value)s." + +#: taiga/base/api/fields.py:884 +#, python-format +msgid "\"%s\" value must be a float." +msgstr "\"%s\" värde måste vara flyttal." + +#: taiga/base/api/fields.py:905 +msgid "Enter a number." +msgstr "Skriv in ett nummer." + +#: taiga/base/api/fields.py:908 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Försäkra dig om att det inge är mera än %s siffror i totalen. " + +#: taiga/base/api/fields.py:909 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "Försäkra dig om att det inte är mera än %s decimaler." + +#: taiga/base/api/fields.py:910 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" +"Försäkra dig om det inte är mera än %s siffror till vänster om " +"decimalpunkten." + +#: taiga/base/api/fields.py:977 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Inga filer skickades. Check kodningstypen på formularet. " + +#: taiga/base/api/fields.py:978 +msgid "No file was submitted." +msgstr "Skickade ingen fil. " + +#: taiga/base/api/fields.py:979 +msgid "The submitted file is empty." +msgstr "Den insända filen är tom. " + +#: taiga/base/api/fields.py:980 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" +"Försäkra dig om att filnamnet har som mest %(max)d tecken (det har " +"%(length)d)." + +#: taiga/base/api/fields.py:981 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" +"Vänligen lämna in en fil eller kontrollera kryssrutan för klar, inte båda." + +#: taiga/base/api/fields.py:1021 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Ladda upp en giltig bild. Filen du laddade upp var antingen inte en bild " +"eller en skadad bild." + +#: taiga/base/api/pagination.py:213 +msgid "Page is not 'last', nor can it be converted to an int." +msgstr "" +"Sidan är inte \"sist\", och inte heller kan den omvandlas till ett heltal." + +#: taiga/base/api/pagination.py:217 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "Felaktig sida (%(page_number)s): %(message)s" + +#: taiga/base/api/permissions.py:64 +msgid "Invalid permission definition." +msgstr "Ogiltigt definition för behörighet." + +#: taiga/base/api/relations.py:245 +#, python-format +msgid "Invalid pk '%s' - object does not exist." +msgstr "Ogiltigt paket '%s' - objektet existerar inte." + +#: taiga/base/api/relations.py:246 +#, python-format +msgid "Incorrect type. Expected pk value, received %s." +msgstr "Ogiltigt typ. Förväntad paketvärde, mottaget %s. " + +#: taiga/base/api/relations.py:334 +#, python-format +msgid "Object with %s=%s does not exist." +msgstr "Objekt med %s=%s existerar inte. " + +#: taiga/base/api/relations.py:370 +msgid "Invalid hyperlink - No URL match" +msgstr "Ogiltigt länkadress - Inga länkar passar." + +#: taiga/base/api/relations.py:371 +msgid "Invalid hyperlink - Incorrect URL match" +msgstr "Ogiltigt länkadress - Felaktig matchning av länkar." + +#: taiga/base/api/relations.py:372 +msgid "Invalid hyperlink due to configuration error" +msgstr "Felaktig länk förorsakad av et konfigurationsfel. " + +#: taiga/base/api/relations.py:373 +msgid "Invalid hyperlink - object does not exist." +msgstr "Fel länk - objekten existerar inte. " + +#: taiga/base/api/relations.py:374 +#, python-format +msgid "Incorrect type. Expected url string, received %s." +msgstr "Felaktigt typ. Förväntad länksträng, mottagit %s. " + +#: taiga/base/api/serializers.py:320 +msgid "Invalid data" +msgstr "Felaktigt data" + +#: taiga/base/api/serializers.py:412 +msgid "No input provided" +msgstr "Inga indata" + +#: taiga/base/api/serializers.py:572 +msgid "Cannot create a new item, only existing items may be updated." +msgstr "" +"Det går inte att skapa ett nytt objekt, endast befintliga poster uppdateras." + +#: taiga/base/api/serializers.py:583 +msgid "Expected a list of items." +msgstr "Förväntad lista på poster." + +#: taiga/base/api/views.py:124 +msgid "Not found" +msgstr "Hittade inte" + +#: taiga/base/api/views.py:127 +msgid "Permission denied" +msgstr "Du har inte behöriget" + +#: taiga/base/api/views.py:475 +msgid "Server application error" +msgstr "Serverprogramfel." + +#: taiga/base/connectors/exceptions.py:25 +msgid "Connection error." +msgstr "Felaktigt förbindelse." + +#: taiga/base/exceptions.py:77 +msgid "Malformed request." +msgstr "Felaktigt begäran" + +#: taiga/base/exceptions.py:82 +msgid "Incorrect authentication credentials." +msgstr "Felaktiga autentiseringsreferenser " + +#: taiga/base/exceptions.py:87 +msgid "Authentication credentials were not provided." +msgstr "Autentiseringsuppgifter lämnades inte." + +#: taiga/base/exceptions.py:92 +msgid "You do not have permission to perform this action." +msgstr "Du har inte behörigheter för att utföra denna åtgärd. " + +#: taiga/base/exceptions.py:97 +#, python-format +msgid "Method '%s' not allowed." +msgstr "Metoden '%s' är inte tillåtet. " + +#: taiga/base/exceptions.py:105 +msgid "Could not satisfy the request's Accept header" +msgstr "Det gick inte att tillgodose begäran på Accept-huvudet" + +#: taiga/base/exceptions.py:114 +#, python-format +msgid "Unsupported media type '%s' in request." +msgstr "Mediatypen '%s' du begär stöds inte. " + +#: taiga/base/exceptions.py:122 +msgid "Request was throttled." +msgstr "Begäran blev strypt." + +#: taiga/base/exceptions.py:123 +#, python-format +msgid "Expected available in %d second%s." +msgstr "Förväntas bli tillgängligt inom %d second%s." + +#: taiga/base/exceptions.py:137 +msgid "Unexpected error" +msgstr "Oväntat fel" + +#: taiga/base/exceptions.py:149 +msgid "Not found." +msgstr "Hittade inget" + +#: taiga/base/exceptions.py:154 +msgid "Method not supported for this endpoint." +msgstr "Metoden stöds inte för denna slutpunkten." + +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 +msgid "Wrong arguments." +msgstr "Fel argument." + +#: taiga/base/exceptions.py:174 +msgid "Data validation error" +msgstr "Datavalideringsfel" + +#: taiga/base/exceptions.py:186 +msgid "Integrity Error for wrong or invalid arguments" +msgstr "Integritetsfel för felaktiga eller ogiltiga argument" + +#: taiga/base/exceptions.py:193 +msgid "Precondition error" +msgstr "Förutsättningsfel" + +#: taiga/base/filters.py:78 +msgid "Error in filter params types." +msgstr "Fel i filterparametertyper." + +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 +msgid "'project' must be an integer value." +msgstr "'Projektet\" måste vara ett heltal." + +#: taiga/base/tags.py:26 +msgid "tags" +msgstr "taggar" + +#: taiga/base/templates/emails/base-body-html.jinja:6 +msgid "Taiga" +msgstr "Taiga" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Follow us on Twitter" +msgstr "Följ oss på Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Twitter" +msgstr "Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "Get the code on GitHub" +msgstr "Få koden på GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "GitHub" +msgstr "GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Visit our website" +msgstr "Besök vår webbplats" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Taiga.io" +msgstr "Taiga.io" + +#: taiga/base/templates/emails/base-body-html.jinja:423 +#: taiga/base/templates/emails/hero-body-html.jinja:397 +#: taiga/base/templates/emails/updates-body-html.jinja:459 +#, python-format +msgid "" +"\n" +" Taiga Support:\n" +" %(support_url)s\n" +"
\n" +" Contact us:\n" +" \n" +" %(support_email)s\n" +" \n" +"
\n" +" Mailing list:\n" +" \n" +" %(mailing_list_url)s\n" +" \n" +" " +msgstr "" +"\n" +"Taiga Support:\n" +"" +"%(support_url)s\n" +"
\n" +"Kontakt oss:\n" +"\n" +"%(support_email)s\n" +"\n" +"
\n" +"E-postlista:\n" +"\n" +"%(mailing_list_url)s\n" +"" + +#: taiga/base/templates/emails/hero-body-html.jinja:6 +msgid "You have been Taigatized" +msgstr "Du har blivit Taiganiserad" + +#: taiga/base/templates/emails/hero-body-html.jinja:359 +msgid "" +"\n" +"

You have been Taigatized!" +"

\n" +"

Welcome to Taiga, an Open " +"Source, Agile Project Management Tool

\n" +" " +msgstr "" +"\n" +"

Du har blivit Taiganiserad!

\n" +"

Välkommen till Taiga, ett öppen källkod, agilt projekthanteringsverktyg" + +#: taiga/base/templates/emails/updates-body-html.jinja:6 +msgid "[Taiga] Updates" +msgstr "[Taiga] Uppdateringar" + +#: taiga/base/templates/emails/updates-body-html.jinja:417 +msgid "Updates" +msgstr "Uppdateringar" + +#: taiga/base/templates/emails/updates-body-html.jinja:423 +#, python-format +msgid "" +"\n" +"

comment:" +"

\n" +"

" +"%(comment)s

\n" +" " +msgstr "" + +#: taiga/base/templates/emails/updates-body-text.jinja:6 +#, python-format +msgid "" +"\n" +" Comment: %(comment)s\n" +" " +msgstr "" + +#: taiga/export_import/api.py:105 +msgid "We needed at least one role" +msgstr "Vi behöver minst en roll" + +#: taiga/export_import/api.py:199 +msgid "Needed dump file" +msgstr "Behöver en hämtningsfil" + +#: taiga/export_import/api.py:206 +msgid "Invalid dump format" +msgstr "Invalid hämtningsfilformat" + +#: taiga/export_import/dump_service.py:97 +msgid "error importing project data" +msgstr "fel vid import av projektdata" + +#: taiga/export_import/dump_service.py:110 +msgid "error importing lists of project attributes" +msgstr "fel vid import av en lista på projektegenskaper" + +#: taiga/export_import/dump_service.py:115 +msgid "error importing default project attributes values" +msgstr "fel vid import av standard projektegenskapsvärden" + +#: taiga/export_import/dump_service.py:125 +msgid "error importing custom attributes" +msgstr "fel vid import av anpassade egenskaper" + +#: taiga/export_import/dump_service.py:130 +msgid "error importing roles" +msgstr "fel vid importering av roller" + +#: taiga/export_import/dump_service.py:145 +msgid "error importing memberships" +msgstr "fel vid import av medlemskap" + +#: taiga/export_import/dump_service.py:150 +msgid "error importing sprints" +msgstr "felaktig import av sprintar" + +#: taiga/export_import/dump_service.py:155 +msgid "error importing wiki pages" +msgstr "vel vid import av wiki-sidor" + +#: taiga/export_import/dump_service.py:160 +msgid "error importing wiki links" +msgstr "fel vid import av wiki-länkar" + +#: taiga/export_import/dump_service.py:165 +msgid "error importing issues" +msgstr "fel vid import av ärenden" + +#: taiga/export_import/dump_service.py:170 +msgid "error importing user stories" +msgstr "fel vid import av användarhistorier" + +#: taiga/export_import/dump_service.py:175 +msgid "error importing tasks" +msgstr "fel vid import av uppgifter" + +#: taiga/export_import/dump_service.py:180 +msgid "error importing tags" +msgstr "fel vid importering av taggar" + +#: taiga/export_import/dump_service.py:184 +msgid "error importing timelines" +msgstr "fel vid importering av tidslinje" + +#: taiga/export_import/serializers.py:178 +msgid "{}=\"{}\" not found in this project" +msgstr "{}=\"{}\" gick inte att hitta för det här projektet" + +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 +msgid "Invalid content. It must be {\"key\": \"value\",...}" +msgstr "Felaktigt innehåll. Det måste vara {\"key\": \"value\",...}" + +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 +msgid "It contain invalid custom fields." +msgstr "Innehåller felaktigt anpassad fält." + +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 +msgid "Name duplicated for the project" +msgstr "Namnet är upprepad för projektet" + +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 +msgid "Error generating project dump" +msgstr "Fel vid skapandet av projektkopia" + +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 +msgid "Error loading project dump" +msgstr "Feil vid hämtning av projektkopia" + +#: taiga/export_import/templates/emails/dump_project-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump generated

\n" +"

Hello %(user)s,

\n" +"

Your dump from project %(project)s has been correctly generated.\n" +"

You can download it here:

\n" +" Download the dump file\n" +"

This file will be deleted on %(deletion_date)s.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/dump_project-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your dump from project %(project)s has been correctly generated. You can " +"download it here:\n" +"\n" +"%(url)s\n" +"\n" +"This file will be deleted on %(deletion_date)s.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/dump_project-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been generated" +msgstr "[%(project)s] Din projekthämtning blev utfört" + +#: taiga/export_import/templates/emails/export_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project %(project)s has not been exported correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/export_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"Your project %(project)s has not been exported correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/export_error-subject.jinja:1 +#, python-format +msgid "[%(project)s] %(error_subject)s" +msgstr "[%(project)s] %(error_subject)s" + +#: taiga/export_import/templates/emails/import_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project has not been importer correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/import_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Your project has not been importer correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/import_error-subject.jinja:1 +#, python-format +msgid "[Taiga] %(error_subject)s" +msgstr "[Taiga] %(error_subject)s" + +#: taiga/export_import/templates/emails/load_dump-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump imported

\n" +"

Hello %(user)s,

\n" +"

Your project dump has been correctly imported.

\n" +" Go to %(project)s\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your project dump has been correctly imported.\n" +"\n" +"You can see the project %(project)s here:\n" +"\n" +"%(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/export_import/templates/emails/load_dump-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been imported" +msgstr "[%(project)s] Ditt projekt importerades korrekt" + +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 +msgid "Authentication required" +msgstr "Verifiering krävs" + +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 +msgid "name" +msgstr "namn" + +#: taiga/external_apps/models.py:36 +msgid "Icon url" +msgstr "Ikonlänk" + +#: taiga/external_apps/models.py:37 +msgid "web" +msgstr "Internet" + +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 +msgid "description" +msgstr "beskrivning" + +#: taiga/external_apps/models.py:40 +msgid "Next url" +msgstr "Nästa länk" + +#: taiga/external_apps/models.py:42 +msgid "secret key for ciphering the application tokens" +msgstr "hemlig nyckel för kryptering av programtecken " + +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 +msgid "user" +msgstr "användare" + +#: taiga/external_apps/models.py:60 +msgid "application" +msgstr "program" + +#: taiga/feedback/models.py:24 taiga/users/models.py:117 +msgid "full name" +msgstr "hela namnet" + +#: taiga/feedback/models.py:26 taiga/users/models.py:112 +msgid "email address" +msgstr "e-postadress" + +#: taiga/feedback/models.py:28 +msgid "comment" +msgstr "kommentera" + +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 +msgid "created date" +msgstr "skapad datum" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Feedback

\n" +"

Taiga has received feedback from %(full_name)s <%(email)s>

\n" +" " +msgstr "" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:9 +#, python-format +msgid "" +"\n" +"

Comment

\n" +"

%(comment)s

\n" +" " +msgstr "" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 +#: taiga/users/admin.py:52 +msgid "Extra info" +msgstr "Extra information" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:1 +#, python-format +msgid "" +"---------\n" +"- From: %(full_name)s <%(email)s>\n" +"---------\n" +"- Comment:\n" +"%(comment)s\n" +"---------" +msgstr "" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:8 +msgid "- Extra info:" +msgstr "- Extra information: " + +#: taiga/feedback/templates/emails/feedback_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Feedback from %(full_name)s <%(email)s>\n" +msgstr "" + +#: taiga/hooks/api.py:53 +msgid "The payload is not a valid json" +msgstr "Datasträngen är inte korrekt json" + +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 +msgid "The project doesn't exist" +msgstr "Projektet existerar inte" + +#: taiga/hooks/api.py:65 +msgid "Bad signature" +msgstr "Dålig signatur" + +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 +msgid "The referenced element doesn't exist" +msgstr "Referenselementet existerar inte" + +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 +msgid "The status doesn't exist" +msgstr "Statusen existerar inte" + +#: taiga/hooks/bitbucket/event_hooks.py:98 +msgid "Status changed from BitBucket commit" +msgstr "Status ändrad från BitBucket skrivs in" + +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 +msgid "Invalid issue information" +msgstr "Felaktig ärendeinformation" + +#: taiga/hooks/bitbucket/event_hooks.py:143 +#, python-brace-format +msgid "" +"Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " +"@{bitbucket_user_name}'s BitBucket profile\") from BitBucket.\n" +"Origin BitBucket issue: [bb#{number} - {subject}]({bitbucket_url} \"Go to " +"'bb#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:154 +msgid "Issue created from BitBucket." +msgstr "Ärende skapades från BitBucket." + +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 +msgid "Invalid issue comment information" +msgstr "Felaktigt kommentarinformation för ärendet" + +#: taiga/hooks/bitbucket/event_hooks.py:186 +#, python-brace-format +msgid "" +"Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " +"@{bitbucket_user_name}'s BitBucket profile\") from BitBucket.\n" +"Origin BitBucket issue: [bb#{number} - {subject}]({bitbucket_url} \"Go to " +"'bb#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:197 +#, python-brace-format +msgid "" +"Comment From BitBucket:\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:97 +#, python-brace-format +msgid "" +"Status changed by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" +"({commit_url} \"See commit '{commit_id} - {commit_message}'\")." +msgstr "" +"Status ändrad av [@{github_user_name}]({github_user_url} \"Se " +"@{github_user_name}'s GitHub profil\") från GitHub commit [{commit_id}]" +"({commit_url} \"Se bidrag '{commit_id} - {commit_message}'\")." + +#: taiga/hooks/github/event_hooks.py:108 +msgid "Status changed from GitHub commit." +msgstr "Status ändrad från GitHub inläggs." + +#: taiga/hooks/github/event_hooks.py:158 +#, python-brace-format +msgid "" +"Issue created by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:169 +msgid "Issue created from GitHub." +msgstr "Ärende skapad från GitHub." + +#: taiga/hooks/github/event_hooks.py:201 +#, python-brace-format +msgid "" +"Comment by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:212 +#, python-brace-format +msgid "" +"Comment From GitHub:\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/gitlab/event_hooks.py:87 +msgid "Status changed from GitLab commit" +msgstr "Status ändrad från GitLab inlagd" + +#: taiga/hooks/gitlab/event_hooks.py:129 +msgid "Created from GitLab" +msgstr "Skapad från GitLab" + +#: taiga/hooks/gitlab/event_hooks.py:161 +#, python-brace-format +msgid "" +"Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " +"@{gitlab_user_name}'s GitLab profile\") from GitLab.\n" +"Origin GitLab issue: [gl#{number} - {subject}]({gitlab_url} \"Go to " +"'gl#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" +"Kommentar av [@{gitlab_user_name}]({gitlab_user_url} \"Se " +"@{gitlab_user_name}'s GitLab profile\") från GitLab.\n" +"\n" +"Ursprunglig GitLab ärende: [gl#{number} - {subject}]({gitlab_url} \"Gå till " +"'gl#{number} - {subject}'\")\n" +"\n" +"\n" +"{message}" + +#: taiga/hooks/gitlab/event_hooks.py:172 +#, python-brace-format +msgid "" +"Comment From GitLab:\n" +"\n" +"{message}" +msgstr "" + +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 +msgid "View project" +msgstr "Visa projekt" + +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 +msgid "View milestones" +msgstr "Visa milstolper" + +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 +msgid "View user stories" +msgstr "Visa användarhistorier" + +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 +msgid "View tasks" +msgstr "Visa uppgifter" + +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 +msgid "View issues" +msgstr "Visa ärenden" + +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 +msgid "View wiki pages" +msgstr "Visa wiki-sidor" + +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 +msgid "View wiki links" +msgstr "Visa wiki-länkar" + +#: taiga/permissions/permissions.py:39 +msgid "Request membership" +msgstr "Ansöka om medlemskap" + +#: taiga/permissions/permissions.py:40 +msgid "Add user story to project" +msgstr "Lägg till användarhistorie till projekt" + +#: taiga/permissions/permissions.py:41 +msgid "Add comments to user stories" +msgstr "Lägg till kommentarer till användarhistorie" + +#: taiga/permissions/permissions.py:42 +msgid "Add comments to tasks" +msgstr "Lägg till kommentar till uppgifter" + +#: taiga/permissions/permissions.py:43 +msgid "Add issues" +msgstr "Lägg till ärenden" + +#: taiga/permissions/permissions.py:44 +msgid "Add comments to issues" +msgstr "Lägg till kommentar till ärender" + +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +msgid "Add wiki page" +msgstr "Lägg till en wiki-sida" + +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 +msgid "Modify wiki page" +msgstr "Modifiera wiki-sida" + +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +msgid "Add wiki link" +msgstr "Lägg till wiki-länk" + +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 +msgid "Modify wiki link" +msgstr "Modifiera wiki-link" + +#: taiga/permissions/permissions.py:55 +msgid "Add milestone" +msgstr "Lägg till milstolpe" + +#: taiga/permissions/permissions.py:56 +msgid "Modify milestone" +msgstr "Modifiera milstolpe" + +#: taiga/permissions/permissions.py:57 +msgid "Delete milestone" +msgstr "Ta bort milstolpe" + +#: taiga/permissions/permissions.py:59 +msgid "View user story" +msgstr "Visa användarhistorie" + +#: taiga/permissions/permissions.py:60 +msgid "Add user story" +msgstr "Lägg till användarhistorie" + +#: taiga/permissions/permissions.py:61 +msgid "Modify user story" +msgstr "Modifiera användarhistorien" + +#: taiga/permissions/permissions.py:62 +msgid "Delete user story" +msgstr "Ta bort användarhistorien" + +#: taiga/permissions/permissions.py:65 +msgid "Add task" +msgstr "Lägg till uppgift" + +#: taiga/permissions/permissions.py:66 +msgid "Modify task" +msgstr "Modifiera uppgift" + +#: taiga/permissions/permissions.py:67 +msgid "Delete task" +msgstr "Ta bort uppgift" + +#: taiga/permissions/permissions.py:70 +msgid "Add issue" +msgstr "Lägg till ärende" + +#: taiga/permissions/permissions.py:71 +msgid "Modify issue" +msgstr "Modifiera ärende" + +#: taiga/permissions/permissions.py:72 +msgid "Delete issue" +msgstr "Ta bort ärende" + +#: taiga/permissions/permissions.py:77 +msgid "Delete wiki page" +msgstr "Ta bort wiki-sida" + +#: taiga/permissions/permissions.py:82 +msgid "Delete wiki link" +msgstr "Ta bort wiki-länk" + +#: taiga/permissions/permissions.py:86 +msgid "Modify project" +msgstr "Mofifiera projekt" + +#: taiga/permissions/permissions.py:87 +msgid "Add member" +msgstr "Lägg till medlem" + +#: taiga/permissions/permissions.py:88 +msgid "Remove member" +msgstr "Ta bort medlem" + +#: taiga/permissions/permissions.py:89 +msgid "Delete project" +msgstr "Ta bort projekt" + +#: taiga/permissions/permissions.py:90 +msgid "Admin project values" +msgstr "Administrera projektvärden" + +#: taiga/permissions/permissions.py:91 +msgid "Admin roles" +msgstr "Administratorroller" + +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Felaktiga argument" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Felaktigt bildformat" + +#: taiga/projects/api.py:286 +msgid "Not valid template name" +msgstr "Inget giltigt mallnamn" + +#: taiga/projects/api.py:289 +msgid "Not valid template description" +msgstr "Inte giltigt mallbeskrivning" + +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 +msgid "At least one of the user must be an active admin" +msgstr "Åtminstone en av användarna måste vara en aktiv administrator" + +#: taiga/projects/api.py:577 +msgid "You don't have permisions to see that." +msgstr "Du har inte behörighet att se det. " + +#: taiga/projects/attachments/api.py:48 +msgid "Partial updates are not supported" +msgstr "Delvisa uppdateringar stöds inte. " + +#: taiga/projects/attachments/api.py:63 +msgid "Project ID not matches between object and project" +msgstr "Projekt-ID stämmer inte mellan objekt och projekt" + +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 +msgid "owner" +msgstr "ägare" + +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 +msgid "project" +msgstr "projekt" + +#: taiga/projects/attachments/models.py:57 +msgid "content type" +msgstr "innehållstyp" + +#: taiga/projects/attachments/models.py:59 +msgid "object id" +msgstr "objekt-ID" + +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 +msgid "modified date" +msgstr "ändrad datum" + +#: taiga/projects/attachments/models.py:70 +msgid "attached file" +msgstr "bifogad fil" + +#: taiga/projects/attachments/models.py:72 +msgid "sha1" +msgstr "sha1" + +#: taiga/projects/attachments/models.py:74 +msgid "is deprecated" +msgstr "undviks" + +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 +msgid "order" +msgstr "sortera" + +#: taiga/projects/choices.py:22 +msgid "AppearIn" +msgstr "Dyker upp i " + +#: taiga/projects/choices.py:23 +msgid "Jitsi" +msgstr "Jitsi" + +#: taiga/projects/choices.py:24 +msgid "Custom" +msgstr "Anpassa" + +#: taiga/projects/choices.py:25 +msgid "Talky" +msgstr "Talky" + +#: taiga/projects/custom_attributes/choices.py:26 +msgid "Text" +msgstr "Text" + +#: taiga/projects/custom_attributes/choices.py:27 +msgid "Multi-Line Text" +msgstr "Text med flera rader" + +#: taiga/projects/custom_attributes/choices.py:28 +msgid "Date" +msgstr "Datum" + +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 +msgid "type" +msgstr "typ" + +#: taiga/projects/custom_attributes/models.py:88 +msgid "values" +msgstr "värden" + +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 +msgid "user story" +msgstr "Användarhistorie" + +#: taiga/projects/custom_attributes/models.py:113 +msgid "task" +msgstr "uppgift" + +#: taiga/projects/custom_attributes/models.py:128 +msgid "issue" +msgstr "Ärende" + +#: taiga/projects/custom_attributes/serializers.py:58 +msgid "Already exists one with the same name." +msgstr "Existerar redan med samma namn. " + +#: taiga/projects/history/api.py:71 +msgid "Comment already deleted" +msgstr "Kommentaren är redan borttagit. " + +#: taiga/projects/history/api.py:90 +msgid "Comment not deleted" +msgstr "Kommentaren är inte borttagit" + +#: taiga/projects/history/choices.py:27 +msgid "Change" +msgstr "Ändra" + +#: taiga/projects/history/choices.py:28 +msgid "Create" +msgstr "Skapa" + +#: taiga/projects/history/choices.py:29 +msgid "Delete" +msgstr "Ta bort" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:23 +#, python-format +msgid "%(role)s role points" +msgstr "%(role)s rollpoäng" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:26 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:131 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:134 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:157 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:194 +msgid "from" +msgstr "från" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:32 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:142 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:145 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:163 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:180 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:200 +msgid "to" +msgstr "till " + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:44 +msgid "Added new attachment" +msgstr "Lagt till ny bilaga" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:62 +msgid "Updated attachment" +msgstr "Uppdaterad bilaga" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:68 +msgid "deprecated" +msgstr "borttagen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:70 +msgid "not deprecated" +msgstr "inte borttagen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:86 +msgid "Deleted attachment" +msgstr "Bilaga borttagen" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:105 +msgid "added" +msgstr "lagt till" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:110 +msgid "removed" +msgstr "borttaget" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 +msgid "Unassigned" +msgstr "Ej tilldelad" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:212 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:87 +msgid "-deleted-" +msgstr "-raderad-" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:21 +msgid "to:" +msgstr "till:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:21 +msgid "from:" +msgstr "från:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:27 +msgid "Added" +msgstr "Lagt till" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:34 +msgid "Changed" +msgstr "Ändrad" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:41 +msgid "Deleted" +msgstr "Raderad" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:55 +msgid "added:" +msgstr "lagt till:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:58 +msgid "removed:" +msgstr "borttaget:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:63 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:80 +msgid "From:" +msgstr "Från:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:64 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:81 +msgid "To:" +msgstr "Till:" + +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 +msgid "content" +msgstr "innehåll" + +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 +msgid "blocked note" +msgstr "blockerad notering" + +#: taiga/projects/history/templatetags/functions.py:27 +msgid "sprint" +msgstr "sprint" + +#: taiga/projects/issues/api.py:163 +msgid "You don't have permissions to set this sprint to this issue." +msgstr "Du har inte behörighet att sätta sprinten till det här ärendet." + +#: taiga/projects/issues/api.py:167 +msgid "You don't have permissions to set this status to this issue." +msgstr "Du har inte behörighet att sätta status till det här ärendet. " + +#: taiga/projects/issues/api.py:171 +msgid "You don't have permissions to set this severity to this issue." +msgstr "Du har inte behörighet att sätta allvarsgrad till det här ärendet. " + +#: taiga/projects/issues/api.py:175 +msgid "You don't have permissions to set this priority to this issue." +msgstr "Du har inte behörighet att sätta prioriteten för det här ärendet. " + +#: taiga/projects/issues/api.py:179 +msgid "You don't have permissions to set this type to this issue." +msgstr "Du har inte behörighet att lägga till typen till ärendet. " + +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 +msgid "ref" +msgstr "ref" + +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 +msgid "status" +msgstr "status" + +#: taiga/projects/issues/models.py:43 +msgid "severity" +msgstr "Allvarsgrad" + +#: taiga/projects/issues/models.py:45 +msgid "priority" +msgstr "prioritet" + +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 +msgid "milestone" +msgstr "milstolpe" + +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 +msgid "finished date" +msgstr "färdig datum" + +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 +msgid "subject" +msgstr "titel" + +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 +msgid "assigned to" +msgstr "Tilldelad till" + +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 +msgid "external reference" +msgstr "extern referens" + +#: taiga/projects/likes/models.py:35 +msgid "Like" +msgstr "Gillar" + +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Gillar" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 +msgid "slug" +msgstr "slugg" + +#: taiga/projects/milestones/models.py:45 +msgid "estimated start date" +msgstr "Beräknad startdatum" + +#: taiga/projects/milestones/models.py:46 +msgid "estimated finish date" +msgstr "Beräknad slutdato" + +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 +msgid "is closed" +msgstr "är stängd" + +#: taiga/projects/milestones/models.py:55 +msgid "disponibility" +msgstr "disponerar" + +#: taiga/projects/milestones/models.py:80 +msgid "The estimated start must be previous to the estimated finish." +msgstr "Beräknad startdatum måste vara tidigare än beräknad slutdatum. " + +#: taiga/projects/milestones/validators.py:12 +msgid "There's no sprint with that id" +msgstr "Det finns ingen sprint med det här ID-numret" + +#: taiga/projects/mixins/blocked.py:30 +msgid "is blocked" +msgstr "är blockerad" + +#: taiga/projects/mixins/ordering.py:48 +#, python-brace-format +msgid "'{param}' parameter is mandatory" +msgstr "'{param}' parameter är obligatoriskt" + +#: taiga/projects/mixins/ordering.py:52 +msgid "'project' parameter is mandatory" +msgstr "'project' parameter är obligatoriskt" + +#: taiga/projects/models.py:95 +msgid "email" +msgstr "e-post" + +#: taiga/projects/models.py:97 +msgid "create at" +msgstr "skapa som" + +#: taiga/projects/models.py:99 taiga/users/models.py:134 +msgid "token" +msgstr "textsträng" + +#: taiga/projects/models.py:105 +msgid "invitation extra text" +msgstr "Invitation - extra text" + +#: taiga/projects/models.py:108 +msgid "user order" +msgstr "användarorder" + +#: taiga/projects/models.py:118 +msgid "The user is already member of the project" +msgstr "Användaren är redan medlem i projekt" + +#: taiga/projects/models.py:133 +msgid "default points" +msgstr "standardpoäng" + +#: taiga/projects/models.py:137 +msgid "default US status" +msgstr "standard US-poäng" + +#: taiga/projects/models.py:141 +msgid "default task status" +msgstr "standard status för uppgift" + +#: taiga/projects/models.py:144 +msgid "default priority" +msgstr "standard prioritet" + +#: taiga/projects/models.py:147 +msgid "default severity" +msgstr "standard allvarsgrad" + +#: taiga/projects/models.py:151 +msgid "default issue status" +msgstr "standard status för ärende" + +#: taiga/projects/models.py:155 +msgid "default issue type" +msgstr "standard typ för ärende" + +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 +msgid "members" +msgstr "medlemmar" + +#: taiga/projects/models.py:184 +msgid "total of milestones" +msgstr "totalt antal milstolpar" + +#: taiga/projects/models.py:185 +msgid "total story points" +msgstr "totalt antal historiepoäng" + +#: taiga/projects/models.py:188 taiga/projects/models.py:697 +msgid "active backlog panel" +msgstr "aktivt panel för inkorg" + +#: taiga/projects/models.py:190 taiga/projects/models.py:699 +msgid "active kanban panel" +msgstr "aktiv kanban-panel" + +#: taiga/projects/models.py:192 taiga/projects/models.py:701 +msgid "active wiki panel" +msgstr "aktiv wiki-panel" + +#: taiga/projects/models.py:194 taiga/projects/models.py:703 +msgid "active issues panel" +msgstr "aktiv panel för ärenden" + +#: taiga/projects/models.py:197 taiga/projects/models.py:706 +msgid "videoconference system" +msgstr "videokonferensssystem" + +#: taiga/projects/models.py:199 taiga/projects/models.py:708 +msgid "videoconference extra data" +msgstr "videokonferens - extra data" + +#: taiga/projects/models.py:204 +msgid "creation template" +msgstr "mall skapas" + +#: taiga/projects/models.py:208 +msgid "anonymous permissions" +msgstr "anonyma rättigheter" + +#: taiga/projects/models.py:212 +msgid "user permissions" +msgstr "användarbehörigheter" + +#: taiga/projects/models.py:215 +msgid "is private" +msgstr "är privat" + +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 +msgid "tags colors" +msgstr "färger för taggar" + +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 +msgid "updated date time" +msgstr "uppdaterad dato och tid" + +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "räkna" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "konfigurera moduler" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "är arkiverad" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "färg" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "begränsad arbete pågår" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "värde" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "ägarens standardroll" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "standard val" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "US statuser" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "poäng" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "statuser för uppgifter" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "status för ärenden" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "ärendentyper" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "prioriteter" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "allvarsgrad" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "roller" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "Involverad" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Alla" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Ingen" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "skapad dato och tid" + +#: taiga/projects/notifications/models.py:66 +msgid "history entries" +msgstr "historienotat" + +#: taiga/projects/notifications/models.py:69 +msgid "notify users" +msgstr "notifiera användare" + +#: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 +msgid "Watched" +msgstr "Visad" + +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 +msgid "Notify exists for specified user and project" +msgstr "Notifiering finns för användaren och projektet" + +#: taiga/projects/notifications/services.py:429 +msgid "Invalid value for notify level" +msgstr "Felaktigt värde för notifieringen" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue updated

\n" +"

Hello %(user)s,
%(changer)s has updated an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Issue updated\n" +"Hello %(user)s, %(changer)s has updated an issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New issue created

\n" +"

Hello %(user)s,
%(changer)s has created a new issue on " +"%(project)s

\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New issue created\n" +"Hello %(user)s, %(changer)s has created a new issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Issue deleted\n" +"Hello %(user)s, %(changer)s has deleted an issue on %(project)s\n" +"Issue #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint updated

\n" +"

Hello %(user)s,
%(changer)s has updated an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See sprint\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Sprint updated\n" +"Hello %(user)s, %(changer)s has updated a sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New sprint created

\n" +"

Hello %(user)s,
%(changer)s has created a new sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See " +"sprint\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New sprint created\n" +"Hello %(user)s, %(changer)s has created a new sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Sprint deleted\n" +"Hello %(user)s, %(changer)s has deleted an sprint on %(project)s\n" +"Sprint %(name)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task updated

\n" +"

Hello %(user)s,
%(changer)s has updated a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Task updated\n" +"Hello %(user)s, %(changer)s has updated a task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New task created

\n" +"

Hello %(user)s,
%(changer)s has created a new task on " +"%(project)s

\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New task created\n" +"Hello %(user)s, %(changer)s has created a new task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Task deleted\n" +"Hello %(user)s, %(changer)s has deleted a task on %(project)s\n" +"Task #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the task #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story updated

\n" +"

Hello %(user)s,
%(changer)s has updated a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"User story updated\n" +"Hello %(user)s, %(changer)s has updated a user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New user story created

\n" +"

Hello %(user)s,
%(changer)s has created a new user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New user story created\n" +"Hello %(user)s, %(changer)s has created a new user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"User Story deleted\n" +"Hello %(user)s, %(changer)s has deleted a user story on %(project)s\n" +"User Story #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the US #%(ref)s \"%(subject)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki Page updated

\n" +"

Hello %(user)s,
%(changer)s has updated a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See Wiki Page\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Wiki Page updated\n" +"\n" +"Hello %(user)s, %(changer)s has updated a wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New wiki page created

\n" +"

Hello %(user)s,
%(changer)s has created a new wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See " +"wiki page\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New wiki page created\n" +"\n" +"Hello %(user)s, %(changer)s has created a new wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki page deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Wiki page deleted\n" +"\n" +"Hello %(user)s, %(changer)s has deleted a wiki page on %(project)s\n" +"\n" +"Wiki page %(page)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Wiki Page \"%(page)s\"\n" +msgstr "" + +#: taiga/projects/notifications/validators.py:47 +msgid "Watchers contains invalid users" +msgstr "Listan på bevakare består av felaktiga användare" + +#: taiga/projects/occ/mixins.py:36 +msgid "The version must be an integer" +msgstr "Versionen måste vara ett heltal" + +#: taiga/projects/occ/mixins.py:59 +msgid "The version parameter is not valid" +msgstr "Versionsparametern är ogiltig" + +#: taiga/projects/occ/mixins.py:75 +msgid "The version doesn't match with the current one" +msgstr "Versionen stämmer inte med den aktuella versionen" + +#: taiga/projects/occ/mixins.py:94 +msgid "version" +msgstr "version" + +#: taiga/projects/permissions.py:40 +msgid "You can't leave the project if there are no more owners" +msgstr "Du kan inte lämna projketet om det inte är flera projektägare" + +#: taiga/projects/serializers.py:237 +msgid "Email address is already taken" +msgstr "E-postadressen är redan använd" + +#: taiga/projects/serializers.py:249 +msgid "Invalid role for the project" +msgstr "Fel roll for projektet" + +#: taiga/projects/serializers.py:425 +msgid "Default options" +msgstr "Standardval" + +#: taiga/projects/serializers.py:426 +msgid "User story's statuses" +msgstr "Status för användarhistorien" + +#: taiga/projects/serializers.py:427 +msgid "Points" +msgstr "Poäng" + +#: taiga/projects/serializers.py:428 +msgid "Task's statuses" +msgstr "Status för uppgifter" + +#: taiga/projects/serializers.py:429 +msgid "Issue's statuses" +msgstr "Status för ärenden" + +#: taiga/projects/serializers.py:430 +msgid "Issue's types" +msgstr "Ärendetyper" + +#: taiga/projects/serializers.py:431 +msgid "Priorities" +msgstr "Prioritet" + +#: taiga/projects/serializers.py:432 +msgid "Severities" +msgstr "Allvarsgrad" + +#: taiga/projects/serializers.py:433 +msgid "Roles" +msgstr "Roller" + +#: taiga/projects/services/stats.py:198 +msgid "Future sprint" +msgstr "Framtidig sprint" + +#: taiga/projects/services/stats.py:216 +msgid "Project End" +msgstr "Projektslut" + +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 +msgid "You don't have permissions to set this sprint to this task." +msgstr "Du har inte behörighet åt att sätta sprinten till en uppgift" + +#: taiga/projects/tasks/api.py:115 +msgid "You don't have permissions to set this user story to this task." +msgstr "Du har inte behörighet att sätta använderhistorien till en uppgift." + +#: taiga/projects/tasks/api.py:118 +msgid "You don't have permissions to set this status to this task." +msgstr "Du har inte behörighet att sätta status till en uppgift. " + +#: taiga/projects/tasks/models.py:57 +msgid "us order" +msgstr "sortera US" + +#: taiga/projects/tasks/models.py:59 +msgid "taskboard order" +msgstr "Sortera uppgiftstavlan" + +#: taiga/projects/tasks/models.py:67 +msgid "is iocaine" +msgstr "är Iocaine" + +#: taiga/projects/tasks/validators.py:12 +msgid "There's no task with that id" +msgstr "Det är ingen uppgift med det ID-numret" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:6 +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:4 +msgid "someone" +msgstr "någon" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:11 +#, python-format +msgid "" +"\n" +"

You have been invited to Taiga!

\n" +"

Hi! %(full_name)s has sent you an invitation to join project " +"%(project)s in Taiga.
Taiga is a Free, open Source Agile Project " +"Management Tool.

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:17 +#, python-format +msgid "" +"\n" +"

And now a few words from the jolly good fellow or sistren
" +"who thought so kindly as to invite you

\n" +"

%(extra)s

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation to Taiga" +msgstr "Accceptera din invitation till Taiga" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation" +msgstr "Acceptera din invitation" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:25 +msgid "The Taiga Team" +msgstr "Ditt Taiga Team" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:6 +#, python-format +msgid "" +"\n" +"You, or someone you know, has invited you to Taiga\n" +"\n" +"Hi! %(full_name)s has sent you an invitation to join a project called " +"%(project)s which is being managed on Taiga, a Free, open Source Agile " +"Project Management Tool.\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:12 +#, python-format +msgid "" +"\n" +"And now a few words from the jolly good fellow or sistren who thought so " +"kindly as to invite you:\n" +"\n" +"%(extra)s\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:18 +msgid "Accept your invitation to Taiga following this link:" +msgstr "Acceptera din invitation till Taiga via den här länken:" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:20 +msgid "" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Invitation to join to the project '%(project)s'\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

You have been added to a project

\n" +"

Hello %(full_name)s,
you have been added to the project " +"%(project)s

\n" +" Go to " +"project\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"You have been added to a project\n" +"Hello %(full_name)s,you have been added to the project %(project)s\n" +"\n" +"See project at %(url)s\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Added to the project '%(project)s'\n" +msgstr "" + +#. Translators: Name of scrum project template. +#: taiga/projects/translations.py:29 +msgid "Scrum" +msgstr "Scrum" + +#. Translators: Description of scrum project template. +#: taiga/projects/translations.py:31 +msgid "" +"The agile product backlog in Scrum is a prioritized features list, " +"containing short descriptions of all functionality desired in the product. " +"When applying Scrum, it's not necessary to start a project with a lengthy, " +"upfront effort to document all requirements. The Scrum product backlog is " +"then allowed to grow and change as more is learned about the product and its " +"customers" +msgstr "" +"Den smidiga inkorgen i Scrum är en lista med prioriterade områden, som " +"innehåller korta beskrivningar av alla funktioner som önskas i produkten. " +"Vid tillämpning av Scrum, är det inte nödvändigt att starta ett projekt med " +"en lång lista dokumentationskrav. Scrum inkorgen får växa och förändras när " +"man lär sig om produkten, funktioner och kunder. " + +#. Translators: Name of kanban project template. +#: taiga/projects/translations.py:34 +msgid "Kanban" +msgstr "Kanban" + +#. Translators: Description of kanban project template. +#: taiga/projects/translations.py:36 +msgid "" +"Kanban is a method for managing knowledge work with an emphasis on just-in-" +"time delivery while not overloading the team members. In this approach, the " +"process, from definition of a task to its delivery to the customer, is " +"displayed for participants to see and team members pull work from a queue." +msgstr "" +"Kanban är en metod för att hantera kunskapsarbete med betoning på just-in-" +"time-leveranser utan överbelastning av gruppmedlemmarna. Det här " +"tillvägagångssättet och processen, från definitionen av ett uppdrag till " +"kundleverans, visas för deltagarna att se och teammedlemmar drar arbete från " +"uppdragskön." + +#. Translators: User story point value (value = undefined) +#: taiga/projects/translations.py:44 +msgid "?" +msgstr "?" + +#. Translators: User story point value (value = 0) +#: taiga/projects/translations.py:46 +msgid "0" +msgstr "0" + +#. Translators: User story point value (value = 0.5) +#: taiga/projects/translations.py:48 +msgid "1/2" +msgstr "1/2" + +#. Translators: User story point value (value = 1) +#: taiga/projects/translations.py:50 +msgid "1" +msgstr "1" + +#. Translators: User story point value (value = 2) +#: taiga/projects/translations.py:52 +msgid "2" +msgstr "2" + +#. Translators: User story point value (value = 3) +#: taiga/projects/translations.py:54 +msgid "3" +msgstr "3" + +#. Translators: User story point value (value = 5) +#: taiga/projects/translations.py:56 +msgid "5" +msgstr "5" + +#. Translators: User story point value (value = 8) +#: taiga/projects/translations.py:58 +msgid "8" +msgstr "8" + +#. Translators: User story point value (value = 10) +#: taiga/projects/translations.py:60 +msgid "10" +msgstr "10" + +#. Translators: User story point value (value = 13) +#: taiga/projects/translations.py:62 +msgid "13" +msgstr "13" + +#. Translators: User story point value (value = 20) +#: taiga/projects/translations.py:64 +msgid "20" +msgstr "20" + +#. Translators: User story point value (value = 40) +#: taiga/projects/translations.py:66 +msgid "40" +msgstr "40" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 +msgid "New" +msgstr "Ny" + +#. Translators: User story status +#: taiga/projects/translations.py:77 +msgid "Ready" +msgstr "Leveransklar" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 +msgid "In progress" +msgstr "Pågående" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 +msgid "Ready for test" +msgstr "Klart till test" + +#. Translators: User story status +#: taiga/projects/translations.py:86 +msgid "Done" +msgstr "Färdig" + +#. Translators: User story status +#: taiga/projects/translations.py:89 +msgid "Archived" +msgstr "Arkiverad" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 +msgid "Closed" +msgstr "Stängd" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 +msgid "Needs Info" +msgstr "Behöver information" + +#. Translators: Issue status +#: taiga/projects/translations.py:123 +msgid "Postponed" +msgstr "Uppskjutit" + +#. Translators: Issue status +#: taiga/projects/translations.py:125 +msgid "Rejected" +msgstr "Avslått" + +#. Translators: Issue type +#: taiga/projects/translations.py:133 +msgid "Bug" +msgstr "Bugg" + +#. Translators: Issue type +#: taiga/projects/translations.py:135 +msgid "Question" +msgstr "Fråga" + +#. Translators: Issue type +#: taiga/projects/translations.py:137 +msgid "Enhancement" +msgstr "Förbättring" + +#. Translators: Issue priority +#: taiga/projects/translations.py:145 +msgid "Low" +msgstr "Låg" + +#. Translators: Issue priority +#. Translators: Issue severity +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 +msgid "Normal" +msgstr "Normal" + +#. Translators: Issue priority +#: taiga/projects/translations.py:149 +msgid "High" +msgstr "Hög" + +#. Translators: Issue severity +#: taiga/projects/translations.py:156 +msgid "Wishlist" +msgstr "Önskelista" + +#. Translators: Issue severity +#: taiga/projects/translations.py:158 +msgid "Minor" +msgstr "Mindre" + +#. Translators: Issue severity +#: taiga/projects/translations.py:162 +msgid "Important" +msgstr "Viktig" + +#. Translators: Issue severity +#: taiga/projects/translations.py:164 +msgid "Critical" +msgstr "Kritiskt" + +#. Translators: User role +#: taiga/projects/translations.py:171 +msgid "UX" +msgstr "UX" + +#. Translators: User role +#: taiga/projects/translations.py:173 +msgid "Design" +msgstr "Design" + +#. Translators: User role +#: taiga/projects/translations.py:175 +msgid "Front" +msgstr "Framsida" + +#. Translators: User role +#: taiga/projects/translations.py:177 +msgid "Back" +msgstr "Baksida" + +#. Translators: User role +#: taiga/projects/translations.py:179 +msgid "Product Owner" +msgstr "Produktägare" + +#. Translators: User role +#: taiga/projects/translations.py:181 +msgid "Stakeholder" +msgstr "Intressent" + +#: taiga/projects/userstories/api.py:162 +msgid "You don't have permissions to set this sprint to this user story." +msgstr "" +"Du har inte behörighet för att lägga sprinten till den här användarhistorien" + +#: taiga/projects/userstories/api.py:166 +msgid "You don't have permissions to set this status to this user story." +msgstr "" +"Du har inte behörighet till att sätta den här statusen till " +"användarhistorien." + +#: taiga/projects/userstories/api.py:260 +#, python-brace-format +msgid "Generating the user story #{ref} - {subject}" +msgstr "Skapar användarhistorie #{ref} - {subject}" + +#: taiga/projects/userstories/models.py:39 +msgid "role" +msgstr "roll" + +#: taiga/projects/userstories/models.py:77 +msgid "backlog order" +msgstr "sortera inkorgen" + +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 +msgid "sprint order" +msgstr "sortera sprintar" + +#: taiga/projects/userstories/models.py:89 +msgid "finish date" +msgstr "färdig datum" + +#: taiga/projects/userstories/models.py:97 +msgid "is client requirement" +msgstr "är ett beställarkrav" + +#: taiga/projects/userstories/models.py:99 +msgid "is team requirement" +msgstr "är ett krav från arbetsgruppen" + +#: taiga/projects/userstories/models.py:104 +msgid "generated from issue" +msgstr "skapad från ärende" + +#: taiga/projects/userstories/validators.py:29 +msgid "There's no user story with that id" +msgstr "Det är inga användarhistoria med det ID-numret" + +#: taiga/projects/validators.py:29 +msgid "There's no project with that id" +msgstr "Det är inga projekt med det ID-numret" + +#: taiga/projects/validators.py:38 +msgid "There's no user story status with that id" +msgstr "Det är inga användarhistoria-status med det ID-numret" + +#: taiga/projects/validators.py:47 +msgid "There's no task status with that id" +msgstr "Det är inga uppgifter med det ID-numret" + +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 +msgid "Votes" +msgstr "Röster" + +#: taiga/projects/votes/models.py:56 +msgid "Vote" +msgstr "Rösta" + +#: taiga/projects/wiki/api.py:67 +msgid "'content' parameter is mandatory" +msgstr "'content' parametern är obligatoriskt" + +#: taiga/projects/wiki/api.py:70 +msgid "'project_id' parameter is mandatory" +msgstr "'project_id' parametern är obligatoriskt" + +#: taiga/projects/wiki/models.py:38 +msgid "last modifier" +msgstr "senastste ändring" + +#: taiga/projects/wiki/models.py:71 +msgid "href" +msgstr "href" + +#: taiga/timeline/signals.py:70 +msgid "Check the history API for the exact diff" +msgstr "Kolla historie API för exakt skillnad" + +#: taiga/users/admin.py:51 +msgid "Personal info" +msgstr "Personalinformation" + +#: taiga/users/admin.py:53 +msgid "Permissions" +msgstr "Behörigheter" + +#: taiga/users/admin.py:54 +msgid "Important dates" +msgstr "Viktiga datum" + +#: taiga/users/api.py:112 +msgid "Duplicated email" +msgstr "E-post-dublett" + +#: taiga/users/api.py:114 +msgid "Not valid email" +msgstr "Ingen giltig e-postadress" + +#: taiga/users/api.py:147 +msgid "Invalid username or email" +msgstr "Ogiltigt användarnamn eller e-postadress" + +#: taiga/users/api.py:156 +msgid "Mail sended successful!" +msgstr "E-posten skickades korrekt" + +#: taiga/users/api.py:168 taiga/users/api.py:173 +msgid "Token is invalid" +msgstr "Textsträngen är ogiltig" + +#: taiga/users/api.py:194 +msgid "Current password parameter needed" +msgstr "Parameter för nuvarande lösenord krävs" + +#: taiga/users/api.py:197 +msgid "New password parameter needed" +msgstr "Parameter för nytt lösenord krävs" + +#: taiga/users/api.py:200 +msgid "Invalid password length at least 6 charaters needed" +msgstr "Felaktig längd på lösenord. Minst 6 alfanumeriska tecken krävs." + +#: taiga/users/api.py:203 +msgid "Invalid current password" +msgstr "Fel lösenord" + +#: taiga/users/api.py:250 taiga/users/api.py:256 +msgid "" +"Invalid, are you sure the token is correct and you didn't use it before?" +msgstr "" +"Fel. Är du säker på att strängen är korrekt och att du inte har använt det " +"tidigare?" + +#: taiga/users/api.py:283 taiga/users/api.py:291 taiga/users/api.py:294 +msgid "Invalid, are you sure the token is correct?" +msgstr "Fel, är du säker på att textsträngen är korrekt? " + +#: taiga/users/models.py:75 +msgid "superuser status" +msgstr "status för administratorn" + +#: taiga/users/models.py:76 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" +"Anger om användaren har alla behörigheter utan att uttryckligen tilldela " +"dem. " + +#: taiga/users/models.py:106 +msgid "username" +msgstr "användarnamn" + +#: taiga/users/models.py:107 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" +msgstr "" +"Obligatoriskt. 30 eller färre alfanumeriska tecken, bokstäver och /./-/_ . " + +#: taiga/users/models.py:110 +msgid "Enter a valid username." +msgstr "Skriv in ett giltigt användarnamn" + +#: taiga/users/models.py:113 +msgid "active" +msgstr "aktiv" + +#: taiga/users/models.py:114 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" +"Anger om användaren ska betraktas som aktiv. Avmarkera detta i stället för " +"att ta bort kontot." + +#: taiga/users/models.py:120 +msgid "biography" +msgstr "biografi" + +#: taiga/users/models.py:123 +msgid "photo" +msgstr "foto" + +#: taiga/users/models.py:124 +msgid "date joined" +msgstr "blev medlem datum" + +#: taiga/users/models.py:126 +msgid "default language" +msgstr "standardspråk" + +#: taiga/users/models.py:128 +msgid "default theme" +msgstr "standardtema" + +#: taiga/users/models.py:130 +msgid "default timezone" +msgstr "standard tidzon" + +#: taiga/users/models.py:132 +msgid "colorize tags" +msgstr "farglägg taggar" + +#: taiga/users/models.py:137 +msgid "email token" +msgstr "e-poststräng" + +#: taiga/users/models.py:139 +msgid "new email address" +msgstr "ny e-postadress" + +#: taiga/users/models.py:256 +msgid "permissions" +msgstr "behörigheter" + +#: taiga/users/serializers.py:65 +msgid "invalid" +msgstr "felaktigt" + +#: taiga/users/serializers.py:76 +msgid "Invalid username. Try with a different one." +msgstr "Felaktigt användarnamn. Försök med ett annat användarnamn." + +#: taiga/users/services.py:52 taiga/users/services.py:69 +msgid "Username or password does not matches user." +msgstr "Användarnamn eller lösenord passar inte." + +#: taiga/users/templates/emails/change_email-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Change your email

\n" +"

Hello %(full_name)s,
please confirm your email

\n" +" Confirm " +"email\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/change_email-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, please confirm your email\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/change_email-subject.jinja:1 +msgid "[Taiga] Change email" +msgstr "Ändra din e-postadress" + +#: taiga/users/templates/emails/password_recovery-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Recover your password

\n" +"

Hello %(full_name)s,
you asked to recover your password

\n" +" Recover your password\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/password_recovery-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, you asked to recover your password\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/password_recovery-subject.jinja:1 +msgid "[Taiga] Password recovery" +msgstr "[Taiga] Återställa lösenord" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:6 +msgid "" +"\n" +" \n" +"

Thank you for registering in Taiga

\n" +"

We hope you enjoy it

\n" +"

We built Taiga because we wanted the project management tool " +"that sits open on our computers all day long, to serve as a continued " +"reminder of why we love to collaborate, code and design.

\n" +"

We built it to be beautiful, elegant, simple to use and fun - " +"without forsaking flexibility and power.

\n" +" The taiga Team\n" +" \n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:23 +#, python-format +msgid "" +"\n" +" You may remove your account from this service clicking " +"here\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:1 +msgid "" +"\n" +"Thank you for registering in Taiga\n" +"\n" +"We hope you enjoy it\n" +"\n" +"We built Taiga because we wanted the project management tool that sits open " +"on our computers all day long, to serve as a continued reminder of why we " +"love to collaborate, code and design.\n" +"\n" +"We built it to be beautiful, elegant, simple to use and fun - without " +"forsaking flexibility and power.\n" +"\n" +"--\n" +"The taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:13 +#, python-format +msgid "" +"\n" +"You may remove your account from this service: %(url)s\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-subject.jinja:1 +msgid "You've been Taigatized!" +msgstr "Du har blivit Taiganiserad!" + +#: taiga/users/validators.py:30 +msgid "There's no role with that id" +msgstr "Det är inga roller med det ID-numret" + +#: taiga/userstorage/api.py:51 +msgid "" +"Duplicate key value violates unique constraint. Key '{}' already exists." +msgstr "Dublett-nyckelvärden bryter unik begränsning. Key \"{}\" finns redan." + +#: taiga/userstorage/models.py:31 +msgid "key" +msgstr "nyckel" + +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 +msgid "URL" +msgstr "Länk" + +#: taiga/webhooks/models.py:30 +msgid "secret key" +msgstr "hemlig nyckel" + +#: taiga/webhooks/models.py:40 +msgid "status code" +msgstr "statuskod" + +#: taiga/webhooks/models.py:41 +msgid "request data" +msgstr "begär data" + +#: taiga/webhooks/models.py:42 +msgid "request headers" +msgstr "begär titel" + +#: taiga/webhooks/models.py:43 +msgid "response data" +msgstr "responsdata" + +#: taiga/webhooks/models.py:44 +msgid "response headers" +msgstr "responstitel" + +#: taiga/webhooks/models.py:45 +msgid "duration" +msgstr "varaktighet" From 49d90d4289c58c46c0b6568027f9306506ef3a58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 26 Jan 2016 12:24:32 +0100 Subject: [PATCH 37/41] [i18n] Add turkish lang --- CHANGELOG.md | 1 + settings/common.py | 2 +- taiga/locale/tr/LC_MESSAGES/django.po | 3281 +++++++++++++++++++++++++ 3 files changed, 3283 insertions(+), 1 deletion(-) create mode 100644 taiga/locale/tr/LC_MESSAGES/django.po diff --git a/CHANGELOG.md b/CHANGELOG.md index d31a36dd..89197149 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - Show stats for discover secction - i18n. - Add swedish (sv) translation. + - Add turkish (tr) translation. ### Misc - Lots of small and not so small bugfixes. diff --git a/settings/common.py b/settings/common.py index b24c12d4..3687486b 100644 --- a/settings/common.py +++ b/settings/common.py @@ -144,7 +144,7 @@ LANGUAGES = [ #("ta", "தமிழ்"), # Tamil #("te", "తెలుగు"), # Telugu #("th", "ภาษาไทย"), # Thai - #("tr", "Türkçe"), # Turkish + ("tr", "Türkçe"), # Turkish #("tt", "татар теле"), # Tatar #("udm", "удмурт кыл"), # Udmurt #("uk", "Українська"), # Ukrainian diff --git a/taiga/locale/tr/LC_MESSAGES/django.po b/taiga/locale/tr/LC_MESSAGES/django.po new file mode 100644 index 00000000..2475a8fe --- /dev/null +++ b/taiga/locale/tr/LC_MESSAGES/django.po @@ -0,0 +1,3281 @@ +# taiga-back.taiga. +# Copyright (C) 2014-2016 Taiga Dev Team +# This file is distributed under the same license as the taiga-back package. +# +# Translators: +# Can Aydin , 2015 +# catborise , 2015 +msgid "" +msgstr "" +"Project-Id-Version: taiga-back\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"PO-Revision-Date: 2016-01-22 12:10+0000\n" +"Last-Translator: Taiga Dev Team \n" +"Language-Team: Turkish (http://www.transifex.com/taiga-agile-llc/taiga-back/" +"language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: taiga/auth/api.py:100 +msgid "Public register is disabled." +msgstr "" + +#: taiga/auth/api.py:133 +msgid "invalid register type" +msgstr "geçersiz kayıt tipi" + +#: taiga/auth/api.py:146 +msgid "invalid login type" +msgstr "geçersiz giriş tipi" + +#: taiga/auth/serializers.py:35 taiga/users/serializers.py:64 +msgid "invalid username" +msgstr "geçersiz kullanıcı adı" + +#: taiga/auth/serializers.py:40 taiga/users/serializers.py:70 +msgid "" +"Required. 255 characters or fewer. Letters, numbers and /./-/_ characters'" +msgstr "" +"Zorunlu. 255 karakter ya da daha azı. Harfler, sayılar ve /./-/_ karakterleri" + +#: taiga/auth/services.py:74 +msgid "Username is already in use." +msgstr "Kullanıcı adı zaten kullanımda." + +#: taiga/auth/services.py:77 +msgid "Email is already in use." +msgstr "E-posta zaten kullanımda." + +#: taiga/auth/services.py:93 +msgid "Token not matches any valid invitation." +msgstr "Kupon geçerli hiç bir davetle uyuşmuyor." + +#: taiga/auth/services.py:121 +msgid "User is already registered." +msgstr "Kullanıcı zaten kayıtlı." + +#: taiga/auth/services.py:145 +msgid "This user is already a member of the project." +msgstr "" + +#: taiga/auth/services.py:171 +msgid "Error on creating new user." +msgstr "Yeni kullanıcı oluşturulurken hata meydana geldi." + +#: taiga/auth/tokens.py:48 taiga/auth/tokens.py:55 +#: taiga/external_apps/services.py:35 +msgid "Invalid token" +msgstr "Geçersiz kupon" + +#: taiga/base/api/fields.py:292 +msgid "This field is required." +msgstr "Bu alan zorunlu." + +#: taiga/base/api/fields.py:293 taiga/base/api/relations.py:335 +msgid "Invalid value." +msgstr "Geçersiz değer." + +#: taiga/base/api/fields.py:477 +#, python-format +msgid "'%s' value must be either True or False." +msgstr "%s' değeri ya Doğru ya da Yanlış olmalıdır." + +#: taiga/base/api/fields.py:541 +msgid "" +"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." +msgstr "" + +#: taiga/base/api/fields.py:556 +#, python-format +msgid "Select a valid choice. %(value)s is not one of the available choices." +msgstr "" +"Geçerli bir seçenek belirleyin. %(value)s değeri mevcut seçenekler arasında " +"yok." + +#: taiga/base/api/fields.py:619 +msgid "Enter a valid email address." +msgstr "Geçerli bir e-posta adresi girin." + +#: taiga/base/api/fields.py:661 +#, python-format +msgid "Date has wrong format. Use one of these formats instead: %s" +msgstr "Tarih biçemi yanlış. Belirtilen biçemlerden birini kullanın: %s" + +#: taiga/base/api/fields.py:725 +#, python-format +msgid "Datetime has wrong format. Use one of these formats instead: %s" +msgstr "Tarih saat biçemi yanlış. Belirtilen biçemlerden birini kullanın: %s" + +#: taiga/base/api/fields.py:795 +#, python-format +msgid "Time has wrong format. Use one of these formats instead: %s" +msgstr "Zaman biçemi yanlış. Belirtilen biçemlerden birini kullanın: %s" + +#: taiga/base/api/fields.py:852 +msgid "Enter a whole number." +msgstr "Bir tam sayı girin." + +#: taiga/base/api/fields.py:853 taiga/base/api/fields.py:906 +#, python-format +msgid "Ensure this value is less than or equal to %(limit_value)s." +msgstr "" +"Bu değerin %(limit_value)s değerine eşit ya da daha az olduğundan emin olun." + +#: taiga/base/api/fields.py:854 taiga/base/api/fields.py:907 +#, python-format +msgid "Ensure this value is greater than or equal to %(limit_value)s." +msgstr "" +"Bu değerin %(limit_value)s değerine eşit ya da daha fazla olduğundan emin " +"olun." + +#: taiga/base/api/fields.py:884 +#, python-format +msgid "\"%s\" value must be a float." +msgstr "\"%s\" değeri kesirli bir sayı olmalıdır." + +#: taiga/base/api/fields.py:905 +msgid "Enter a number." +msgstr "Bir sayın girin." + +#: taiga/base/api/fields.py:908 +#, python-format +msgid "Ensure that there are no more than %s digits in total." +msgstr "Toplamda %s basamaktan fazla olmadığından emin olun." + +#: taiga/base/api/fields.py:909 +#, python-format +msgid "Ensure that there are no more than %s decimal places." +msgstr "%s ondalık değerinden fazla olmalıdığından emin olun." + +#: taiga/base/api/fields.py:910 +#, python-format +msgid "Ensure that there are no more than %s digits before the decimal point." +msgstr "" +"Virgülden önceki rakamların %s basamaktan fazla olmadığından emin olun." + +#: taiga/base/api/fields.py:977 +msgid "No file was submitted. Check the encoding type on the form." +msgstr "Dosya ibraz edilmedi. Formdan kodlama tipini kontrol edin." + +#: taiga/base/api/fields.py:978 +msgid "No file was submitted." +msgstr "Dosya ibraz edilmedi." + +#: taiga/base/api/fields.py:979 +msgid "The submitted file is empty." +msgstr "İbraz edilen dosya boş" + +#: taiga/base/api/fields.py:980 +#, python-format +msgid "" +"Ensure this filename has at most %(max)d characters (it has %(length)d)." +msgstr "" + +#: taiga/base/api/fields.py:981 +msgid "Please either submit a file or check the clear checkbox, not both." +msgstr "" +"Lütfen bir dosya ibraz edin ya da onay kutusunu seçmeyin, ikisini birden " +"olmaz." + +#: taiga/base/api/fields.py:1021 +msgid "" +"Upload a valid image. The file you uploaded was either not an image or a " +"corrupted image." +msgstr "" +"Geçerli bir resim yükleyin. Yüklenen dosya ya bozulmuş bir resim ya da bir " +"resim dosyası değil." + +#: taiga/base/api/pagination.py:213 +msgid "Page is not 'last', nor can it be converted to an int." +msgstr "" + +#: taiga/base/api/pagination.py:217 +#, python-format +msgid "Invalid page (%(page_number)s): %(message)s" +msgstr "Geçersiz sayfa (%(page_number)s): %(message)s" + +#: taiga/base/api/permissions.py:64 +msgid "Invalid permission definition." +msgstr "Geçersiz izin tanımı." + +#: taiga/base/api/relations.py:245 +#, python-format +msgid "Invalid pk '%s' - object does not exist." +msgstr "Geçersiz pk '%s' - nesne mevcut değil." + +#: taiga/base/api/relations.py:246 +#, python-format +msgid "Incorrect type. Expected pk value, received %s." +msgstr "Hatalı tip. Beklenen pk değeri, alınan %s." + +#: taiga/base/api/relations.py:334 +#, python-format +msgid "Object with %s=%s does not exist." +msgstr "%s=%s objesi mevcut değil." + +#: taiga/base/api/relations.py:370 +msgid "Invalid hyperlink - No URL match" +msgstr "Geçersiz hiperlink - URL eşleşmesi yok" + +#: taiga/base/api/relations.py:371 +msgid "Invalid hyperlink - Incorrect URL match" +msgstr "Geçersiz hiperlink - Doğru olmayan URL eşleşmesi" + +#: taiga/base/api/relations.py:372 +msgid "Invalid hyperlink due to configuration error" +msgstr "Yapılandırma hatasından dolayı geçersiz hiperlink" + +#: taiga/base/api/relations.py:373 +msgid "Invalid hyperlink - object does not exist." +msgstr "Geçersiz hiperlink - nesne mevcut değil." + +#: taiga/base/api/relations.py:374 +#, python-format +msgid "Incorrect type. Expected url string, received %s." +msgstr "Hatalı tip. Beklenen url dizges, alınan %s." + +#: taiga/base/api/serializers.py:320 +msgid "Invalid data" +msgstr "Geçersiz veri" + +#: taiga/base/api/serializers.py:412 +msgid "No input provided" +msgstr "Girdi sağlanmadı" + +#: taiga/base/api/serializers.py:572 +msgid "Cannot create a new item, only existing items may be updated." +msgstr "Yeni bir madde oluşturlamıyor, sadece var olanlar güncellenebilir." + +#: taiga/base/api/serializers.py:583 +msgid "Expected a list of items." +msgstr "Bir madde listesi bekleniyor." + +#: taiga/base/api/views.py:124 +msgid "Not found" +msgstr "Bulunamadı" + +#: taiga/base/api/views.py:127 +msgid "Permission denied" +msgstr "İzin verilmedi" + +#: taiga/base/api/views.py:475 +msgid "Server application error" +msgstr "Sunucu uygulaması hatası" + +#: taiga/base/connectors/exceptions.py:25 +msgid "Connection error." +msgstr "Bağlantı hatası." + +#: taiga/base/exceptions.py:77 +msgid "Malformed request." +msgstr "Bozulmuş talep." + +#: taiga/base/exceptions.py:82 +msgid "Incorrect authentication credentials." +msgstr "Hatalı oturum açma bilgileri." + +#: taiga/base/exceptions.py:87 +msgid "Authentication credentials were not provided." +msgstr "Oturum açma bilgileri girilmedi." + +#: taiga/base/exceptions.py:92 +msgid "You do not have permission to perform this action." +msgstr "Bu eylemi gerçekleştirebilmek için gerekli izne sahip değilsiniz." + +#: taiga/base/exceptions.py:97 +#, python-format +msgid "Method '%s' not allowed." +msgstr "'%s' yöntemine izin verilmiyor." + +#: taiga/base/exceptions.py:105 +msgid "Could not satisfy the request's Accept header" +msgstr "" + +#: taiga/base/exceptions.py:114 +#, python-format +msgid "Unsupported media type '%s' in request." +msgstr "'%s' talebinde desteklenmeyen ortam tipi mevcut" + +#: taiga/base/exceptions.py:122 +msgid "Request was throttled." +msgstr "" + +#: taiga/base/exceptions.py:123 +#, python-format +msgid "Expected available in %d second%s." +msgstr "" + +#: taiga/base/exceptions.py:137 +msgid "Unexpected error" +msgstr "Belirlenmeyen hata" + +#: taiga/base/exceptions.py:149 +msgid "Not found." +msgstr "Bulunamadı." + +#: taiga/base/exceptions.py:154 +msgid "Method not supported for this endpoint." +msgstr "" + +#: taiga/base/exceptions.py:162 taiga/base/exceptions.py:170 +msgid "Wrong arguments." +msgstr "Hatalı parametreler." + +#: taiga/base/exceptions.py:174 +msgid "Data validation error" +msgstr "Veri doğrulama hatası" + +#: taiga/base/exceptions.py:186 +msgid "Integrity Error for wrong or invalid arguments" +msgstr "Hatalı ya da geçersiz parametreler için Bütünlük Hatası " + +#: taiga/base/exceptions.py:193 +msgid "Precondition error" +msgstr "Ön şart hatası" + +#: taiga/base/filters.py:78 +msgid "Error in filter params types." +msgstr "Parametre tipleri filtresinde hata." + +#: taiga/base/filters.py:132 taiga/base/filters.py:231 +#: taiga/projects/filters.py:43 +msgid "'project' must be an integer value." +msgstr "'project' değeri numerik olmalı." + +#: taiga/base/tags.py:26 +msgid "tags" +msgstr "etiketler" + +#: taiga/base/templates/emails/base-body-html.jinja:6 +msgid "Taiga" +msgstr "Taiga" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Follow us on Twitter" +msgstr "Twitter da bizi takip edin" + +#: taiga/base/templates/emails/base-body-html.jinja:406 +#: taiga/base/templates/emails/hero-body-html.jinja:380 +#: taiga/base/templates/emails/updates-body-html.jinja:442 +msgid "Twitter" +msgstr "Twitter" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "Get the code on GitHub" +msgstr "GitHub dan kodu elde edin" + +#: taiga/base/templates/emails/base-body-html.jinja:407 +#: taiga/base/templates/emails/hero-body-html.jinja:381 +#: taiga/base/templates/emails/updates-body-html.jinja:443 +msgid "GitHub" +msgstr "GitHub" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Visit our website" +msgstr "Web sayfamızı ziyaret edin" + +#: taiga/base/templates/emails/base-body-html.jinja:408 +#: taiga/base/templates/emails/hero-body-html.jinja:382 +#: taiga/base/templates/emails/updates-body-html.jinja:444 +msgid "Taiga.io" +msgstr "Taiga.io" + +#: taiga/base/templates/emails/base-body-html.jinja:423 +#: taiga/base/templates/emails/hero-body-html.jinja:397 +#: taiga/base/templates/emails/updates-body-html.jinja:459 +#, python-format +msgid "" +"\n" +" Taiga Support:\n" +" %(support_url)s\n" +"
\n" +" Contact us:\n" +" \n" +" %(support_email)s\n" +" \n" +"
\n" +" Mailing list:\n" +" \n" +" %(mailing_list_url)s\n" +" \n" +" " +msgstr "" +"\n" +"Taiga Destek:\n" +"%(support_url)s\n" +"
\n" +"Bize ulaşın:\n" +"\n" +"%(support_email)s\n" +"\n" +"
\n" +"E-posta listesi:\n" +"\n" +"%(mailing_list_url)s\n" +"" + +#: taiga/base/templates/emails/hero-body-html.jinja:6 +msgid "You have been Taigatized" +msgstr "Taigalandınız" + +#: taiga/base/templates/emails/hero-body-html.jinja:359 +msgid "" +"\n" +"

You have been Taigatized!" +"

\n" +"

Welcome to Taiga, an Open " +"Source, Agile Project Management Tool

\n" +" " +msgstr "" +"\n" +"

Taigalaştırıldınız!

\n" +"

Taiga'ya Hoş Geldiniz: Açık Kaynak, Çevik Proje Yönetim Aygıtı

" + +#: taiga/base/templates/emails/updates-body-html.jinja:6 +msgid "[Taiga] Updates" +msgstr "[Taiga] Güncellemeler" + +#: taiga/base/templates/emails/updates-body-html.jinja:417 +msgid "Updates" +msgstr "Güncellemeler" + +#: taiga/base/templates/emails/updates-body-html.jinja:423 +#, python-format +msgid "" +"\n" +"

comment:" +"

\n" +"

" +"%(comment)s

\n" +" " +msgstr "" +"\n" +"

yorum:

\n" +"

%(comment)s

" + +#: taiga/base/templates/emails/updates-body-text.jinja:6 +#, python-format +msgid "" +"\n" +" Comment: %(comment)s\n" +" " +msgstr "" +"\n" +"Yorumlar: %(comment)s" + +#: taiga/export_import/api.py:105 +msgid "We needed at least one role" +msgstr "En azından bir role ihtiyacımız var" + +#: taiga/export_import/api.py:199 +msgid "Needed dump file" +msgstr "İhtiyaç duyulan döküm dosyası" + +#: taiga/export_import/api.py:206 +msgid "Invalid dump format" +msgstr "Geçersiz döküm biçemi" + +#: taiga/export_import/dump_service.py:97 +msgid "error importing project data" +msgstr "İçeri aktarılan proje verisinde hata" + +#: taiga/export_import/dump_service.py:110 +msgid "error importing lists of project attributes" +msgstr "proje öznitelikleri listesi içeriye aktarılırken hata oluştu" + +#: taiga/export_import/dump_service.py:115 +msgid "error importing default project attributes values" +msgstr "varsayılan proje öznitelikleri değerlerinin içeriye aktarımında hata" + +#: taiga/export_import/dump_service.py:125 +msgid "error importing custom attributes" +msgstr "özel öznitelikler içeri aktarılırken hata" + +#: taiga/export_import/dump_service.py:130 +msgid "error importing roles" +msgstr "İçeri aktarılan rollerde hata" + +#: taiga/export_import/dump_service.py:145 +msgid "error importing memberships" +msgstr "İçeri aktarılan üyeliklerde hata" + +#: taiga/export_import/dump_service.py:150 +msgid "error importing sprints" +msgstr "İçeri aktarılan sprintlerde hata" + +#: taiga/export_import/dump_service.py:155 +msgid "error importing wiki pages" +msgstr "İçeri aktarılan wiki sayfalarında hata" + +#: taiga/export_import/dump_service.py:160 +msgid "error importing wiki links" +msgstr "İçeri aktarılan wiki bağlantılarında hata" + +#: taiga/export_import/dump_service.py:165 +msgid "error importing issues" +msgstr "İçeri aktarılan taleplerde hata" + +#: taiga/export_import/dump_service.py:170 +msgid "error importing user stories" +msgstr "İçeri aktarılan kullanıcı hikayelerinde hata" + +#: taiga/export_import/dump_service.py:175 +msgid "error importing tasks" +msgstr "İçeri aktarılan görevlerde hata" + +#: taiga/export_import/dump_service.py:180 +msgid "error importing tags" +msgstr "İçeri aktarılan etiketlerde hata" + +#: taiga/export_import/dump_service.py:184 +msgid "error importing timelines" +msgstr "zaman çizelgesi içeri aktarılırken hata" + +#: taiga/export_import/serializers.py:178 +msgid "{}=\"{}\" not found in this project" +msgstr "{}=\"{}\" bu projede bulunamadı" + +#: taiga/export_import/serializers.py:443 +#: taiga/projects/custom_attributes/serializers.py:104 +msgid "Invalid content. It must be {\"key\": \"value\",...}" +msgstr "Geçersiz içerik. {\"key\": \"value\",...} şeklinde olması zorunlu" + +#: taiga/export_import/serializers.py:458 +#: taiga/projects/custom_attributes/serializers.py:119 +msgid "It contain invalid custom fields." +msgstr "Geçersiz özel alanlar içeriyor." + +#: taiga/export_import/serializers.py:528 +#: taiga/projects/milestones/serializers.py:57 taiga/projects/serializers.py:70 +#: taiga/projects/serializers.py:95 taiga/projects/serializers.py:125 +#: taiga/projects/serializers.py:168 +msgid "Name duplicated for the project" +msgstr "Aynı isimde proje bulunmakta" + +#: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 +msgid "Error generating project dump" +msgstr "Proje dökümü oluşturulurken hata" + +#: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 +msgid "Error loading project dump" +msgstr "Proje dökümü yükleniyorken hata" + +#: taiga/export_import/templates/emails/dump_project-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump generated

\n" +"

Hello %(user)s,

\n" +"

Your dump from project %(project)s has been correctly generated.\n" +"

You can download it here:

\n" +" Download the dump file\n" +"

This file will be deleted on %(deletion_date)s.

\n" +"

The Taiga Team

\n" +" " +msgstr "" +"\n" +"

Proje dökümü oluşturuldu

\n" +"

Merhaba %(user)s,

\n" +"

İstediğiniz döküm %(project)s projesinden düzgün bir şekilde oluşturuldu." +"

\n" +"

Onu buradan indirebilirsiniz:

\n" +"Döküm " +"dosyasını indir\n" +"

Bu dosya %(deletion_date)s tarihinde silinecek.

\n" +"

Taiga Takımı

" + +#: taiga/export_import/templates/emails/dump_project-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your dump from project %(project)s has been correctly generated. You can " +"download it here:\n" +"\n" +"%(url)s\n" +"\n" +"This file will be deleted on %(deletion_date)s.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Merhaba %(user)s,\n" +"\n" +" %(project)s projesinden istediğiniz döküm düzgün bir şekilde oluşturuldu. " +"Buradan indirebilirsiniz:\n" +"\n" +"%(url)s\n" +"\n" +"Bu dosya %(deletion_date)s tarihinde silinecek.\n" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/export_import/templates/emails/dump_project-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been generated" +msgstr "[%(project)s] Projenizin dökümü oluşturuldu" + +#: taiga/export_import/templates/emails/export_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project %(project)s has not been exported correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" +"\n" +"

%(error_message)s

\n" +"

Merhaba %(user)s,

\n" +"

%(project)s adlı projeniz düzgün bir şekilde dışarı aktarılamadı.

\n" +"

Taiga sistem yöneticileri bilgilendirildi.
Lütfen, yeniden deneyin " +"ya da linkte belirtilen destek takımıyla iletişime geçin\n" +"%(support_email)s

\n" +"

Taiga Takımı

" + +#: taiga/export_import/templates/emails/export_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"Your project %(project)s has not been exported correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Merhaba %(user)s,\n" +"\n" +"%(error_message)s\n" +"%(project)s adlı projenin düzgün bir şekilde dışarı aktarılamadı.\n" +"\n" +"Taiga sistem yöneticileri bilgilendirildi.\n" +"\n" +"Lütfen, yeniden deneyin ya da %(support_email)s linkinde belirtilen destek " +"takımıyla iletişime geçin.\n" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/export_import/templates/emails/export_error-subject.jinja:1 +#, python-format +msgid "[%(project)s] %(error_subject)s" +msgstr "[%(project)s] %(error_subject)s" + +#: taiga/export_import/templates/emails/import_error-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

%(error_message)s

\n" +"

Hello %(user)s,

\n" +"

Your project has not been importer correctly.

\n" +"

The Taiga system administrators have been informed.
Please, try " +"it again or contact with the support team at\n" +" %(support_email)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" +"\n" +"

%(error_message)s

\n" +"

Merhaba %(user)s,

\n" +"

Projeniz düzgün bir şekilde içe aktarıldı.

\n" +"

Taiga sistem yöneticileri bilgilendirildi.
Lütfen, yeniden deneyin " +"destek tamıyla iletişime geçin\n" +"%(support_email)s

\n" +"

The Taiga Team

" + +#: taiga/export_import/templates/emails/import_error-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Your project has not been importer correctly.\n" +"\n" +"The Taiga system administrators have been informed.\n" +"\n" +"Please, try it again or contact with the support team at %(support_email)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Merhaba %(user)s,\n" +"\n" +"%(error_message)s\n" +"\n" +"Projeniz düzgün bir şekilde içe aktarılamadı.\n" +"\n" +"Taiga sistem yöneticileri bilgilendirildi.\n" +"\n" +"Lütfen, yeniden deneyin ya da %(support_email)s da belirtilen destek " +"takımıyla iletişime geçin \n" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/export_import/templates/emails/import_error-subject.jinja:1 +#, python-format +msgid "[Taiga] %(error_subject)s" +msgstr "[Taiga] %(error_subject)s" + +#: taiga/export_import/templates/emails/load_dump-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Project dump imported

\n" +"

Hello %(user)s,

\n" +"

Your project dump has been correctly imported.

\n" +" Go to %(project)s\n" +"

The Taiga Team

\n" +" " +msgstr "" +"\n" +"

Proje dökümü içe aktarıldı

\n" +"

Merhaba %(user)s,

\n" +"

Proje dökümünüz düzgün bir şekilde içe aktarıldı.

\n" +" " +"%(project)s projesine git\n" +"

Taiga Takımı

" + +#: taiga/export_import/templates/emails/load_dump-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(user)s,\n" +"\n" +"Your project dump has been correctly imported.\n" +"\n" +"You can see the project %(project)s here:\n" +"\n" +"%(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Merhaba %(user)s,\n" +"\n" +"Projenizin dökümü düzgün bir şekilde içe aktarıldı.\n" +"\n" +"%(project)s projesine buradan ulaşabilirsiniz:\n" +"\n" +"%(url)s\n" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/export_import/templates/emails/load_dump-subject.jinja:1 +#, python-format +msgid "[%(project)s] Your project dump has been imported" +msgstr "[%(project)s] Projenizin döküm dosyası içe aktarıldı" + +#: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 +#: taiga/external_apps/api.py:74 +msgid "Authentication required" +msgstr "Kimlik doğrulama gerekli" + +#: taiga/external_apps/models.py:34 +#: taiga/projects/custom_attributes/models.py:35 +#: taiga/projects/milestones/models.py:37 taiga/projects/models.py:163 +#: taiga/projects/models.py:477 taiga/projects/models.py:516 +#: taiga/projects/models.py:541 taiga/projects/models.py:578 +#: taiga/projects/models.py:601 taiga/projects/models.py:624 +#: taiga/projects/models.py:659 taiga/projects/models.py:682 +#: taiga/users/models.py:251 taiga/webhooks/models.py:28 +msgid "name" +msgstr "isim" + +#: taiga/external_apps/models.py:36 +msgid "Icon url" +msgstr "İkon url" + +#: taiga/external_apps/models.py:37 +msgid "web" +msgstr "web" + +#: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 +#: taiga/projects/custom_attributes/models.py:36 +#: taiga/projects/history/templatetags/functions.py:24 +#: taiga/projects/issues/models.py:62 taiga/projects/models.py:167 +#: taiga/projects/models.py:686 taiga/projects/tasks/models.py:61 +#: taiga/projects/userstories/models.py:92 +msgid "description" +msgstr "tanı" + +#: taiga/external_apps/models.py:40 +msgid "Next url" +msgstr "Sonraki url" + +#: taiga/external_apps/models.py:42 +msgid "secret key for ciphering the application tokens" +msgstr "" + +#: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 +#: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 +msgid "user" +msgstr "kullanıcı" + +#: taiga/external_apps/models.py:60 +msgid "application" +msgstr "uygulama" + +#: taiga/feedback/models.py:24 taiga/users/models.py:117 +msgid "full name" +msgstr "tam ad" + +#: taiga/feedback/models.py:26 taiga/users/models.py:112 +msgid "email address" +msgstr "e-posta adresi" + +#: taiga/feedback/models.py:28 +msgid "comment" +msgstr "yorum" + +#: taiga/feedback/models.py:30 taiga/projects/attachments/models.py:62 +#: taiga/projects/custom_attributes/models.py:45 +#: taiga/projects/issues/models.py:54 taiga/projects/likes/models.py:32 +#: taiga/projects/milestones/models.py:48 taiga/projects/models.py:174 +#: taiga/projects/models.py:688 taiga/projects/notifications/models.py:87 +#: taiga/projects/tasks/models.py:47 taiga/projects/userstories/models.py:84 +#: taiga/projects/votes/models.py:53 taiga/projects/wiki/models.py:40 +#: taiga/userstorage/models.py:28 +msgid "created date" +msgstr "oluşturma tarihi" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Feedback

\n" +"

Taiga has received feedback from %(full_name)s <%(email)s>

\n" +" " +msgstr "" +"\n" +"

Geri Bildirim

\n" +"

Taiga %(full_name)s <%(email)s> kullanıcısından geri bildirim aldı

" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:9 +#, python-format +msgid "" +"\n" +"

Comment

\n" +"

%(comment)s

\n" +" " +msgstr "" +"\n" +"

Yorum

\n" +"

%(comment)s

" + +#: taiga/feedback/templates/emails/feedback_notification-body-html.jinja:18 +#: taiga/users/admin.py:52 +msgid "Extra info" +msgstr "Ekstra bilgi" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:1 +#, python-format +msgid "" +"---------\n" +"- From: %(full_name)s <%(email)s>\n" +"---------\n" +"- Comment:\n" +"%(comment)s\n" +"---------" +msgstr "" +"---------\n" +"- Kimden: %(full_name)s <%(email)s>\n" +"---------\n" +"- Yorum:\n" +"%(comment)s\n" +"---------" + +#: taiga/feedback/templates/emails/feedback_notification-body-text.jinja:8 +msgid "- Extra info:" +msgstr "- Ekstra bilgi:" + +#: taiga/feedback/templates/emails/feedback_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Feedback from %(full_name)s <%(email)s>\n" +msgstr "" +"\n" +"[Taiga] %(full_name)s <%(email)s> den geri bildirim\n" + +#: taiga/hooks/api.py:53 +msgid "The payload is not a valid json" +msgstr "" + +#: taiga/hooks/api.py:62 taiga/projects/issues/api.py:142 +#: taiga/projects/tasks/api.py:85 taiga/projects/userstories/api.py:110 +msgid "The project doesn't exist" +msgstr "Proje mevcut değil." + +#: taiga/hooks/api.py:65 +msgid "Bad signature" +msgstr "Kötü imza" + +#: taiga/hooks/bitbucket/event_hooks.py:85 taiga/hooks/github/event_hooks.py:76 +#: taiga/hooks/gitlab/event_hooks.py:74 +msgid "The referenced element doesn't exist" +msgstr "Referans gösterilmiş varlık mevcut değil" + +#: taiga/hooks/bitbucket/event_hooks.py:92 taiga/hooks/github/event_hooks.py:83 +#: taiga/hooks/gitlab/event_hooks.py:81 +msgid "The status doesn't exist" +msgstr "Durum mevcut değil" + +#: taiga/hooks/bitbucket/event_hooks.py:98 +msgid "Status changed from BitBucket commit" +msgstr "Bitbucket commiti ile durum değişti" + +#: taiga/hooks/bitbucket/event_hooks.py:127 +#: taiga/hooks/github/event_hooks.py:142 taiga/hooks/gitlab/event_hooks.py:114 +msgid "Invalid issue information" +msgstr "Geçersiz talep bilgisi" + +#: taiga/hooks/bitbucket/event_hooks.py:143 +#, python-brace-format +msgid "" +"Issue created by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " +"@{bitbucket_user_name}'s BitBucket profile\") from BitBucket.\n" +"Origin BitBucket issue: [bb#{number} - {subject}]({bitbucket_url} \"Go to " +"'bb#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:154 +msgid "Issue created from BitBucket." +msgstr "Bitbucket ten oluşturulan talep" + +#: taiga/hooks/bitbucket/event_hooks.py:178 +#: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 +#: taiga/hooks/gitlab/event_hooks.py:153 +msgid "Invalid issue comment information" +msgstr "Geçersiz talep yorum bilgisi" + +#: taiga/hooks/bitbucket/event_hooks.py:186 +#, python-brace-format +msgid "" +"Comment by [@{bitbucket_user_name}]({bitbucket_user_url} \"See " +"@{bitbucket_user_name}'s BitBucket profile\") from BitBucket.\n" +"Origin BitBucket issue: [bb#{number} - {subject}]({bitbucket_url} \"Go to " +"'bb#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/bitbucket/event_hooks.py:197 +#, python-brace-format +msgid "" +"Comment From BitBucket:\n" +"\n" +"{message}" +msgstr "" +"Bitbucket yorum:\n" +"\n" +"{message}" + +#: taiga/hooks/github/event_hooks.py:97 +#, python-brace-format +msgid "" +"Status changed by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub commit [{commit_id}]" +"({commit_url} \"See commit '{commit_id} - {commit_message}'\")." +msgstr "" + +#: taiga/hooks/github/event_hooks.py:108 +msgid "Status changed from GitHub commit." +msgstr "Githup commit i ile durum değişt." + +#: taiga/hooks/github/event_hooks.py:158 +#, python-brace-format +msgid "" +"Issue created by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\"):\n" +"\n" +"{description}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:169 +msgid "Issue created from GitHub." +msgstr "GitHub dan oluşturulan talep" + +#: taiga/hooks/github/event_hooks.py:201 +#, python-brace-format +msgid "" +"Comment by [@{github_user_name}]({github_user_url} \"See " +"@{github_user_name}'s GitHub profile\") from GitHub.\n" +"Origin GitHub issue: [gh#{number} - {subject}]({github_url} \"Go to " +"'gh#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/github/event_hooks.py:212 +#, python-brace-format +msgid "" +"Comment From GitHub:\n" +"\n" +"{message}" +msgstr "" +"GitHub dan gelen Yorum:\n" +"\n" +"{message}" + +#: taiga/hooks/gitlab/event_hooks.py:87 +msgid "Status changed from GitLab commit" +msgstr "" + +#: taiga/hooks/gitlab/event_hooks.py:129 +msgid "Created from GitLab" +msgstr "GitLab dan oluşturuldu" + +#: taiga/hooks/gitlab/event_hooks.py:161 +#, python-brace-format +msgid "" +"Comment by [@{gitlab_user_name}]({gitlab_user_url} \"See " +"@{gitlab_user_name}'s GitLab profile\") from GitLab.\n" +"Origin GitLab issue: [gl#{number} - {subject}]({gitlab_url} \"Go to " +"'gl#{number} - {subject}'\")\n" +"\n" +"{message}" +msgstr "" + +#: taiga/hooks/gitlab/event_hooks.py:172 +#, python-brace-format +msgid "" +"Comment From GitLab:\n" +"\n" +"{message}" +msgstr "" +"Gitlabdan gelen yorum:\n" +"\n" +"{message}" + +#: taiga/permissions/permissions.py:22 taiga/permissions/permissions.py:32 +#: taiga/permissions/permissions.py:52 +msgid "View project" +msgstr "Projeyi gör" + +#: taiga/permissions/permissions.py:23 taiga/permissions/permissions.py:33 +#: taiga/permissions/permissions.py:54 +msgid "View milestones" +msgstr "Aşamaları gör" + +#: taiga/permissions/permissions.py:24 taiga/permissions/permissions.py:34 +msgid "View user stories" +msgstr "Kullanıcı hikayelerini gör" + +#: taiga/permissions/permissions.py:25 taiga/permissions/permissions.py:36 +#: taiga/permissions/permissions.py:64 +msgid "View tasks" +msgstr "Görevleri gör" + +#: taiga/permissions/permissions.py:26 taiga/permissions/permissions.py:35 +#: taiga/permissions/permissions.py:69 +msgid "View issues" +msgstr "Talepleri gör" + +#: taiga/permissions/permissions.py:27 taiga/permissions/permissions.py:37 +#: taiga/permissions/permissions.py:74 +msgid "View wiki pages" +msgstr "Wiki sayfalarını gör" + +#: taiga/permissions/permissions.py:28 taiga/permissions/permissions.py:38 +#: taiga/permissions/permissions.py:79 +msgid "View wiki links" +msgstr "Wiki bağlantılarını gör" + +#: taiga/permissions/permissions.py:39 +msgid "Request membership" +msgstr "Üyelik talep et" + +#: taiga/permissions/permissions.py:40 +msgid "Add user story to project" +msgstr "Projeye kullanıcı hikayesi ekle" + +#: taiga/permissions/permissions.py:41 +msgid "Add comments to user stories" +msgstr "Kullanıcı hikayelerine yorumlar ekle" + +#: taiga/permissions/permissions.py:42 +msgid "Add comments to tasks" +msgstr "Görevlere yorumlar ekle" + +#: taiga/permissions/permissions.py:43 +msgid "Add issues" +msgstr "Talepler ekle" + +#: taiga/permissions/permissions.py:44 +msgid "Add comments to issues" +msgstr "Taleplere yorumlar ekle" + +#: taiga/permissions/permissions.py:45 taiga/permissions/permissions.py:75 +msgid "Add wiki page" +msgstr "Wiki sayfası ekle" + +#: taiga/permissions/permissions.py:46 taiga/permissions/permissions.py:76 +msgid "Modify wiki page" +msgstr "Wiki sayfası düzenle" + +#: taiga/permissions/permissions.py:47 taiga/permissions/permissions.py:80 +msgid "Add wiki link" +msgstr "Wiki bağlantısı ekle" + +#: taiga/permissions/permissions.py:48 taiga/permissions/permissions.py:81 +msgid "Modify wiki link" +msgstr "Wiki bağlantısı düzenle" + +#: taiga/permissions/permissions.py:55 +msgid "Add milestone" +msgstr "Aşama ekle" + +#: taiga/permissions/permissions.py:56 +msgid "Modify milestone" +msgstr "Aşama düzenle" + +#: taiga/permissions/permissions.py:57 +msgid "Delete milestone" +msgstr "Aşama sil" + +#: taiga/permissions/permissions.py:59 +msgid "View user story" +msgstr "Kullanıcı hikayesini gör" + +#: taiga/permissions/permissions.py:60 +msgid "Add user story" +msgstr "Kullanıcı hikayesi ekle" + +#: taiga/permissions/permissions.py:61 +msgid "Modify user story" +msgstr "Kullanıcı hikayesi düzenle" + +#: taiga/permissions/permissions.py:62 +msgid "Delete user story" +msgstr "Kullanıcı hikayesi sil" + +#: taiga/permissions/permissions.py:65 +msgid "Add task" +msgstr "Görev ekle" + +#: taiga/permissions/permissions.py:66 +msgid "Modify task" +msgstr "Görev düzenle" + +#: taiga/permissions/permissions.py:67 +msgid "Delete task" +msgstr "Görev sil" + +#: taiga/permissions/permissions.py:70 +msgid "Add issue" +msgstr "Talep ekle" + +#: taiga/permissions/permissions.py:71 +msgid "Modify issue" +msgstr "Talep düzenle" + +#: taiga/permissions/permissions.py:72 +msgid "Delete issue" +msgstr "Talep sil" + +#: taiga/permissions/permissions.py:77 +msgid "Delete wiki page" +msgstr "Wiki sayfası sil" + +#: taiga/permissions/permissions.py:82 +msgid "Delete wiki link" +msgstr "Wiki bağlantısı sil" + +#: taiga/permissions/permissions.py:86 +msgid "Modify project" +msgstr "Proje düzenle" + +#: taiga/permissions/permissions.py:87 +msgid "Add member" +msgstr "Üye ekle" + +#: taiga/permissions/permissions.py:88 +msgid "Remove member" +msgstr "Üye sil" + +#: taiga/permissions/permissions.py:89 +msgid "Delete project" +msgstr "Proje sil" + +#: taiga/permissions/permissions.py:90 +msgid "Admin project values" +msgstr "Admin proje değerleri" + +#: taiga/permissions/permissions.py:91 +msgid "Admin roles" +msgstr "Yönetici rolleri" + +#: taiga/projects/api.py:154 taiga/users/api.py:219 +msgid "Incomplete arguments" +msgstr "Eksik parametreq" + +#: taiga/projects/api.py:158 taiga/users/api.py:224 +msgid "Invalid image format" +msgstr "Geçersiz resim biçemi" + +#: taiga/projects/api.py:286 +msgid "Not valid template name" +msgstr "Geçersiz şablon adı" + +#: taiga/projects/api.py:289 +msgid "Not valid template description" +msgstr "Geçersiz şablon tanımı" + +#: taiga/projects/api.py:547 taiga/projects/serializers.py:261 +msgid "At least one of the user must be an active admin" +msgstr "Kullanıcılardan en az biri aktif yönetici olmalıdır" + +#: taiga/projects/api.py:577 +msgid "You don't have permisions to see that." +msgstr "Görebilmek için yetkiniz yok." + +#: taiga/projects/attachments/api.py:48 +msgid "Partial updates are not supported" +msgstr "Kısmi güncellemeler desteklenmiyor" + +#: taiga/projects/attachments/api.py:63 +msgid "Project ID not matches between object and project" +msgstr "Proje ve nesne arasında Proje ID uyuşmazlığı mevcut" + +#: taiga/projects/attachments/models.py:53 taiga/projects/issues/models.py:39 +#: taiga/projects/milestones/models.py:42 taiga/projects/models.py:179 +#: taiga/projects/notifications/models.py:60 taiga/projects/tasks/models.py:38 +#: taiga/projects/userstories/models.py:66 taiga/projects/wiki/models.py:36 +#: taiga/userstorage/models.py:26 +msgid "owner" +msgstr "sahip" + +#: taiga/projects/attachments/models.py:55 +#: taiga/projects/custom_attributes/models.py:42 +#: taiga/projects/issues/models.py:52 taiga/projects/milestones/models.py:44 +#: taiga/projects/models.py:465 taiga/projects/models.py:491 +#: taiga/projects/models.py:522 taiga/projects/models.py:551 +#: taiga/projects/models.py:584 taiga/projects/models.py:607 +#: taiga/projects/models.py:634 taiga/projects/models.py:665 +#: taiga/projects/notifications/models.py:72 +#: taiga/projects/notifications/models.py:89 taiga/projects/tasks/models.py:42 +#: taiga/projects/userstories/models.py:64 taiga/projects/wiki/models.py:30 +#: taiga/projects/wiki/models.py:68 taiga/users/models.py:264 +msgid "project" +msgstr "proje" + +#: taiga/projects/attachments/models.py:57 +msgid "content type" +msgstr "içerik tipi" + +#: taiga/projects/attachments/models.py:59 +msgid "object id" +msgstr "nesne id" + +#: taiga/projects/attachments/models.py:65 +#: taiga/projects/custom_attributes/models.py:47 +#: taiga/projects/issues/models.py:57 taiga/projects/milestones/models.py:51 +#: taiga/projects/models.py:177 taiga/projects/models.py:691 +#: taiga/projects/tasks/models.py:50 taiga/projects/userstories/models.py:87 +#: taiga/projects/wiki/models.py:43 taiga/userstorage/models.py:30 +msgid "modified date" +msgstr "düzenleme tarihi" + +#: taiga/projects/attachments/models.py:70 +msgid "attached file" +msgstr "eklenmiş dosya" + +#: taiga/projects/attachments/models.py:72 +msgid "sha1" +msgstr "sha1" + +#: taiga/projects/attachments/models.py:74 +msgid "is deprecated" +msgstr "" + +#: taiga/projects/attachments/models.py:76 +#: taiga/projects/custom_attributes/models.py:40 +#: taiga/projects/milestones/models.py:57 taiga/projects/models.py:481 +#: taiga/projects/models.py:518 taiga/projects/models.py:545 +#: taiga/projects/models.py:580 taiga/projects/models.py:603 +#: taiga/projects/models.py:628 taiga/projects/models.py:661 +#: taiga/projects/wiki/models.py:73 taiga/users/models.py:259 +msgid "order" +msgstr "sıra" + +#: taiga/projects/choices.py:22 +msgid "AppearIn" +msgstr "" + +#: taiga/projects/choices.py:23 +msgid "Jitsi" +msgstr "Jitsi" + +#: taiga/projects/choices.py:24 +msgid "Custom" +msgstr "Özel" + +#: taiga/projects/choices.py:25 +msgid "Talky" +msgstr "Talky" + +#: taiga/projects/custom_attributes/choices.py:26 +msgid "Text" +msgstr "Metin" + +#: taiga/projects/custom_attributes/choices.py:27 +msgid "Multi-Line Text" +msgstr "Çoklu-satır metin" + +#: taiga/projects/custom_attributes/choices.py:28 +msgid "Date" +msgstr "Tarih" + +#: taiga/projects/custom_attributes/models.py:39 +#: taiga/projects/issues/models.py:47 +msgid "type" +msgstr "tip" + +#: taiga/projects/custom_attributes/models.py:88 +msgid "values" +msgstr "değerler" + +#: taiga/projects/custom_attributes/models.py:98 +#: taiga/projects/tasks/models.py:34 taiga/projects/userstories/models.py:36 +msgid "user story" +msgstr "kullanıcı hikayesi" + +#: taiga/projects/custom_attributes/models.py:113 +msgid "task" +msgstr "görev" + +#: taiga/projects/custom_attributes/models.py:128 +msgid "issue" +msgstr "talep" + +#: taiga/projects/custom_attributes/serializers.py:58 +msgid "Already exists one with the same name." +msgstr "Aynı isimler bir tane daha mevcut." + +#: taiga/projects/history/api.py:71 +msgid "Comment already deleted" +msgstr "Yorum zaten silinmiş" + +#: taiga/projects/history/api.py:90 +msgid "Comment not deleted" +msgstr "Yorum silinmedi" + +#: taiga/projects/history/choices.py:27 +msgid "Change" +msgstr "Değiştir" + +#: taiga/projects/history/choices.py:28 +msgid "Create" +msgstr "Oluştur" + +#: taiga/projects/history/choices.py:29 +msgid "Delete" +msgstr "Sil" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:23 +#, python-format +msgid "%(role)s role points" +msgstr "%(role)s role puanları" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:26 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:131 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:134 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:157 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:194 +msgid "from" +msgstr "den" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:32 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:142 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:145 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:163 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:180 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:200 +msgid "to" +msgstr "kime" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:44 +msgid "Added new attachment" +msgstr "Yeni ek ekle" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:62 +msgid "Updated attachment" +msgstr "Güncellenmiş ek" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:68 +msgid "deprecated" +msgstr "" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:70 +msgid "not deprecated" +msgstr "" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:86 +msgid "Deleted attachment" +msgstr "Silinmiş ek" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:105 +msgid "added" +msgstr "eklendi" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:110 +msgid "removed" +msgstr "silindi" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:135 +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:146 +#: taiga/projects/services/stats.py:56 taiga/projects/services/stats.py:57 +msgid "Unassigned" +msgstr "Atanmamış" + +#: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:212 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:87 +msgid "-deleted-" +msgstr "-silinmiş-" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:21 +msgid "to:" +msgstr "kime:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:21 +msgid "from:" +msgstr "kimden:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:27 +msgid "Added" +msgstr "Eklenmiş" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:34 +msgid "Changed" +msgstr "Değiştirilmiş" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:41 +msgid "Deleted" +msgstr "Silinmiş" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:55 +msgid "added:" +msgstr "eklenmiş:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:58 +msgid "removed:" +msgstr "silinmiş:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:63 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:80 +msgid "From:" +msgstr "Kimden:" + +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:64 +#: taiga/projects/history/templates/emails/includes/fields_diff-text.jinja:81 +msgid "To:" +msgstr "Kime:" + +#: taiga/projects/history/templatetags/functions.py:25 +#: taiga/projects/wiki/models.py:34 +msgid "content" +msgstr "içerik" + +#: taiga/projects/history/templatetags/functions.py:26 +#: taiga/projects/mixins/blocked.py:32 +msgid "blocked note" +msgstr "engellenmiş not" + +#: taiga/projects/history/templatetags/functions.py:27 +msgid "sprint" +msgstr "sprint" + +#: taiga/projects/issues/api.py:163 +msgid "You don't have permissions to set this sprint to this issue." +msgstr "Bu talep için bu sprinti ayarlamaya yetkiniz yok." + +#: taiga/projects/issues/api.py:167 +msgid "You don't have permissions to set this status to this issue." +msgstr "Bu talep için bu durumu ayarlamaya yetkiniz yok." + +#: taiga/projects/issues/api.py:171 +msgid "You don't have permissions to set this severity to this issue." +msgstr "Bu talep için bu kritiklik derecesini ayarlamaya yetkiniz yok." + +#: taiga/projects/issues/api.py:175 +msgid "You don't have permissions to set this priority to this issue." +msgstr "Bu talep için bu öncelik durumunu ayarlamaya yetkiniz yok." + +#: taiga/projects/issues/api.py:179 +msgid "You don't have permissions to set this type to this issue." +msgstr "Bu talep için bu tipi ayarlamaya yetkiniz yok." + +#: taiga/projects/issues/models.py:37 taiga/projects/tasks/models.py:36 +#: taiga/projects/userstories/models.py:59 +msgid "ref" +msgstr "ref" + +#: taiga/projects/issues/models.py:41 taiga/projects/tasks/models.py:40 +#: taiga/projects/userstories/models.py:69 +msgid "status" +msgstr "durum" + +#: taiga/projects/issues/models.py:43 +msgid "severity" +msgstr "önem derecesi" + +#: taiga/projects/issues/models.py:45 +msgid "priority" +msgstr "öncelik" + +#: taiga/projects/issues/models.py:50 taiga/projects/tasks/models.py:45 +#: taiga/projects/userstories/models.py:62 +msgid "milestone" +msgstr "aşama" + +#: taiga/projects/issues/models.py:59 taiga/projects/tasks/models.py:52 +msgid "finished date" +msgstr "bitirme tarihi" + +#: taiga/projects/issues/models.py:61 taiga/projects/tasks/models.py:54 +#: taiga/projects/userstories/models.py:91 +msgid "subject" +msgstr "konu" + +#: taiga/projects/issues/models.py:65 taiga/projects/tasks/models.py:64 +#: taiga/projects/userstories/models.py:95 +msgid "assigned to" +msgstr "atanmış" + +#: taiga/projects/issues/models.py:67 taiga/projects/tasks/models.py:68 +#: taiga/projects/userstories/models.py:105 +msgid "external reference" +msgstr "dış referans" + +#: taiga/projects/likes/models.py:35 +msgid "Like" +msgstr "Beğen" + +#: taiga/projects/likes/models.py:36 +msgid "Likes" +msgstr "Beğeniler" + +#: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 +#: taiga/projects/models.py:479 taiga/projects/models.py:543 +#: taiga/projects/models.py:626 taiga/projects/models.py:684 +#: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 +msgid "slug" +msgstr "" + +#: taiga/projects/milestones/models.py:45 +msgid "estimated start date" +msgstr "yaklaşık başlama tarihi" + +#: taiga/projects/milestones/models.py:46 +msgid "estimated finish date" +msgstr "yaklaşık bitiş tarihi" + +#: taiga/projects/milestones/models.py:53 taiga/projects/models.py:483 +#: taiga/projects/models.py:547 taiga/projects/models.py:630 +msgid "is closed" +msgstr "kapatılmış" + +#: taiga/projects/milestones/models.py:55 +msgid "disponibility" +msgstr "" + +#: taiga/projects/milestones/models.py:80 +msgid "The estimated start must be previous to the estimated finish." +msgstr "" + +#: taiga/projects/milestones/validators.py:12 +msgid "There's no sprint with that id" +msgstr "Bu id ye sahip sprint yok" + +#: taiga/projects/mixins/blocked.py:30 +msgid "is blocked" +msgstr "engellenmiş" + +#: taiga/projects/mixins/ordering.py:48 +#, python-brace-format +msgid "'{param}' parameter is mandatory" +msgstr "'{param}' parametresi zorunlu" + +#: taiga/projects/mixins/ordering.py:52 +msgid "'project' parameter is mandatory" +msgstr "'proje' parametresi zorunlu" + +#: taiga/projects/models.py:95 +msgid "email" +msgstr "e-posta" + +#: taiga/projects/models.py:97 +msgid "create at" +msgstr "" + +#: taiga/projects/models.py:99 taiga/users/models.py:134 +msgid "token" +msgstr "kupon" + +#: taiga/projects/models.py:105 +msgid "invitation extra text" +msgstr "Davetiye ekstra metni" + +#: taiga/projects/models.py:108 +msgid "user order" +msgstr "kullanıcı sırası" + +#: taiga/projects/models.py:118 +msgid "The user is already member of the project" +msgstr "Kullanıcı zaten projenin üyesi" + +#: taiga/projects/models.py:133 +msgid "default points" +msgstr "varsayılan puanlar" + +#: taiga/projects/models.py:137 +msgid "default US status" +msgstr "varsayılan KH durumu" + +#: taiga/projects/models.py:141 +msgid "default task status" +msgstr "varsayılan görev durumu" + +#: taiga/projects/models.py:144 +msgid "default priority" +msgstr "varsayılan öncelik" + +#: taiga/projects/models.py:147 +msgid "default severity" +msgstr "varsayılan önem derecesi" + +#: taiga/projects/models.py:151 +msgid "default issue status" +msgstr "varsayılan talep durumu" + +#: taiga/projects/models.py:155 +msgid "default issue type" +msgstr "varsayılan talep tipi" + +#: taiga/projects/models.py:171 +msgid "logo" +msgstr "" + +#: taiga/projects/models.py:181 +msgid "members" +msgstr "üyeler" + +#: taiga/projects/models.py:184 +msgid "total of milestones" +msgstr "aşamaların toplamı" + +#: taiga/projects/models.py:185 +msgid "total story points" +msgstr "toplam hikaye puanı" + +#: taiga/projects/models.py:188 taiga/projects/models.py:697 +msgid "active backlog panel" +msgstr "aktif birikmiş iler paneli" + +#: taiga/projects/models.py:190 taiga/projects/models.py:699 +msgid "active kanban panel" +msgstr "aktif kanban paneli" + +#: taiga/projects/models.py:192 taiga/projects/models.py:701 +msgid "active wiki panel" +msgstr "aktif wiki paneli" + +#: taiga/projects/models.py:194 taiga/projects/models.py:703 +msgid "active issues panel" +msgstr "aktif talep paneli" + +#: taiga/projects/models.py:197 taiga/projects/models.py:706 +msgid "videoconference system" +msgstr "video konferans sistemi" + +#: taiga/projects/models.py:199 taiga/projects/models.py:708 +msgid "videoconference extra data" +msgstr "videokonferans ekstra verisi" + +#: taiga/projects/models.py:204 +msgid "creation template" +msgstr "oluşturma şablonu" + +#: taiga/projects/models.py:208 +msgid "anonymous permissions" +msgstr "anonim izinler" + +#: taiga/projects/models.py:212 +msgid "user permissions" +msgstr "kullanıcı izinleri" + +#: taiga/projects/models.py:215 +msgid "is private" +msgstr "gizli" + +#: taiga/projects/models.py:218 +msgid "is featured" +msgstr "" + +#: taiga/projects/models.py:221 +msgid "is looking for people" +msgstr "" + +#: taiga/projects/models.py:223 +msgid "loking for people note" +msgstr "" + +#: taiga/projects/models.py:235 +msgid "tags colors" +msgstr "etiket renkleri" + +#: taiga/projects/models.py:239 taiga/projects/notifications/models.py:64 +msgid "updated date time" +msgstr "yükleme tarih-saati" + +#: taiga/projects/models.py:242 taiga/projects/models.py:254 +#: taiga/projects/votes/models.py:29 +msgid "count" +msgstr "sayı" + +#: taiga/projects/models.py:245 +msgid "fans last week" +msgstr "" + +#: taiga/projects/models.py:248 +msgid "fans last month" +msgstr "" + +#: taiga/projects/models.py:251 +msgid "fans last year" +msgstr "" + +#: taiga/projects/models.py:257 +msgid "activity last week" +msgstr "" + +#: taiga/projects/models.py:260 +msgid "activity last month" +msgstr "" + +#: taiga/projects/models.py:263 +msgid "activity last year" +msgstr "" + +#: taiga/projects/models.py:466 +msgid "modules config" +msgstr "modül ayarları" + +#: taiga/projects/models.py:485 +msgid "is archived" +msgstr "arşivlenmiş" + +#: taiga/projects/models.py:487 taiga/projects/models.py:549 +#: taiga/projects/models.py:582 taiga/projects/models.py:605 +#: taiga/projects/models.py:632 taiga/projects/models.py:663 +#: taiga/users/models.py:119 +msgid "color" +msgstr "renk" + +#: taiga/projects/models.py:489 +msgid "work in progress limit" +msgstr "" + +#: taiga/projects/models.py:520 taiga/userstorage/models.py:32 +msgid "value" +msgstr "değer" + +#: taiga/projects/models.py:694 +msgid "default owner's role" +msgstr "varsayılan sahip rolü" + +#: taiga/projects/models.py:710 +msgid "default options" +msgstr "varsayılan ayarlar" + +#: taiga/projects/models.py:711 +msgid "us statuses" +msgstr "kh durumları" + +#: taiga/projects/models.py:712 taiga/projects/userstories/models.py:42 +#: taiga/projects/userstories/models.py:74 +msgid "points" +msgstr "puanlar" + +#: taiga/projects/models.py:713 +msgid "task statuses" +msgstr "görev durumları" + +#: taiga/projects/models.py:714 +msgid "issue statuses" +msgstr "talep durumları" + +#: taiga/projects/models.py:715 +msgid "issue types" +msgstr "talep tipleri" + +#: taiga/projects/models.py:716 +msgid "priorities" +msgstr "öncelikler" + +#: taiga/projects/models.py:717 +msgid "severities" +msgstr "önem durumları" + +#: taiga/projects/models.py:718 +msgid "roles" +msgstr "roller" + +#: taiga/projects/notifications/choices.py:29 +msgid "Involved" +msgstr "" + +#: taiga/projects/notifications/choices.py:30 +msgid "All" +msgstr "Hepsi" + +#: taiga/projects/notifications/choices.py:31 +msgid "None" +msgstr "Hiçbiri" + +#: taiga/projects/notifications/models.py:62 +msgid "created date time" +msgstr "oluşturma tarih-saati" + +#: taiga/projects/notifications/models.py:66 +msgid "history entries" +msgstr "tarihçe girdileri" + +#: taiga/projects/notifications/models.py:69 +msgid "notify users" +msgstr "kullanıcıları bilgilendir" + +#: taiga/projects/notifications/models.py:91 +#: taiga/projects/notifications/models.py:92 +msgid "Watched" +msgstr "İzlenen" + +#: taiga/projects/notifications/services.py:66 +#: taiga/projects/notifications/services.py:80 +msgid "Notify exists for specified user and project" +msgstr "Belirtilen kullanıcı ve proje için bilgilendirme mevcut" + +#: taiga/projects/notifications/services.py:429 +msgid "Invalid value for notify level" +msgstr "Bildirim düzeyi için geçersiz değer" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue updated

\n" +"

Hello %(user)s,
%(changer)s has updated an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +" " +msgstr "" +"\n" +"

Talep Güncellendi

\n" +"

Merhaba %(user)s,
%(project)s projesindeki bir talebiniz %(changer)s " +"tarafından güncellendi

\n" +"

Talep #%(ref)s %(subject)s

\n" +"Talebi gör" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Issue updated\n" +"Hello %(user)s, %(changer)s has updated an issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +msgstr "" +"\n" +"Talep güncellendi\n" +"Merhaba %(user)s, %(project)s projesindeki bir talep, %(changer)s tarafından " +"güncellendi\n" +"%(url)s linkinden #%(ref)s %(subject)s talebi görebilirsiniz\n" + +#: taiga/projects/notifications/templates/emails/issues/issue-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Güncellenmiş talepler #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New issue created

\n" +"

Hello %(user)s,
%(changer)s has created a new issue on " +"%(project)s

\n" +"

Issue #%(ref)s %(subject)s

\n" +" See issue\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New issue created\n" +"Hello %(user)s, %(changer)s has created a new issue on %(project)s\n" +"See issue #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Oluşturulmuş Talep #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Issue deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an issue on %(project)s\n" +"

Issue #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Issue deleted\n" +"Hello %(user)s, %(changer)s has deleted an issue on %(project)s\n" +"Issue #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/issues/issue-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the issue #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Silinmiş Talep #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint updated

\n" +"

Hello %(user)s,
%(changer)s has updated an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See sprint\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Sprint updated\n" +"Hello %(user)s, %(changer)s has updated a sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the sprint \"%(milestone)s\"\n" +msgstr "" +"\n" +"[%(project)s] Güncellenmiş sprint \"%(milestone)s\"\n" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New sprint created

\n" +"

Hello %(user)s,
%(changer)s has created a new sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +" See " +"sprint\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New sprint created\n" +"Hello %(user)s, %(changer)s has created a new sprint on %(project)s\n" +"See sprint %(name)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the sprint \"%(milestone)s\"\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Sprint deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted an sprint on " +"%(project)s

\n" +"

Sprint %(name)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Sprint deleted\n" +"Hello %(user)s, %(changer)s has deleted an sprint on %(project)s\n" +"Sprint %(name)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/milestones/milestone-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Sprint \"%(milestone)s\"\n" +msgstr "" +"\n" +"[%(project)s] Silinmiş Sprint \"%(milestone)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task updated

\n" +"

Hello %(user)s,
%(changer)s has updated a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Task updated\n" +"Hello %(user)s, %(changer)s has updated a task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Güncellenmiş görev #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New task created

\n" +"

Hello %(user)s,
%(changer)s has created a new task on " +"%(project)s

\n" +"

Task #%(ref)s %(subject)s

\n" +" See task\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New task created\n" +"Hello %(user)s, %(changer)s has created a new task on %(project)s\n" +"See task #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Oluşturulmuş görev #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Task deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a task on %(project)s\n" +"

Task #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Task deleted\n" +"Hello %(user)s, %(changer)s has deleted a task on %(project)s\n" +"Task #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"Görev silindi\n" +"Merhaba %(user)s, %(changer)s kişisi %(project)s projesinde bir görevi " +"sildi\n" +"#%(ref)s %(subject)s Görevi\n" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/projects/notifications/templates/emails/tasks/task-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the task #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Silinmiş görev #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story updated

\n" +"

Hello %(user)s,
%(changer)s has updated a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"User story updated\n" +"Hello %(user)s, %(changer)s has updated a user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Güncellenmiş KH #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New user story created

\n" +"

Hello %(user)s,
%(changer)s has created a new user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +" See user story\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New user story created\n" +"Hello %(user)s, %(changer)s has created a new user story on %(project)s\n" +"See user story #%(ref)s %(subject)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Oluşturulmuş KH #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

User Story deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a user story on " +"%(project)s

\n" +"

User Story #%(ref)s %(subject)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"User Story deleted\n" +"Hello %(user)s, %(changer)s has deleted a user story on %(project)s\n" +"User Story #%(ref)s %(subject)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/userstories/userstory-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the US #%(ref)s \"%(subject)s\"\n" +msgstr "" +"\n" +"[%(project)s] Silinmiş KH #%(ref)s \"%(subject)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki Page updated

\n" +"

Hello %(user)s,
%(changer)s has updated a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See Wiki Page\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-body-text.jinja:3 +#, python-format +msgid "" +"\n" +"Wiki Page updated\n" +"\n" +"Hello %(user)s, %(changer)s has updated a wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-change-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Updated the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Güncellenmiş Wiki Sayfası \"%(page)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

New wiki page created

\n" +"

Hello %(user)s,
%(changer)s has created a new wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +" See " +"wiki page\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"New wiki page created\n" +"\n" +"Hello %(user)s, %(changer)s has created a new wiki page on %(project)s\n" +"\n" +"See wiki page %(page)s at %(url)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-create-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Created the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Oluşuturulmuş Wiki Sayfası \"%(page)s\"\n" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Wiki page deleted

\n" +"

Hello %(user)s,
%(changer)s has deleted a wiki page on " +"%(project)s

\n" +"

Wiki page %(page)s

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Wiki page deleted\n" +"\n" +"Hello %(user)s, %(changer)s has deleted a wiki page on %(project)s\n" +"\n" +"Wiki page %(page)s\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/projects/notifications/templates/emails/wiki/wikipage-delete-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[%(project)s] Deleted the Wiki Page \"%(page)s\"\n" +msgstr "" +"\n" +"[%(project)s] Silinmiş Wiki Sayfası \"%(page)s\"\n" + +#: taiga/projects/notifications/validators.py:47 +msgid "Watchers contains invalid users" +msgstr "İzleyiciler arasında geçersiz kullanıcılar var" + +#: taiga/projects/occ/mixins.py:36 +msgid "The version must be an integer" +msgstr "Sürüm rakamsal bir şey olmalıdır" + +#: taiga/projects/occ/mixins.py:59 +msgid "The version parameter is not valid" +msgstr "Sürüm parametresi geçersiz" + +#: taiga/projects/occ/mixins.py:75 +msgid "The version doesn't match with the current one" +msgstr "Sürüm geçerli olanla uyuşmuyor" + +#: taiga/projects/occ/mixins.py:94 +msgid "version" +msgstr "sürüm" + +#: taiga/projects/permissions.py:40 +msgid "You can't leave the project if there are no more owners" +msgstr "Eğer sizden başka sahip/yönetici kalmadıysa projeyi terk edemezsiniz" + +#: taiga/projects/serializers.py:237 +msgid "Email address is already taken" +msgstr "E-posta adresi önceden alınmış" + +#: taiga/projects/serializers.py:249 +msgid "Invalid role for the project" +msgstr "Proje için geçersiz rol" + +#: taiga/projects/serializers.py:425 +msgid "Default options" +msgstr "Varsayılan ayarlar" + +#: taiga/projects/serializers.py:426 +msgid "User story's statuses" +msgstr "Kullanıcı hikayelerinin durumları" + +#: taiga/projects/serializers.py:427 +msgid "Points" +msgstr "Puanlar" + +#: taiga/projects/serializers.py:428 +msgid "Task's statuses" +msgstr "Görevlerin durumları" + +#: taiga/projects/serializers.py:429 +msgid "Issue's statuses" +msgstr "Taleplerin durumları" + +#: taiga/projects/serializers.py:430 +msgid "Issue's types" +msgstr "Taleplerin tipleri" + +#: taiga/projects/serializers.py:431 +msgid "Priorities" +msgstr "Öncelikler" + +#: taiga/projects/serializers.py:432 +msgid "Severities" +msgstr "Önem dereceleri" + +#: taiga/projects/serializers.py:433 +msgid "Roles" +msgstr "Roller" + +#: taiga/projects/services/stats.py:198 +msgid "Future sprint" +msgstr "Gelecek sprint" + +#: taiga/projects/services/stats.py:216 +msgid "Project End" +msgstr "Proje Sonu" + +#: taiga/projects/tasks/api.py:112 taiga/projects/tasks/api.py:121 +msgid "You don't have permissions to set this sprint to this task." +msgstr "Bu görev için sprint ayarlamanız için izniniz yok." + +#: taiga/projects/tasks/api.py:115 +msgid "You don't have permissions to set this user story to this task." +msgstr "Bu görev için kullanıcı hikayesi ayarlama izniniz yok." + +#: taiga/projects/tasks/api.py:118 +msgid "You don't have permissions to set this status to this task." +msgstr "Bu görev için bu durumu ayarlama izniniz yok." + +#: taiga/projects/tasks/models.py:57 +msgid "us order" +msgstr "kh sırası" + +#: taiga/projects/tasks/models.py:59 +msgid "taskboard order" +msgstr "görev panosu sırası" + +#: taiga/projects/tasks/models.py:67 +msgid "is iocaine" +msgstr "baldıran zehri" + +#: taiga/projects/tasks/validators.py:12 +msgid "There's no task with that id" +msgstr "Bu id ile ilgili bir görev yok" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:6 +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:4 +msgid "someone" +msgstr "birisi" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:11 +#, python-format +msgid "" +"\n" +"

You have been invited to Taiga!

\n" +"

Hi! %(full_name)s has sent you an invitation to join project " +"%(project)s in Taiga.
Taiga is a Free, open Source Agile Project " +"Management Tool.

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:17 +#, python-format +msgid "" +"\n" +"

And now a few words from the jolly good fellow or sistren
" +"who thought so kindly as to invite you

\n" +"

%(extra)s

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation to Taiga" +msgstr "Taiga davetinizi kabul edin" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:24 +msgid "Accept your invitation" +msgstr "Daveti kabul edin" + +#: taiga/projects/templates/emails/membership_invitation-body-html.jinja:25 +msgid "The Taiga Team" +msgstr "Taiga Takımı" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:6 +#, python-format +msgid "" +"\n" +"You, or someone you know, has invited you to Taiga\n" +"\n" +"Hi! %(full_name)s has sent you an invitation to join a project called " +"%(project)s which is being managed on Taiga, a Free, open Source Agile " +"Project Management Tool.\n" +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:12 +#, python-format +msgid "" +"\n" +"And now a few words from the jolly good fellow or sistren who thought so " +"kindly as to invite you:\n" +"\n" +"%(extra)s\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:18 +msgid "Accept your invitation to Taiga following this link:" +msgstr "Aşağıdaki linki takip ederek Taiga davetinizi kabul edin:" + +#: taiga/projects/templates/emails/membership_invitation-body-text.jinja:20 +msgid "" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" +"\n" +"---\n" +"Taiga Takımı\n" + +#: taiga/projects/templates/emails/membership_invitation-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Invitation to join to the project '%(project)s'\n" +msgstr "" +"\n" +"[Taiga] Projeye katılma davetiyesi '%(project)s'\n" + +#: taiga/projects/templates/emails/membership_notification-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

You have been added to a project

\n" +"

Hello %(full_name)s,
you have been added to the project " +"%(project)s

\n" +" Go to " +"project\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/projects/templates/emails/membership_notification-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"You have been added to a project\n" +"Hello %(full_name)s,you have been added to the project %(project)s\n" +"\n" +"See project at %(url)s\n" +msgstr "" +"\n" +"Bir projeye eklendiniz\n" +"Merhaba %(full_name)s, %(project)s adlı projeye eklendin\n" +"\n" +"Projeyi görmek için %(url)s linkini tıklayın\n" + +#: taiga/projects/templates/emails/membership_notification-subject.jinja:1 +#, python-format +msgid "" +"\n" +"[Taiga] Added to the project '%(project)s'\n" +msgstr "" +"\n" +"[Taiga] '%(project)s' Projesine eklendi\n" + +#. Translators: Name of scrum project template. +#: taiga/projects/translations.py:29 +msgid "Scrum" +msgstr "Scrum" + +#. Translators: Description of scrum project template. +#: taiga/projects/translations.py:31 +msgid "" +"The agile product backlog in Scrum is a prioritized features list, " +"containing short descriptions of all functionality desired in the product. " +"When applying Scrum, it's not necessary to start a project with a lengthy, " +"upfront effort to document all requirements. The Scrum product backlog is " +"then allowed to grow and change as more is learned about the product and its " +"customers" +msgstr "" + +#. Translators: Name of kanban project template. +#: taiga/projects/translations.py:34 +msgid "Kanban" +msgstr "Kanban" + +#. Translators: Description of kanban project template. +#: taiga/projects/translations.py:36 +msgid "" +"Kanban is a method for managing knowledge work with an emphasis on just-in-" +"time delivery while not overloading the team members. In this approach, the " +"process, from definition of a task to its delivery to the customer, is " +"displayed for participants to see and team members pull work from a queue." +msgstr "" + +#. Translators: User story point value (value = undefined) +#: taiga/projects/translations.py:44 +msgid "?" +msgstr "?" + +#. Translators: User story point value (value = 0) +#: taiga/projects/translations.py:46 +msgid "0" +msgstr "0" + +#. Translators: User story point value (value = 0.5) +#: taiga/projects/translations.py:48 +msgid "1/2" +msgstr "1/2" + +#. Translators: User story point value (value = 1) +#: taiga/projects/translations.py:50 +msgid "1" +msgstr "1" + +#. Translators: User story point value (value = 2) +#: taiga/projects/translations.py:52 +msgid "2" +msgstr "2" + +#. Translators: User story point value (value = 3) +#: taiga/projects/translations.py:54 +msgid "3" +msgstr "3" + +#. Translators: User story point value (value = 5) +#: taiga/projects/translations.py:56 +msgid "5" +msgstr "5" + +#. Translators: User story point value (value = 8) +#: taiga/projects/translations.py:58 +msgid "8" +msgstr "8" + +#. Translators: User story point value (value = 10) +#: taiga/projects/translations.py:60 +msgid "10" +msgstr "10" + +#. Translators: User story point value (value = 13) +#: taiga/projects/translations.py:62 +msgid "13" +msgstr "13" + +#. Translators: User story point value (value = 20) +#: taiga/projects/translations.py:64 +msgid "20" +msgstr "20" + +#. Translators: User story point value (value = 40) +#: taiga/projects/translations.py:66 +msgid "40" +msgstr "40" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:74 taiga/projects/translations.py:97 +#: taiga/projects/translations.py:113 +msgid "New" +msgstr "Yeni" + +#. Translators: User story status +#: taiga/projects/translations.py:77 +msgid "Ready" +msgstr "Hazır" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:80 taiga/projects/translations.py:99 +#: taiga/projects/translations.py:115 +msgid "In progress" +msgstr "Devam ediyor" + +#. Translators: User story status +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:83 taiga/projects/translations.py:101 +#: taiga/projects/translations.py:117 +msgid "Ready for test" +msgstr "Teste hazır" + +#. Translators: User story status +#: taiga/projects/translations.py:86 +msgid "Done" +msgstr "Bitmiş" + +#. Translators: User story status +#: taiga/projects/translations.py:89 +msgid "Archived" +msgstr "Arşivlenmiş" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:103 taiga/projects/translations.py:119 +msgid "Closed" +msgstr "Kapatılmış" + +#. Translators: Task status +#. Translators: Issue status +#: taiga/projects/translations.py:105 taiga/projects/translations.py:121 +msgid "Needs Info" +msgstr "Bilgi İhtiyacı" + +#. Translators: Issue status +#: taiga/projects/translations.py:123 +msgid "Postponed" +msgstr "Ertelenmiş" + +#. Translators: Issue status +#: taiga/projects/translations.py:125 +msgid "Rejected" +msgstr "Reddedilmiş" + +#. Translators: Issue type +#: taiga/projects/translations.py:133 +msgid "Bug" +msgstr "Hata" + +#. Translators: Issue type +#: taiga/projects/translations.py:135 +msgid "Question" +msgstr "Soru" + +#. Translators: Issue type +#: taiga/projects/translations.py:137 +msgid "Enhancement" +msgstr "İyileştirme" + +#. Translators: Issue priority +#: taiga/projects/translations.py:145 +msgid "Low" +msgstr "Düşük" + +#. Translators: Issue priority +#. Translators: Issue severity +#: taiga/projects/translations.py:147 taiga/projects/translations.py:160 +msgid "Normal" +msgstr "Normal" + +#. Translators: Issue priority +#: taiga/projects/translations.py:149 +msgid "High" +msgstr "Yüksek" + +#. Translators: Issue severity +#: taiga/projects/translations.py:156 +msgid "Wishlist" +msgstr "İstek Listesi" + +#. Translators: Issue severity +#: taiga/projects/translations.py:158 +msgid "Minor" +msgstr "" + +#. Translators: Issue severity +#: taiga/projects/translations.py:162 +msgid "Important" +msgstr "Önemli" + +#. Translators: Issue severity +#: taiga/projects/translations.py:164 +msgid "Critical" +msgstr "Kritik" + +#. Translators: User role +#: taiga/projects/translations.py:171 +msgid "UX" +msgstr "UX" + +#. Translators: User role +#: taiga/projects/translations.py:173 +msgid "Design" +msgstr "Tasarım" + +#. Translators: User role +#: taiga/projects/translations.py:175 +msgid "Front" +msgstr "Ön" + +#. Translators: User role +#: taiga/projects/translations.py:177 +msgid "Back" +msgstr "Arka" + +#. Translators: User role +#: taiga/projects/translations.py:179 +msgid "Product Owner" +msgstr "Ürün Sahibi" + +#. Translators: User role +#: taiga/projects/translations.py:181 +msgid "Stakeholder" +msgstr "Paydaş" + +#: taiga/projects/userstories/api.py:162 +msgid "You don't have permissions to set this sprint to this user story." +msgstr "Bu kullanıcı hikayesine bu sprinti ayarlama izniniz yok." + +#: taiga/projects/userstories/api.py:166 +msgid "You don't have permissions to set this status to this user story." +msgstr "Bu kullanıcı hikayesine bu durumu ayarlama yetkiniz yok." + +#: taiga/projects/userstories/api.py:260 +#, python-brace-format +msgid "Generating the user story #{ref} - {subject}" +msgstr "" + +#: taiga/projects/userstories/models.py:39 +msgid "role" +msgstr "rol" + +#: taiga/projects/userstories/models.py:77 +msgid "backlog order" +msgstr "birikmiş işler sırası" + +#: taiga/projects/userstories/models.py:79 +#: taiga/projects/userstories/models.py:81 +msgid "sprint order" +msgstr "sprint sırası" + +#: taiga/projects/userstories/models.py:89 +msgid "finish date" +msgstr "bitiş tarihi" + +#: taiga/projects/userstories/models.py:97 +msgid "is client requirement" +msgstr "istemci gereksinimi" + +#: taiga/projects/userstories/models.py:99 +msgid "is team requirement" +msgstr "takım gereksinimi" + +#: taiga/projects/userstories/models.py:104 +msgid "generated from issue" +msgstr "talepden oluştur" + +#: taiga/projects/userstories/validators.py:29 +msgid "There's no user story with that id" +msgstr "Bu id ye sahip kullanıcı hikayesi yok" + +#: taiga/projects/validators.py:29 +msgid "There's no project with that id" +msgstr "Bu id ye sahip proje yok" + +#: taiga/projects/validators.py:38 +msgid "There's no user story status with that id" +msgstr "Bu id ye sahip kullanıcı hikayesi durumu yok" + +#: taiga/projects/validators.py:47 +msgid "There's no task status with that id" +msgstr "Bu id ye sahip görev durumu yok" + +#: taiga/projects/votes/models.py:32 taiga/projects/votes/models.py:33 +#: taiga/projects/votes/models.py:57 +msgid "Votes" +msgstr "Oylar" + +#: taiga/projects/votes/models.py:56 +msgid "Vote" +msgstr "Oy" + +#: taiga/projects/wiki/api.py:67 +msgid "'content' parameter is mandatory" +msgstr "'content' parametresi zorunlu" + +#: taiga/projects/wiki/api.py:70 +msgid "'project_id' parameter is mandatory" +msgstr "'project_id' parametresi zorunlu" + +#: taiga/projects/wiki/models.py:38 +msgid "last modifier" +msgstr "son düzenleyen" + +#: taiga/projects/wiki/models.py:71 +msgid "href" +msgstr "href" + +#: taiga/timeline/signals.py:70 +msgid "Check the history API for the exact diff" +msgstr "" + +#: taiga/users/admin.py:51 +msgid "Personal info" +msgstr "Kişisel bilgi" + +#: taiga/users/admin.py:53 +msgid "Permissions" +msgstr "İzinler" + +#: taiga/users/admin.py:54 +msgid "Important dates" +msgstr "Önemli tarihler" + +#: taiga/users/api.py:112 +msgid "Duplicated email" +msgstr "" + +#: taiga/users/api.py:114 +msgid "Not valid email" +msgstr "Geçersiz e-posta" + +#: taiga/users/api.py:147 +msgid "Invalid username or email" +msgstr "Geçersiz kullanıcı adı ya da e-posta" + +#: taiga/users/api.py:156 +msgid "Mail sended successful!" +msgstr "Posta başarıyla gönderildi!" + +#: taiga/users/api.py:168 taiga/users/api.py:173 +msgid "Token is invalid" +msgstr "Kupon geçersiz" + +#: taiga/users/api.py:194 +msgid "Current password parameter needed" +msgstr "" + +#: taiga/users/api.py:197 +msgid "New password parameter needed" +msgstr "Yeni parola parametresi gerekli" + +#: taiga/users/api.py:200 +msgid "Invalid password length at least 6 charaters needed" +msgstr "Geçersiz parola uzunluğu, en az 6 karaktere ihtiyaç var" + +#: taiga/users/api.py:203 +msgid "Invalid current password" +msgstr "" + +#: taiga/users/api.py:250 taiga/users/api.py:256 +msgid "" +"Invalid, are you sure the token is correct and you didn't use it before?" +msgstr "" +"Geçersiz geçerli bir kupona sahip olduğunuzdan ve bu kuponu daha önce " +"kullanmadığınızdan emin misiniz?" + +#: taiga/users/api.py:283 taiga/users/api.py:291 taiga/users/api.py:294 +msgid "Invalid, are you sure the token is correct?" +msgstr "Geçersiz, kuponun doğru olduğuna emin misin?" + +#: taiga/users/models.py:75 +msgid "superuser status" +msgstr "superuser durumu" + +#: taiga/users/models.py:76 +msgid "" +"Designates that this user has all permissions without explicitly assigning " +"them." +msgstr "" + +#: taiga/users/models.py:106 +msgid "username" +msgstr "kullanıcı adı" + +#: taiga/users/models.py:107 +msgid "" +"Required. 30 characters or fewer. Letters, numbers and /./-/_ characters" +msgstr "" +"Zorunlu. 30 karakter ya da daha azı. Harfler, sayılar ve /./-/_ karakterleri" + +#: taiga/users/models.py:110 +msgid "Enter a valid username." +msgstr "Geçerli bir kullanıcı adı girin." + +#: taiga/users/models.py:113 +msgid "active" +msgstr "aktif" + +#: taiga/users/models.py:114 +msgid "" +"Designates whether this user should be treated as active. Unselect this " +"instead of deleting accounts." +msgstr "" + +#: taiga/users/models.py:120 +msgid "biography" +msgstr "biyografi" + +#: taiga/users/models.py:123 +msgid "photo" +msgstr "fotoğraf" + +#: taiga/users/models.py:124 +msgid "date joined" +msgstr "katılma tarihi" + +#: taiga/users/models.py:126 +msgid "default language" +msgstr "varsayılan dil" + +#: taiga/users/models.py:128 +msgid "default theme" +msgstr "varsayılan tema" + +#: taiga/users/models.py:130 +msgid "default timezone" +msgstr "varsayılan saat dilimi" + +#: taiga/users/models.py:132 +msgid "colorize tags" +msgstr "etiketleri renklendir" + +#: taiga/users/models.py:137 +msgid "email token" +msgstr "e-posta kuponu" + +#: taiga/users/models.py:139 +msgid "new email address" +msgstr "yeni e-posta adresi" + +#: taiga/users/models.py:256 +msgid "permissions" +msgstr "izinler" + +#: taiga/users/serializers.py:65 +msgid "invalid" +msgstr "Geçersiz" + +#: taiga/users/serializers.py:76 +msgid "Invalid username. Try with a different one." +msgstr "Geçersiz kullanıcı adı. Farklı birşeyle yeniden deneyin." + +#: taiga/users/services.py:52 taiga/users/services.py:69 +msgid "Username or password does not matches user." +msgstr "Kullanıcı adı veya parola kullanıcıyla uyuşmuyor" + +#: taiga/users/templates/emails/change_email-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Change your email

\n" +"

Hello %(full_name)s,
please confirm your email

\n" +" Confirm " +"email\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/change_email-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, please confirm your email\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/change_email-subject.jinja:1 +msgid "[Taiga] Change email" +msgstr "[Taiga] E-mail Değiştir" + +#: taiga/users/templates/emails/password_recovery-body-html.jinja:4 +#, python-format +msgid "" +"\n" +"

Recover your password

\n" +"

Hello %(full_name)s,
you asked to recover your password

\n" +" Recover your password\n" +"

You can ignore this message if you did not request.

\n" +"

The Taiga Team

\n" +" " +msgstr "" + +#: taiga/users/templates/emails/password_recovery-body-text.jinja:1 +#, python-format +msgid "" +"\n" +"Hello %(full_name)s, you asked to recover your password\n" +"\n" +"%(url)s\n" +"\n" +"You can ignore this message if you did not request.\n" +"\n" +"---\n" +"The Taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/password_recovery-subject.jinja:1 +msgid "[Taiga] Password recovery" +msgstr "[Taiga] Parola geri kurtarma" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:6 +msgid "" +"\n" +" \n" +"

Thank you for registering in Taiga

\n" +"

We hope you enjoy it

\n" +"

We built Taiga because we wanted the project management tool " +"that sits open on our computers all day long, to serve as a continued " +"reminder of why we love to collaborate, code and design.

\n" +"

We built it to be beautiful, elegant, simple to use and fun - " +"without forsaking flexibility and power.

\n" +" The taiga Team\n" +" \n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-html.jinja:23 +#, python-format +msgid "" +"\n" +" You may remove your account from this service clicking " +"here\n" +" " +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:1 +msgid "" +"\n" +"Thank you for registering in Taiga\n" +"\n" +"We hope you enjoy it\n" +"\n" +"We built Taiga because we wanted the project management tool that sits open " +"on our computers all day long, to serve as a continued reminder of why we " +"love to collaborate, code and design.\n" +"\n" +"We built it to be beautiful, elegant, simple to use and fun - without " +"forsaking flexibility and power.\n" +"\n" +"--\n" +"The taiga Team\n" +msgstr "" + +#: taiga/users/templates/emails/registered_user-body-text.jinja:13 +#, python-format +msgid "" +"\n" +"You may remove your account from this service: %(url)s\n" +msgstr "" +"\n" +"Hesabınızı bu servisten silebilirsiniz: %(url)s\n" + +#: taiga/users/templates/emails/registered_user-subject.jinja:1 +msgid "You've been Taigatized!" +msgstr "Taigalandınız!" + +#: taiga/users/validators.py:30 +msgid "There's no role with that id" +msgstr "Bu id ye sahip yok yok" + +#: taiga/userstorage/api.py:51 +msgid "" +"Duplicate key value violates unique constraint. Key '{}' already exists." +msgstr "" + +#: taiga/userstorage/models.py:31 +msgid "key" +msgstr "anahtar" + +#: taiga/webhooks/models.py:29 taiga/webhooks/models.py:39 +msgid "URL" +msgstr "URL" + +#: taiga/webhooks/models.py:30 +msgid "secret key" +msgstr "gizli anahtar" + +#: taiga/webhooks/models.py:40 +msgid "status code" +msgstr "durum kodu" + +#: taiga/webhooks/models.py:41 +msgid "request data" +msgstr "talep verisi" + +#: taiga/webhooks/models.py:42 +msgid "request headers" +msgstr "talep başlıkları" + +#: taiga/webhooks/models.py:43 +msgid "response data" +msgstr "cevap verisi" + +#: taiga/webhooks/models.py:44 +msgid "response headers" +msgstr "cevap başlıkları" + +#: taiga/webhooks/models.py:45 +msgid "duration" +msgstr "süre" From d555637418c9f3a35b5888822844990cfc586fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 26 Jan 2016 12:26:46 +0100 Subject: [PATCH 38/41] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89197149..98a05494 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog # -## 1.10.0 ??? (Unreleased) +## 1.10.0 Dryas Octopetala (Unreleased) ### Features - Add logo field to project model From c7e104c2e060b1f3957811938bc71641d2ca3bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 26 Jan 2016 14:56:32 +0100 Subject: [PATCH 39/41] [i18n] Update locales --- taiga/locale/ca/LC_MESSAGES/django.po | 2 +- taiga/locale/de/LC_MESSAGES/django.po | 2 +- taiga/locale/en/LC_MESSAGES/django.po | 2 +- taiga/locale/es/LC_MESSAGES/django.po | 4 +- taiga/locale/fi/LC_MESSAGES/django.po | 2 +- taiga/locale/fr/LC_MESSAGES/django.po | 2 +- taiga/locale/it/LC_MESSAGES/django.po | 2 +- taiga/locale/nl/LC_MESSAGES/django.po | 2 +- taiga/locale/pl/LC_MESSAGES/django.po | 2 +- taiga/locale/pt_BR/LC_MESSAGES/django.po | 2 +- taiga/locale/ru/LC_MESSAGES/django.po | 15 ++--- taiga/locale/sv/LC_MESSAGES/django.po | 2 +- taiga/locale/tr/LC_MESSAGES/django.po | 69 ++++++++++++++-------- taiga/locale/zh-Hant/LC_MESSAGES/django.po | 68 ++++++++++----------- 14 files changed, 100 insertions(+), 76 deletions(-) diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index fa7904e7..ffbc8155 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Catalan (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po index a79ede06..f4ef1f5a 100644 --- a/taiga/locale/de/LC_MESSAGES/django.po +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: German (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index 5e823823..57bdb1d9 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Taiga Dev Team \n" diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index 130c5431..f7f43d5f 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-23 19:17+0000\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"PO-Revision-Date: 2016-01-23 21:41+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Spanish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/es/)\n" diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index 49862fc8..08f7bacb 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Finnish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 52b5a926..2aa5e6b0 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: French (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index 4e553761..b63964fe 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 13:03+0000\n" "Last-Translator: F B \n" "Language-Team: Italian (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po index 6f618bad..a64fbb96 100644 --- a/taiga/locale/nl/LC_MESSAGES/django.po +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Dutch (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/pl/LC_MESSAGES/django.po b/taiga/locale/pl/LC_MESSAGES/django.po index 186653d8..0a4d0741 100644 --- a/taiga/locale/pl/LC_MESSAGES/django.po +++ b/taiga/locale/pl/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Polish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/pt_BR/LC_MESSAGES/django.po b/taiga/locale/pt_BR/LC_MESSAGES/django.po index 9a30cfeb..c17e20f1 100644 --- a/taiga/locale/pt_BR/LC_MESSAGES/django.po +++ b/taiga/locale/pt_BR/LC_MESSAGES/django.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/taiga-agile-llc/" diff --git a/taiga/locale/ru/LC_MESSAGES/django.po b/taiga/locale/ru/LC_MESSAGES/django.po index 37ff75f3..e6a566cc 100644 --- a/taiga/locale/ru/LC_MESSAGES/django.po +++ b/taiga/locale/ru/LC_MESSAGES/django.po @@ -8,14 +8,15 @@ # Dmitry Lobanov , 2015 # Dmitry Vinokurov , 2015 # Igor Bezukladnikov , 2016 +# ilyar, 2016 # Марат , 2015 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"PO-Revision-Date: 2016-01-25 18:16+0000\n" +"Last-Translator: ilyar\n" "Language-Team: Russian (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/ru/)\n" "MIME-Version: 1.0\n" @@ -1767,7 +1768,7 @@ msgstr "тип запроса по умолчанию" #: taiga/projects/models.py:171 msgid "logo" -msgstr "" +msgstr "лготип" #: taiga/projects/models.py:181 msgid "members" @@ -1860,15 +1861,15 @@ msgstr "" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "активность за неделю" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "активность за месяц" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "активность за год" #: taiga/projects/models.py:466 msgid "modules config" diff --git a/taiga/locale/sv/LC_MESSAGES/django.po b/taiga/locale/sv/LC_MESSAGES/django.po index 8a17bef5..08046681 100644 --- a/taiga/locale/sv/LC_MESSAGES/django.po +++ b/taiga/locale/sv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Swedish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/tr/LC_MESSAGES/django.po b/taiga/locale/tr/LC_MESSAGES/django.po index 2475a8fe..753e67b2 100644 --- a/taiga/locale/tr/LC_MESSAGES/django.po +++ b/taiga/locale/tr/LC_MESSAGES/django.po @@ -4,14 +4,15 @@ # # Translators: # Can Aydin , 2015 -# catborise , 2015 +# catborise , 2015-2016 +# Mert Torun , 2016 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"PO-Revision-Date: 2016-01-26 13:54+0000\n" +"Last-Translator: Mert Torun \n" "Language-Team: Turkish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/tr/)\n" "MIME-Version: 1.0\n" @@ -60,7 +61,7 @@ msgstr "Kullanıcı zaten kayıtlı." #: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "Bu kullanızı halihazırda zaten projenin bir üyesi." #: taiga/auth/services.py:171 msgid "Error on creating new user." @@ -88,6 +89,8 @@ msgstr "%s' değeri ya Doğru ya da Yanlış olmalıdır." msgid "" "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens." msgstr "" +"Harfler, rakamlar, altçizgi ve kesme işaretinden oluşan geçerli bir 'satır' " +"girin." #: taiga/base/api/fields.py:556 #, python-format @@ -174,6 +177,8 @@ msgstr "İbraz edilen dosya boş" msgid "" "Ensure this filename has at most %(max)d characters (it has %(length)d)." msgstr "" +"Bu dosya adının en fazla %(max)d karakterden oluştuğundan (uzunluğunun " +"%(length)d olduğundan) emin olun" #: taiga/base/api/fields.py:981 msgid "Please either submit a file or check the clear checkbox, not both." @@ -191,7 +196,7 @@ msgstr "" #: taiga/base/api/pagination.py:213 msgid "Page is not 'last', nor can it be converted to an int." -msgstr "" +msgstr "Sayfa 'last'(son) değil, tamsayıya da çevrilemiyor." #: taiga/base/api/pagination.py:217 #, python-format @@ -1336,7 +1341,7 @@ msgstr "sha1" #: taiga/projects/attachments/models.py:74 msgid "is deprecated" -msgstr "" +msgstr "kaldırıldı" #: taiga/projects/attachments/models.py:76 #: taiga/projects/custom_attributes/models.py:40 @@ -1350,7 +1355,7 @@ msgstr "sıra" #: taiga/projects/choices.py:22 msgid "AppearIn" -msgstr "" +msgstr "AppearIn" #: taiga/projects/choices.py:23 msgid "Jitsi" @@ -1454,11 +1459,11 @@ msgstr "Güncellenmiş ek" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:68 msgid "deprecated" -msgstr "" +msgstr "kaldırıldı" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:70 msgid "not deprecated" -msgstr "" +msgstr "kaldırılmadı" #: taiga/projects/history/templates/emails/includes/fields_diff-html.jinja:86 msgid "Deleted attachment" @@ -1610,7 +1615,7 @@ msgstr "Beğeniler" #: taiga/projects/models.py:626 taiga/projects/models.py:684 #: taiga/projects/wiki/models.py:32 taiga/users/models.py:253 msgid "slug" -msgstr "" +msgstr "satır" #: taiga/projects/milestones/models.py:45 msgid "estimated start date" @@ -1627,11 +1632,11 @@ msgstr "kapatılmış" #: taiga/projects/milestones/models.py:55 msgid "disponibility" -msgstr "" +msgstr "taşınabilirlik" #: taiga/projects/milestones/models.py:80 msgid "The estimated start must be previous to the estimated finish." -msgstr "" +msgstr "Tahmini başlangıç, tahmini bitişten önce olmalı" #: taiga/projects/milestones/validators.py:12 msgid "There's no sprint with that id" @@ -1704,7 +1709,7 @@ msgstr "varsayılan talep tipi" #: taiga/projects/models.py:171 msgid "logo" -msgstr "" +msgstr "logo" #: taiga/projects/models.py:181 msgid "members" @@ -1760,11 +1765,11 @@ msgstr "gizli" #: taiga/projects/models.py:218 msgid "is featured" -msgstr "" +msgstr "vitrinde" #: taiga/projects/models.py:221 msgid "is looking for people" -msgstr "" +msgstr "insan arıyor" #: taiga/projects/models.py:223 msgid "loking for people note" @@ -1785,27 +1790,27 @@ msgstr "sayı" #: taiga/projects/models.py:245 msgid "fans last week" -msgstr "" +msgstr "geçen hafta fanları" #: taiga/projects/models.py:248 msgid "fans last month" -msgstr "" +msgstr "geçen ayın fanları" #: taiga/projects/models.py:251 msgid "fans last year" -msgstr "" +msgstr "geçen yılın fanları" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "geçen haftanın aktiviteleri" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "geçen ayın aktiviteleri" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "geçen yılın aktiviteleri" #: taiga/projects/models.py:466 msgid "modules config" @@ -1873,7 +1878,7 @@ msgstr "roller" #: taiga/projects/notifications/choices.py:29 msgid "Involved" -msgstr "" +msgstr "Müdahil" #: taiga/projects/notifications/choices.py:30 msgid "All" @@ -1965,6 +1970,15 @@ msgid "" "

The Taiga Team

\n" " " msgstr "" +"\n" +"

Yeni sorun oluşturuldu

\n" +"

Merhaba %(user)s,
%(changer)s, %(project)s projesinde yeni bir " +"sorun oluşturdu

\n" +"

Sorun #%(ref)s %(subject)s

\n" +" Soruna git\n" +"

Taiga ekibi

\n" +" " #: taiga/projects/notifications/templates/emails/issues/issue-create-body-text.jinja:1 #, python-format @@ -1977,6 +1991,15 @@ msgid "" "---\n" "The Taiga Team\n" msgstr "" +"\n" +"Yeni sorun oluşturuldu\n" +"Merhaba %(user)s, %(changer)s, %(project)s projesinde yeni bir sorun " +"oluşturdu:\n" +"#%(ref)s %(subject)s \n" +"%(url)s\n" +"\n" +"---\n" +"Taiga ekibi\n" #: taiga/projects/notifications/templates/emails/issues/issue-create-subject.jinja:1 #, python-format diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index a22f76c6..ad68dccf 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -4,16 +4,16 @@ # # Translators: # Alvis , 2015 -# Chi-Hsun Tsai , 2015 +# Chi-Hsun Tsai , 2015-2016 # David Barragán , 2015 # Matthew Lien , 2015 msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-22 13:09+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"PO-Revision-Date: 2016-01-26 03:45+0000\n" +"Last-Translator: Chi-Hsun Tsai \n" "Language-Team: Chinese Traditional (http://www.transifex.com/taiga-agile-llc/" "taiga-back/language/zh-Hant/)\n" "MIME-Version: 1.0\n" @@ -61,7 +61,7 @@ msgstr "使用者已被註冊。" #: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "" +msgstr "使用者已是專案成員" #: taiga/auth/services.py:171 msgid "Error on creating new user." @@ -816,7 +816,7 @@ msgstr "[%(project)s] 您堆存的專案已滙入" #: taiga/external_apps/api.py:41 taiga/external_apps/api.py:67 #: taiga/external_apps/api.py:74 msgid "Authentication required" -msgstr "" +msgstr "要求取得授權" #: taiga/external_apps/models.py:34 #: taiga/projects/custom_attributes/models.py:35 @@ -831,11 +831,11 @@ msgstr "姓名" #: taiga/external_apps/models.py:36 msgid "Icon url" -msgstr "" +msgstr "網址圖標" #: taiga/external_apps/models.py:37 msgid "web" -msgstr "" +msgstr "網頁" #: taiga/external_apps/models.py:38 taiga/projects/attachments/models.py:75 #: taiga/projects/custom_attributes/models.py:36 @@ -848,20 +848,20 @@ msgstr "描述" #: taiga/external_apps/models.py:40 msgid "Next url" -msgstr "" +msgstr "下一個網址" #: taiga/external_apps/models.py:42 msgid "secret key for ciphering the application tokens" -msgstr "" +msgstr "應用程式的密碼字符數列" #: taiga/external_apps/models.py:56 taiga/projects/likes/models.py:30 #: taiga/projects/notifications/models.py:85 taiga/projects/votes/models.py:51 msgid "user" -msgstr "" +msgstr "使用者" #: taiga/external_apps/models.py:60 msgid "application" -msgstr "" +msgstr "應用程式" #: taiga/feedback/models.py:24 taiga/users/models.py:117 msgid "full name" @@ -1312,7 +1312,7 @@ msgstr "您無觀看權限" #: taiga/projects/attachments/api.py:48 msgid "Partial updates are not supported" -msgstr "" +msgstr "不支援部份更新" #: taiga/projects/attachments/api.py:63 msgid "Project ID not matches between object and project" @@ -1363,7 +1363,7 @@ msgstr "附加檔案" #: taiga/projects/attachments/models.py:72 msgid "sha1" -msgstr "" +msgstr "sha1" #: taiga/projects/attachments/models.py:74 msgid "is deprecated" @@ -1405,7 +1405,7 @@ msgstr "多行列文字" #: taiga/projects/custom_attributes/choices.py:28 msgid "Date" -msgstr "" +msgstr "日期" #: taiga/projects/custom_attributes/models.py:39 #: taiga/projects/issues/models.py:47 @@ -1630,11 +1630,11 @@ msgstr "外部參考" #: taiga/projects/likes/models.py:35 msgid "Like" -msgstr "" +msgstr "喜歡" #: taiga/projects/likes/models.py:36 msgid "Likes" -msgstr "" +msgstr "喜歡" #: taiga/projects/milestones/models.py:40 taiga/projects/models.py:165 #: taiga/projects/models.py:479 taiga/projects/models.py:543 @@ -1735,7 +1735,7 @@ msgstr "預設議題類型" #: taiga/projects/models.py:171 msgid "logo" -msgstr "" +msgstr "圖標" #: taiga/projects/models.py:181 msgid "members" @@ -1791,11 +1791,11 @@ msgstr "私密" #: taiga/projects/models.py:218 msgid "is featured" -msgstr "" +msgstr " 受矚目的" #: taiga/projects/models.py:221 msgid "is looking for people" -msgstr "" +msgstr "正在找人" #: taiga/projects/models.py:223 msgid "loking for people note" @@ -1812,31 +1812,31 @@ msgstr "更新日期時間" #: taiga/projects/models.py:242 taiga/projects/models.py:254 #: taiga/projects/votes/models.py:29 msgid "count" -msgstr "" +msgstr "數量" #: taiga/projects/models.py:245 msgid "fans last week" -msgstr "" +msgstr "上週粉絲" #: taiga/projects/models.py:248 msgid "fans last month" -msgstr "" +msgstr "上個月粉絲" #: taiga/projects/models.py:251 msgid "fans last year" -msgstr "" +msgstr "去年粉絲" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "上週活躍成員" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "上月活躍成員" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "去年活躍成員" #: taiga/projects/models.py:466 msgid "modules config" @@ -1904,15 +1904,15 @@ msgstr "角色" #: taiga/projects/notifications/choices.py:29 msgid "Involved" -msgstr "" +msgstr "相關涉入者" #: taiga/projects/notifications/choices.py:30 msgid "All" -msgstr "" +msgstr "所有" #: taiga/projects/notifications/choices.py:31 msgid "None" -msgstr "" +msgstr "無" #: taiga/projects/notifications/models.py:62 msgid "created date time" @@ -1929,7 +1929,7 @@ msgstr "通知用戶" #: taiga/projects/notifications/models.py:91 #: taiga/projects/notifications/models.py:92 msgid "Watched" -msgstr "" +msgstr "已觀注" #: taiga/projects/notifications/services.py:66 #: taiga/projects/notifications/services.py:80 @@ -1938,7 +1938,7 @@ msgstr "通知特定使用者與專案退出" #: taiga/projects/notifications/services.py:429 msgid "Invalid value for notify level" -msgstr "" +msgstr "通知水平的無效值" #: taiga/projects/notifications/templates/emails/issues/issue-change-body-html.jinja:4 #, python-format @@ -3158,7 +3158,7 @@ msgstr "無權限更動此使用者故事的狀態" #: taiga/projects/userstories/api.py:260 #, python-brace-format msgid "Generating the user story #{ref} - {subject}" -msgstr "" +msgstr "産生使用者故事 #{ref} - {subject}" #: taiga/projects/userstories/models.py:39 msgid "role" @@ -3232,7 +3232,7 @@ msgstr "href" #: taiga/timeline/signals.py:70 msgid "Check the history API for the exact diff" -msgstr "" +msgstr "檢查API過去資料以找出差異" #: taiga/users/admin.py:51 msgid "Personal info" From 22dd0aee85d89a1089bfa913b6a9091306c0d2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Tue, 26 Jan 2016 15:05:31 +0100 Subject: [PATCH 40/41] Update CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98a05494..a570ed3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog # -## 1.10.0 Dryas Octopetala (Unreleased) +## 1.10.0 Dryas Octopetala (2016-01-30) ### Features - Add logo field to project model From b86b790261a2cca721c4037b918a31ad1997df75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Fri, 29 Jan 2016 10:22:19 +0100 Subject: [PATCH 41/41] [i18n] Update locales --- taiga/locale/ca/LC_MESSAGES/django.po | 2 +- taiga/locale/de/LC_MESSAGES/django.po | 2 +- taiga/locale/en/LC_MESSAGES/django.po | 2 +- taiga/locale/es/LC_MESSAGES/django.po | 2 +- taiga/locale/fi/LC_MESSAGES/django.po | 2 +- taiga/locale/fr/LC_MESSAGES/django.po | 31 +++++++++++----------- taiga/locale/it/LC_MESSAGES/django.po | 2 +- taiga/locale/nl/LC_MESSAGES/django.po | 2 +- taiga/locale/pl/LC_MESSAGES/django.po | 2 +- taiga/locale/pt_BR/LC_MESSAGES/django.po | 2 +- taiga/locale/ru/LC_MESSAGES/django.po | 2 +- taiga/locale/sv/LC_MESSAGES/django.po | 2 +- taiga/locale/tr/LC_MESSAGES/django.po | 4 +-- taiga/locale/zh-Hant/LC_MESSAGES/django.po | 2 +- 14 files changed, 30 insertions(+), 29 deletions(-) diff --git a/taiga/locale/ca/LC_MESSAGES/django.po b/taiga/locale/ca/LC_MESSAGES/django.po index ffbc8155..27f087a7 100644 --- a/taiga/locale/ca/LC_MESSAGES/django.po +++ b/taiga/locale/ca/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Catalan (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/de/LC_MESSAGES/django.po b/taiga/locale/de/LC_MESSAGES/django.po index f4ef1f5a..19f5adfd 100644 --- a/taiga/locale/de/LC_MESSAGES/django.po +++ b/taiga/locale/de/LC_MESSAGES/django.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: German (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index 57bdb1d9..7e445d3f 100644 --- a/taiga/locale/en/LC_MESSAGES/django.po +++ b/taiga/locale/en/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Taiga Dev Team \n" diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index f7f43d5f..f3e064b4 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-23 21:41+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Spanish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index 08f7bacb..525eb7d7 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Finnish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 2aa5e6b0..d5717f2b 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -8,6 +8,7 @@ # Djyp Forest Fortin , 2015 # Florent B. , 2015 # Gautier Ferandelle , 2016 +# Laurent Cabaret , 2016 # Louis-Michel Couture , 2015 # Matthieu Durocher , 2015 # naekos , 2015 @@ -20,9 +21,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" -"PO-Revision-Date: 2016-01-22 12:10+0000\n" -"Last-Translator: Taiga Dev Team \n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" +"PO-Revision-Date: 2016-01-26 14:34+0000\n" +"Last-Translator: Laurent Cabaret \n" "Language-Team: French (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/fr/)\n" "MIME-Version: 1.0\n" @@ -71,7 +72,7 @@ msgstr "Cet utilisateur est déjà inscrit." #: taiga/auth/services.py:145 msgid "This user is already a member of the project." -msgstr "Cet utilisateur est déjà membre de ce projet." +msgstr "L'utilisateur est déjà un membre du projet" #: taiga/auth/services.py:171 msgid "Error on creating new user." @@ -603,7 +604,7 @@ msgstr "Nom dupliqué pour ce projet" #: taiga/export_import/tasks.py:54 taiga/export_import/tasks.py:55 msgid "Error generating project dump" -msgstr "Error dans la génération du dump du projet" +msgstr "Erreur dans la génération du dump du projet" #: taiga/export_import/tasks.py:86 taiga/export_import/tasks.py:87 msgid "Error loading project dump" @@ -1770,11 +1771,11 @@ msgstr "est privé" #: taiga/projects/models.py:218 msgid "is featured" -msgstr "" +msgstr "est mis en avant" #: taiga/projects/models.py:221 msgid "is looking for people" -msgstr "" +msgstr "est à la recherche de main d'oeuvre" #: taiga/projects/models.py:223 msgid "loking for people note" @@ -1791,31 +1792,31 @@ msgstr "date de mise à jour" #: taiga/projects/models.py:242 taiga/projects/models.py:254 #: taiga/projects/votes/models.py:29 msgid "count" -msgstr "" +msgstr "total" #: taiga/projects/models.py:245 msgid "fans last week" -msgstr "" +msgstr "fans la semaine dernière" #: taiga/projects/models.py:248 msgid "fans last month" -msgstr "" +msgstr "fans le mois dernier" #: taiga/projects/models.py:251 msgid "fans last year" -msgstr "" +msgstr "fans l'année dernière" #: taiga/projects/models.py:257 msgid "activity last week" -msgstr "" +msgstr "activité de la semaine écoulée" #: taiga/projects/models.py:260 msgid "activity last month" -msgstr "" +msgstr "activité du mois écoulé" #: taiga/projects/models.py:263 msgid "activity last year" -msgstr "" +msgstr "activité de l'année écoulée" #: taiga/projects/models.py:466 msgid "modules config" @@ -1887,7 +1888,7 @@ msgstr "Impliqué" #: taiga/projects/notifications/choices.py:30 msgid "All" -msgstr "" +msgstr "Toutes" #: taiga/projects/notifications/choices.py:31 msgid "None" diff --git a/taiga/locale/it/LC_MESSAGES/django.po b/taiga/locale/it/LC_MESSAGES/django.po index b63964fe..c41f6400 100644 --- a/taiga/locale/it/LC_MESSAGES/django.po +++ b/taiga/locale/it/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 13:03+0000\n" "Last-Translator: F B \n" "Language-Team: Italian (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/nl/LC_MESSAGES/django.po b/taiga/locale/nl/LC_MESSAGES/django.po index a64fbb96..7e499bcb 100644 --- a/taiga/locale/nl/LC_MESSAGES/django.po +++ b/taiga/locale/nl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Dutch (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/pl/LC_MESSAGES/django.po b/taiga/locale/pl/LC_MESSAGES/django.po index 0a4d0741..0d5a6368 100644 --- a/taiga/locale/pl/LC_MESSAGES/django.po +++ b/taiga/locale/pl/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Polish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/pt_BR/LC_MESSAGES/django.po b/taiga/locale/pt_BR/LC_MESSAGES/django.po index c17e20f1..9e3d6598 100644 --- a/taiga/locale/pt_BR/LC_MESSAGES/django.po +++ b/taiga/locale/pt_BR/LC_MESSAGES/django.po @@ -19,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/taiga-agile-llc/" diff --git a/taiga/locale/ru/LC_MESSAGES/django.po b/taiga/locale/ru/LC_MESSAGES/django.po index e6a566cc..c38ba995 100644 --- a/taiga/locale/ru/LC_MESSAGES/django.po +++ b/taiga/locale/ru/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-25 18:16+0000\n" "Last-Translator: ilyar\n" "Language-Team: Russian (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/sv/LC_MESSAGES/django.po b/taiga/locale/sv/LC_MESSAGES/django.po index 08046681..a97be689 100644 --- a/taiga/locale/sv/LC_MESSAGES/django.po +++ b/taiga/locale/sv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-22 12:10+0000\n" "Last-Translator: Taiga Dev Team \n" "Language-Team: Swedish (http://www.transifex.com/taiga-agile-llc/taiga-back/" diff --git a/taiga/locale/tr/LC_MESSAGES/django.po b/taiga/locale/tr/LC_MESSAGES/django.po index 753e67b2..b0bfc3c0 100644 --- a/taiga/locale/tr/LC_MESSAGES/django.po +++ b/taiga/locale/tr/LC_MESSAGES/django.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" -"PO-Revision-Date: 2016-01-26 13:54+0000\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" +"PO-Revision-Date: 2016-01-26 14:17+0000\n" "Last-Translator: Mert Torun \n" "Language-Team: Turkish (http://www.transifex.com/taiga-agile-llc/taiga-back/" "language/tr/)\n" diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index ad68dccf..dacffc4b 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-01-26 14:55+0100\n" +"POT-Creation-Date: 2016-01-29 10:21+0100\n" "PO-Revision-Date: 2016-01-26 03:45+0000\n" "Last-Translator: Chi-Hsun Tsai \n" "Language-Team: Chinese Traditional (http://www.transifex.com/taiga-agile-llc/"