diff --git a/.travis.yml b/.travis.yml index ebb26f00..6e37362c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,6 @@ notifications: email: recipients: - jespinog@gmail.com - - andrei.antoukh@gmail.com - bameda@dbarragan.com on_success: change on_failure: change diff --git a/CHANGELOG.md b/CHANGELOG.md index 923eff1e..52393fc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ## 1.8.0 ??? (unreleased) ### Features +- Improve timeline resource. +- Add sitemap of taiga-front (the web client). - Search by reference (thanks to [@artlepool](https://github.com/artlepool)) - Add call 'by_username' to the API resource User diff --git a/settings/common.py b/settings/common.py index ee33a4ba..ba0d1254 100644 --- a/settings/common.py +++ b/settings/common.py @@ -257,6 +257,7 @@ INSTALLED_APPS = [ "django.contrib.messages", "django.contrib.admin", "django.contrib.staticfiles", + "django.contrib.sitemaps", "taiga.base", "taiga.base.api", @@ -449,9 +450,16 @@ BITBUCKET_VALID_ORIGIN_IPS = ["131.103.20.165", "131.103.20.166"] GITLAB_VALID_ORIGIN_IPS = [] EXPORTS_TTL = 60 * 60 * 24 # 24 hours + CELERY_ENABLED = False WEBHOOKS_ENABLED = False + +# If is True /front/sitemap.xml show a valid sitemap of taiga-front client +FRONT_SITEMAP_ENABLED = False +FRONT_SITEMAP_CACHE_TIMEOUT = 24*60*60 # In second + + from .sr import * diff --git a/settings/local.py.example b/settings/local.py.example index 2bc48b45..a74baa27 100644 --- a/settings/local.py.example +++ b/settings/local.py.example @@ -62,3 +62,8 @@ DATABASES = { #GITHUB_API_URL = "https://api.github.com/" #GITHUB_API_CLIENT_ID = "yourgithubclientid" #GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret" + +# SITEMAP +# If is True /front/sitemap.xml show a valid sitemap of taiga-front client +#FRONT_SITEMAP_ENABLED = False +#FRONT_SITEMAP_CACHE_TIMEOUT = 24*60*60 # In second diff --git a/taiga/base/fields.py b/taiga/base/fields.py index 63c7739a..07898ea2 100644 --- a/taiga/base/fields.py +++ b/taiga/base/fields.py @@ -49,6 +49,9 @@ class I18NJsonField(JsonField): def translate_values(self, d): i18n_d = {} + if d is None: + return d + for key, value in d.items(): if isinstance(value, dict): i18n_d[key] = self.translate_values(value) diff --git a/taiga/base/filters.py b/taiga/base/filters.py index 333b8125..208be999 100644 --- a/taiga/base/filters.py +++ b/taiga/base/filters.py @@ -364,6 +364,26 @@ class TagsFilter(FilterBackend): return super().filter_queryset(request, queryset, view) +class StatusFilter(FilterBackend): + def __init__(self, filter_name='status'): + self.filter_name = filter_name + + def _get_status_queryparams(self, params): + status = params.get(self.filter_name, None) + if status is not None: + status = set([x.strip() for x in status.split(",")]) + return list(status) + + return None + + def filter_queryset(self, request, queryset, view): + query_status = self._get_status_queryparams(request.QUERY_PARAMS) + if query_status: + queryset = queryset.filter(status__in=query_status) + + return super().filter_queryset(request, queryset, view) + + class QFilter(FilterBackend): def filter_queryset(self, request, queryset, view): q = request.QUERY_PARAMS.get('q', None) diff --git a/taiga/base/templates/emails/base-body-html.jinja b/taiga/base/templates/emails/base-body-html.jinja index 52a263f5..602bde96 100644 --- a/taiga/base/templates/emails/base-body-html.jinja +++ b/taiga/base/templates/emails/base-body-html.jinja @@ -121,7 +121,7 @@ .headerContent { text-align: center; - color:#b8b8b8 !important; + color:#8D8D8D !important; font-family: 'Open Sans', Arial, Helvetica; font-size:14px; margin-bottom:16px; diff --git a/taiga/base/templates/emails/hero-body-html.jinja b/taiga/base/templates/emails/hero-body-html.jinja index 349c3f2e..0439dcc8 100644 --- a/taiga/base/templates/emails/hero-body-html.jinja +++ b/taiga/base/templates/emails/hero-body-html.jinja @@ -60,7 +60,7 @@ * @style heading 2 */ h2{ - color: #b8b8b8 !important; + color: #8D8D8D !important; display:block; font-family: 'Open Sans', Arial; font-size:20px; diff --git a/taiga/base/templates/emails/updates-body-html.jinja b/taiga/base/templates/emails/updates-body-html.jinja index 4675b88a..86be9c92 100644 --- a/taiga/base/templates/emails/updates-body-html.jinja +++ b/taiga/base/templates/emails/updates-body-html.jinja @@ -121,7 +121,7 @@ .headerContent { text-align: center; - color:#b8b8b8 !important; + color:#8D8D8D !important; font-family: 'Open Sans', Arial, Helvetica; font-size:14px; margin-bottom:16px; @@ -418,14 +418,14 @@ {% for entry in history_entries%} {% if entry.comment %} -
{{ comment }}
- {% endtrans %} -{{ comment }}
+ {% endtrans %} +" +"
" "%(comment)s
\n" -" " +" " msgstr "" -"\n" -"%(comment)s
\n" -" " #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -1082,7 +1078,7 @@ msgstr "Amo" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "Projecte" @@ -1126,7 +1122,7 @@ msgstr "Descripció" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "Ordre" @@ -1148,7 +1144,7 @@ msgstr "" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "Nom" @@ -1371,7 +1367,7 @@ msgstr "referència externa" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "slug" @@ -1421,7 +1417,7 @@ msgstr "email" msgid "create at" msgstr "" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "token" @@ -2107,15 +2103,15 @@ msgstr "" msgid "The version must be an integer" msgstr "" -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "Versió" @@ -2131,43 +2127,43 @@ msgstr "Aquest e-mail ja està en ús" msgid "Invalid role for the project" msgstr "Rol invàlid per al projecte" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "Opcions per defecte" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "Estatus d'històries d'usuari" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "Punts" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "Estatus de tasques" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "Estatus d'incidéncies" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "Tipus d'incidéncies" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "Prioritats" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "Severitats" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "Rols" @@ -2653,57 +2649,57 @@ msgstr "Permissos" msgid "Important dates" msgstr "Dates importants" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "Nom d'usuari o email invàlid" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "Correu enviat satisfactòriament" -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "Token invàlid" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "Paràmetre de password actual requerit" -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "Paràmetre de password requerit" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 msgid "Invalid password length at least 6 charaters needed" msgstr "Password invàlid, al menys 6 caràcters requerits" -#: taiga/users/api.py:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "Password actual invàlid" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "Arguments incomplets." -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "Format d'image invàlid" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "Email duplicat" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "Email no vàlid" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "" "Invàlid. Estás segur que el token es correcte i que no l'has usat abans?" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "Invàlid. Estás segur que el token es correcte?" @@ -2761,22 +2757,26 @@ msgid "default language" msgstr "llenguatge per defecte" #: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 msgid "default timezone" msgstr "zona horaria per defecte" -#: taiga/users/models.py:124 +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "coloritza tags" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "token de correu" -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "nova adreça de correu" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "permissos" diff --git a/taiga/locale/en/LC_MESSAGES/django.po b/taiga/locale/en/LC_MESSAGES/django.po index 51f4decc..54e7762a 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: 2015-05-25 17:31+0200\n" +"POT-Creation-Date: 2015-06-09 09:47+0200\n" "PO-Revision-Date: 2015-03-25 20:09+0100\n" "Last-Translator: Taiga Dev Team" +"
" "%(comment)s
\n" -" " +" " msgstr "" #: taiga/base/templates/emails/updates-body-text.jinja:6 @@ -1051,7 +1051,7 @@ msgstr "" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "" @@ -1095,7 +1095,7 @@ msgstr "" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "" @@ -1117,7 +1117,7 @@ msgstr "" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "" @@ -1340,7 +1340,7 @@ msgstr "" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "" @@ -1390,7 +1390,7 @@ msgstr "" msgid "create at" msgstr "" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "" @@ -2070,15 +2070,15 @@ msgstr "" msgid "The version must be an integer" msgstr "" -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "" @@ -2094,43 +2094,43 @@ msgstr "" msgid "Invalid role for the project" msgstr "" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "" @@ -2596,56 +2596,56 @@ msgstr "" msgid "Important dates" msgstr "" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "" -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "" -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 msgid "Invalid password length at least 6 charaters needed" msgstr "" -#: taiga/users/api.py:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "" -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "" @@ -2699,22 +2699,26 @@ msgid "default language" msgstr "" #: taiga/users/models.py:122 -msgid "default timezone" +msgid "default theme" msgstr "" #: taiga/users/models.py:124 +msgid "default timezone" +msgstr "" + +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "" -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "" diff --git a/taiga/locale/es/LC_MESSAGES/django.po b/taiga/locale/es/LC_MESSAGES/django.po index 1886e115..23f5842e 100644 --- a/taiga/locale/es/LC_MESSAGES/django.po +++ b/taiga/locale/es/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-25 17:31+0200\n" -"PO-Revision-Date: 2015-05-25 15:50+0000\n" -"Last-Translator: David Barragán" +"
" "%(comment)s
\n" -" " +" " msgstr "" -"\n" -"%(comment)s
" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -1220,7 +1217,7 @@ msgstr "Dueño" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "Proyecto" @@ -1264,7 +1261,7 @@ msgstr "descripción" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "orden" @@ -1286,7 +1283,7 @@ msgstr "Talky" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "nombre" @@ -1509,7 +1506,7 @@ msgstr "referencia externa" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "slug" @@ -1561,7 +1558,7 @@ msgstr "email" msgid "create at" msgstr "creado el" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "token" @@ -2478,15 +2475,15 @@ msgstr "Los observadores tienen usuarios invalidos" msgid "The version must be an integer" msgstr "La versión debe ser un número entero" -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" -msgstr "La versión no es válida" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "Las version difiere de la actual" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "versión" @@ -2503,43 +2500,43 @@ msgstr "La dirección de email ya está en uso." msgid "Invalid role for the project" msgstr "Rol inválido para el proyecto" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "El número total de sprints debe ser mayor o igual a cero" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "Opciones por defecto" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "Estados de historia de usuario" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "Puntos" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "Estado de tareas" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "Estados de peticion" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "Tipos de petición" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "Prioridades" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "Gravedades" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "Roles" @@ -3059,57 +3056,57 @@ msgstr "Permisos" msgid "Important dates" msgstr "datos importántes" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "Nombre de usuario o email no válidos" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "¡Correo enviado con éxito!" -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "token inválido" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "La contraseña actual es obligatoria." -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "La nueva contraseña es obligatoria" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 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:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "Contraseña actual inválida" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "Argumentos incompletos" -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "Formato de imagen no válido" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "Email duplicado" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "Email no válido" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "" "Invalido, ¿estás seguro de que el token es correcto y no se ha usado antes?" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "Inválido, ¿estás seguro de que el token es correcto?" @@ -3167,22 +3164,26 @@ msgid "default language" msgstr "idioma por defecto" #: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 msgid "default timezone" msgstr "zona horaria por defecto" -#: taiga/users/models.py:124 +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "añade color a las etiquetas" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "token de email" -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "nueva dirección de email" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "permisos" diff --git a/taiga/locale/fi/LC_MESSAGES/django.po b/taiga/locale/fi/LC_MESSAGES/django.po index cad130a6..be67efcc 100644 --- a/taiga/locale/fi/LC_MESSAGES/django.po +++ b/taiga/locale/fi/LC_MESSAGES/django.po @@ -9,9 +9,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-25 17:31+0200\n" -"PO-Revision-Date: 2015-05-25 15:44+0000\n" -"Last-Translator: David Barragán" +"
" "%(comment)s
\n" -" " +" " msgstr "" -"\n" -"%(comment)s
" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -1210,7 +1207,7 @@ msgstr "omistaja" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "projekti" @@ -1254,7 +1251,7 @@ msgstr "kuvaus" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "order" @@ -1276,7 +1273,7 @@ msgstr "Talky" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "nimi" @@ -1499,7 +1496,7 @@ msgstr "ulkoinen viittaus" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "hukka-aika" @@ -1549,7 +1546,7 @@ msgstr "sähköposti" msgid "create at" msgstr "luo täällä" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "tunniste" @@ -2475,15 +2472,15 @@ msgstr "Vahdit sisältävät virheellisiä käyttäjiä" msgid "The version must be an integer" msgstr "Versio pitää olla kokonaisluku" -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" -msgstr "Versio on virheellinen" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "Versio ei ole sama kuin nykyinen" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "versio" @@ -2499,43 +2496,43 @@ msgstr "Sähköpostiosoite on jo käytössä" msgid "Invalid role for the project" msgstr "Virheellinen rooli projektille" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "Virstapylväitä yhteensä pitää olla vähintään 0." -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "Oletusoptiot" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "Käyttäjätarinatilat" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "Pisteet" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "Tehtävien tilat" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "Pyyntöjen tilat" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "pyyntötyypit" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "Kiireellisyydet" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "Vakavuudet" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "Roolit" @@ -3052,58 +3049,58 @@ msgstr "Oikeudet" msgid "Important dates" msgstr "Tärkeät päivämäärät" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "Tuntematon käyttäjänimi tai sähköposti" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "Sähköposti lähetetty." -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "Tunniste on virheellinen" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "Nykyinen salasanaparametri tarvitaan" -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "Uusi salasanaparametri tarvitaan" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 msgid "Invalid password length at least 6 charaters needed" msgstr "Salasanan pitää olla vähintään 6 merkkiä pitkä" -#: taiga/users/api.py:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "Virheellinen nykyinen salasana" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "Puutteelliset argumentit" -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "Väärä kuvaformaatti" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "Sähköposti on jo olemassa" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "Virheellinen sähköposti" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "" "Virheellinen. Oletko varma, että tunniste on oikea ja et ole jo käyttänyt " "sitä?" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "Virheellinen, oletko varma että tunniste on oikea?" @@ -3161,22 +3158,26 @@ msgid "default language" msgstr "oletuskieli" #: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 msgid "default timezone" msgstr "oletus aikavyöhyke" -#: taiga/users/models.py:124 +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "väritä avainsanat" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "sähköpostitunniste" -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "uusi sähköpostiosoite" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "oikeudet" diff --git a/taiga/locale/fr/LC_MESSAGES/django.po b/taiga/locale/fr/LC_MESSAGES/django.po index 7dbe32d4..a4481c97 100644 --- a/taiga/locale/fr/LC_MESSAGES/django.po +++ b/taiga/locale/fr/LC_MESSAGES/django.po @@ -5,15 +5,17 @@ # Translators: # Alain Poirier" +"
" "%(comment)s
\n" -" " +" " msgstr "" -"\n" -"%(comment)s
" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -484,7 +483,7 @@ msgstr "" #: taiga/export_import/api.py:103 msgid "We needed at least one role" -msgstr "" +msgstr "Veuillez sélectionner au moins un rôle." #: taiga/export_import/api.py:197 msgid "Needed dump file" @@ -496,15 +495,16 @@ msgstr "Format de dump invalide" #: taiga/export_import/dump_service.py:96 msgid "error importing project data" -msgstr "" +msgstr "Erreur lors de l'importation de données" #: taiga/export_import/dump_service.py:109 msgid "error importing lists of project attributes" -msgstr "" +msgstr "erreur lors de l'importation des listes des attributs de projet" #: taiga/export_import/dump_service.py:114 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 msgid "error importing custom attributes" @@ -520,7 +520,7 @@ msgstr "Erreur à l'importation des groupes d'utilisateurs" #: taiga/export_import/dump_service.py:149 msgid "error importing sprints" -msgstr "" +msgstr "Erreur lors de l'importation des sprints." #: taiga/export_import/dump_service.py:154 msgid "error importing wiki pages" @@ -540,11 +540,11 @@ msgstr "erreur à l'importation des histoires utilisateur" #: taiga/export_import/dump_service.py:174 msgid "error importing tasks" -msgstr "" +msgstr "Erreur lors de l'importation des tâches." #: taiga/export_import/dump_service.py:179 msgid "error importing tags" -msgstr "" +msgstr "erreur lors de l'importation des mots-clés" #: taiga/export_import/dump_service.py:183 msgid "error importing timelines" @@ -870,7 +870,7 @@ msgstr "" #: taiga/hooks/github/event_hooks.py:169 msgid "Issue created from GitHub." -msgstr "" +msgstr "Suivi de problème créé à partir de GitHub." #: taiga/hooks/github/event_hooks.py:178 taiga/hooks/github/event_hooks.py:193 msgid "Invalid issue comment information" @@ -1106,7 +1106,7 @@ msgstr "propriétaire" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "projet" @@ -1150,7 +1150,7 @@ msgstr "description" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "ordre" @@ -1172,7 +1172,7 @@ msgstr "Talky" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "nom" @@ -1395,7 +1395,7 @@ msgstr "référence externe" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "slug" @@ -1443,9 +1443,9 @@ msgstr "email" #: taiga/projects/models.py:61 msgid "create at" -msgstr "" +msgstr "Créé le" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "jeton" @@ -2131,15 +2131,15 @@ msgstr "La liste des observateurs contient des utilisateurs invalides" msgid "The version must be an integer" msgstr "La version doit être un nombre entier" -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" -msgstr "La version n'est pas valide" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "La version ne correspond pas à la version courante" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "version" @@ -2156,43 +2156,43 @@ msgstr "Adresse email déjà existante" msgid "Invalid role for the project" msgstr "Rôle non valide pour le projet" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "Le nombre de jalons doit être supérieur ou égal à zéro" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "Options par défaut" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "Etats de la User Story" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "Points" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "Etats des tâches" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "Statuts des problèmes" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "Types de problèmes" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "Priorités" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "Sévérités" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "Rôles" @@ -2689,58 +2689,58 @@ msgstr "Permissions" msgid "Important dates" msgstr "Dates importantes" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "Nom d'utilisateur ou email non valide" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "Mail envoyé avec succès!" -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "Jeton invalide" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "Paramètre 'mot de passe actuel' requis" -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "Paramètre 'nouveau mot de passe' requis" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 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:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "Mot de passe actuel incorrect" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "arguments manquants" -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "format de l'image non valide" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "Email dupliquée" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "Email non valide" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "" "Invalide, êtes-vous sûre que le jeton est correct et qu'il n'a pas déjà été " "utilisé ?" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "Invalide, êtes-vous sûre que le jeton est correct ?" @@ -2799,22 +2799,26 @@ msgid "default language" msgstr "langage par défaut" #: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 msgid "default timezone" msgstr "Fuseau horaire par défaut" -#: taiga/users/models.py:124 +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "changer la couleur des tags" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "jeton email" -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "nouvelle adresse email" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "permissions" diff --git a/taiga/locale/zh-Hant/LC_MESSAGES/django.po b/taiga/locale/zh-Hant/LC_MESSAGES/django.po index 4a887a52..39db28aa 100644 --- a/taiga/locale/zh-Hant/LC_MESSAGES/django.po +++ b/taiga/locale/zh-Hant/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: taiga-back\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-25 17:31+0200\n" -"PO-Revision-Date: 2015-05-25 15:44+0000\n" -"Last-Translator: David Barragán" +"
" "%(comment)s
\n" -" " +" " msgstr "" -"\n" -"%(comment)s
" #: taiga/base/templates/emails/updates-body-text.jinja:6 #, python-format @@ -1205,7 +1202,7 @@ msgstr "所有者" #: taiga/projects/models.py:507 taiga/projects/models.py:538 #: taiga/projects/notifications/models.py:69 taiga/projects/tasks/models.py:41 #: taiga/projects/userstories/models.py:62 taiga/projects/wiki/models.py:28 -#: taiga/projects/wiki/models.py:66 taiga/users/models.py:193 +#: taiga/projects/wiki/models.py:66 taiga/users/models.py:196 msgid "project" msgstr "專案" @@ -1249,7 +1246,7 @@ msgstr "描述" #: taiga/projects/models.py:391 taiga/projects/models.py:418 #: taiga/projects/models.py:453 taiga/projects/models.py:476 #: taiga/projects/models.py:501 taiga/projects/models.py:534 -#: taiga/projects/wiki/models.py:71 taiga/users/models.py:188 +#: taiga/projects/wiki/models.py:71 taiga/users/models.py:191 msgid "order" msgstr "次序" @@ -1271,7 +1268,7 @@ msgstr "Talky" #: taiga/projects/models.py:414 taiga/projects/models.py:451 #: taiga/projects/models.py:474 taiga/projects/models.py:497 #: taiga/projects/models.py:532 taiga/projects/models.py:555 -#: taiga/users/models.py:180 taiga/webhooks/models.py:27 +#: taiga/users/models.py:183 taiga/webhooks/models.py:27 msgid "name" msgstr "姓名" @@ -1494,7 +1491,7 @@ msgstr "外部參考" #: taiga/projects/milestones/models.py:37 taiga/projects/models.py:125 #: taiga/projects/models.py:352 taiga/projects/models.py:416 #: taiga/projects/models.py:499 taiga/projects/models.py:557 -#: taiga/projects/wiki/models.py:30 taiga/users/models.py:182 +#: taiga/projects/wiki/models.py:30 taiga/users/models.py:185 msgid "slug" msgstr "代稱" @@ -1544,7 +1541,7 @@ msgstr "電子郵件" msgid "create at" msgstr "創建於" -#: taiga/projects/models.py:63 taiga/users/models.py:126 +#: taiga/projects/models.py:63 taiga/users/models.py:128 msgid "token" msgstr "代號" @@ -2474,15 +2471,15 @@ msgstr "監督者包含無效使用者" msgid "The version must be an integer" msgstr "版本須為整數值 " -#: taiga/projects/occ/mixins.py:56 -msgid "The version is not valid" -msgstr "版本無效" +#: taiga/projects/occ/mixins.py:58 +msgid "The version parameter is not valid" +msgstr "" -#: taiga/projects/occ/mixins.py:72 +#: taiga/projects/occ/mixins.py:74 msgid "The version doesn't match with the current one" msgstr "版本與目前使用不相符" -#: taiga/projects/occ/mixins.py:92 +#: taiga/projects/occ/mixins.py:93 msgid "version" msgstr "版本" @@ -2498,43 +2495,43 @@ msgstr "電子郵件已使用" msgid "Invalid role for the project" msgstr "專案無效的角色" -#: taiga/projects/serializers.py:343 +#: taiga/projects/serializers.py:340 msgid "Total milestones must be major or equal to zero" msgstr "Kanban" -#: taiga/projects/serializers.py:400 +#: taiga/projects/serializers.py:402 msgid "Default options" msgstr "預設選項" -#: taiga/projects/serializers.py:401 +#: taiga/projects/serializers.py:403 msgid "User story's statuses" msgstr "使用者故事狀態" -#: taiga/projects/serializers.py:402 +#: taiga/projects/serializers.py:404 msgid "Points" msgstr "點數" -#: taiga/projects/serializers.py:403 +#: taiga/projects/serializers.py:405 msgid "Task's statuses" msgstr "任務狀態" -#: taiga/projects/serializers.py:404 +#: taiga/projects/serializers.py:406 msgid "Issue's statuses" msgstr "問題狀態" -#: taiga/projects/serializers.py:405 +#: taiga/projects/serializers.py:407 msgid "Issue's types" msgstr "問題類型" -#: taiga/projects/serializers.py:406 +#: taiga/projects/serializers.py:408 msgid "Priorities" msgstr "優先性" -#: taiga/projects/serializers.py:407 +#: taiga/projects/serializers.py:409 msgid "Severities" msgstr "嚴重性" -#: taiga/projects/serializers.py:408 +#: taiga/projects/serializers.py:410 msgid "Roles" msgstr "角色" @@ -3043,56 +3040,56 @@ msgstr "許可" msgid "Important dates" msgstr "重要日期" -#: taiga/users/api.py:112 taiga/users/api.py:119 +#: taiga/users/api.py:124 taiga/users/api.py:131 msgid "Invalid username or email" msgstr "無效使用者或郵件" -#: taiga/users/api.py:128 +#: taiga/users/api.py:140 msgid "Mail sended successful!" msgstr "成功送出郵件" -#: taiga/users/api.py:140 taiga/users/api.py:145 +#: taiga/users/api.py:152 taiga/users/api.py:157 msgid "Token is invalid" msgstr "代號無效" -#: taiga/users/api.py:166 +#: taiga/users/api.py:178 msgid "Current password parameter needed" msgstr "需要目前密碼之參數" -#: taiga/users/api.py:169 +#: taiga/users/api.py:181 msgid "New password parameter needed" msgstr "需要新密碼參數" -#: taiga/users/api.py:172 +#: taiga/users/api.py:184 msgid "Invalid password length at least 6 charaters needed" msgstr "無效密碼長度,至少需6個字元" -#: taiga/users/api.py:175 +#: taiga/users/api.py:187 msgid "Invalid current password" msgstr "無效密碼" -#: taiga/users/api.py:191 +#: taiga/users/api.py:203 msgid "Incomplete arguments" msgstr "不完整參數" -#: taiga/users/api.py:196 +#: taiga/users/api.py:208 msgid "Invalid image format" msgstr "無效的圖片檔案" -#: taiga/users/api.py:249 +#: taiga/users/api.py:261 msgid "Duplicated email" msgstr "複製電子郵件" -#: taiga/users/api.py:251 +#: taiga/users/api.py:263 msgid "Not valid email" msgstr "非有效電子郵性" -#: taiga/users/api.py:271 taiga/users/api.py:277 +#: taiga/users/api.py:283 taiga/users/api.py:289 msgid "" "Invalid, are you sure the token is correct and you didn't use it before?" msgstr "無效,請確認代號正確,之前是否曾使用過?" -#: taiga/users/api.py:304 taiga/users/api.py:312 taiga/users/api.py:315 +#: taiga/users/api.py:316 taiga/users/api.py:324 taiga/users/api.py:327 msgid "Invalid, are you sure the token is correct?" msgstr "無效,請確認代號是否正確?" @@ -3146,22 +3143,26 @@ msgid "default language" msgstr "預設語言 " #: taiga/users/models.py:122 +msgid "default theme" +msgstr "" + +#: taiga/users/models.py:124 msgid "default timezone" msgstr "預設時區" -#: taiga/users/models.py:124 +#: taiga/users/models.py:126 msgid "colorize tags" msgstr "顏色標籤" -#: taiga/users/models.py:129 +#: taiga/users/models.py:131 msgid "email token" msgstr "電子郵件符號 " -#: taiga/users/models.py:131 +#: taiga/users/models.py:133 msgid "new email address" msgstr "新電子郵件地址" -#: taiga/users/models.py:185 +#: taiga/users/models.py:188 msgid "permissions" msgstr "許可" diff --git a/taiga/mdrender/extensions/mentions.py b/taiga/mdrender/extensions/mentions.py index 4c243910..0664bd94 100644 --- a/taiga/mdrender/extensions/mentions.py +++ b/taiga/mdrender/extensions/mentions.py @@ -25,22 +25,22 @@ from markdown.extensions import Extension from markdown.inlinepatterns import Pattern -from markdown.util import etree +from markdown.util import etree, AtomicString from taiga.users.models import User class MentionsExtension(Extension): def extendMarkdown(self, md, md_globals): - MENTION_RE = r'(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9-]+)' + MENTION_RE = r'(@)([a-z0-9.-\.]+)' mentionsPattern = MentionsPattern(MENTION_RE) mentionsPattern.md = md - md.inlinePatterns.add('mentions', mentionsPattern, '_begin') + md.inlinePatterns.add('mentions', mentionsPattern, '_end') class MentionsPattern(Pattern): def handleMatch(self, m): - username = m.group(2) + username = m.group(3) try: user = User.objects.get(username=username) @@ -49,10 +49,11 @@ class MentionsPattern(Pattern): url = "/profile/{}".format(username) - link_text = "@{}".format(username) + link_text = "@{}".format(username) a = etree.Element('a') - a.text = link_text + a.text = AtomicString(link_text) + a.set('href', url) a.set('title', user.get_full_name()) a.set('class', "mention") diff --git a/taiga/mdrender/extensions/references.py b/taiga/mdrender/extensions/references.py index 28f81a50..d472d663 100644 --- a/taiga/mdrender/extensions/references.py +++ b/taiga/mdrender/extensions/references.py @@ -28,7 +28,7 @@ from markdown.inlinepatterns import Pattern from markdown.util import etree from taiga.projects.references.services import get_instance_by_ref -from taiga.front import resolve +from taiga.front.templatetags.functions import resolve class TaigaReferencesExtension(Extension): diff --git a/taiga/mdrender/extensions/target_link.py b/taiga/mdrender/extensions/target_link.py index 26cc6a5f..992399ea 100644 --- a/taiga/mdrender/extensions/target_link.py +++ b/taiga/mdrender/extensions/target_link.py @@ -21,7 +21,7 @@ import markdown from markdown.treeprocessors import Treeprocessor -from taiga.front import resolve +from taiga.front.templatetags.functions import resolve class TargetBlankLinkExtension(markdown.Extension): diff --git a/taiga/mdrender/extensions/wikilinks.py b/taiga/mdrender/extensions/wikilinks.py index 1c16ae54..1fd703b3 100644 --- a/taiga/mdrender/extensions/wikilinks.py +++ b/taiga/mdrender/extensions/wikilinks.py @@ -21,7 +21,7 @@ from markdown.treeprocessors import Treeprocessor from markdown.util import etree -from taiga.front import resolve +from taiga.front.templatetags.functions import resolve from taiga.base.utils.slug import slugify import re diff --git a/taiga/projects/history/templates/emails/includes/fields_diff-html.jinja b/taiga/projects/history/templates/emails/includes/fields_diff-html.jinja index 88b56f41..4c99f755 100644 --- a/taiga/projects/history/templates/emails/includes/fields_diff-html.jinja +++ b/taiga/projects/history/templates/emails/includes/fields_diff-html.jinja @@ -96,7 +96,7 @@ {% set values_removed = lists_diff(values_from, values_to) %}