From 604ca69b9f6aabb273b1144194daa24390454373 Mon Sep 17 00:00:00 2001 From: jbpenrath Date: Wed, 22 May 2024 11:23:15 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=96(minor)=20bump=20to=202.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added - BO : Highlight graded target courses in product detail view - Add `payment_schedule` property to `OrderSerializer` - Allow to filter enrollment through `is_active` field on the client API - Add the possibility to add a syllabus inside the product form - Add a command to trigger the daily due payments Changed - Complete Lyra payment creation payload Fixed - Lyra backend save card logic - Manage invalid logging secret key - Accesses list layout - Product target course layout - Update DatePicker with keyboard - Order view when organization is not defined --- CHANGELOG.md | 5 +- arnold.yml | 2 +- .../locale/es_ES/LC_MESSAGES/django.mo | Bin 613 -> 613 bytes .../locale/es_ES/LC_MESSAGES/django.po | 270 ++++++++++-------- .../locale/fr_CA/LC_MESSAGES/django.mo | Bin 631 -> 631 bytes .../locale/fr_CA/LC_MESSAGES/django.po | 270 ++++++++++-------- .../locale/fr_FR/LC_MESSAGES/django.mo | Bin 34161 -> 34625 bytes .../locale/fr_FR/LC_MESSAGES/django.po | 270 ++++++++++-------- src/backend/pyproject.toml | 2 +- src/frontend/admin/i18n/locales/es-ES.json | 16 ++ src/frontend/admin/i18n/locales/fr-CA.json | 16 ++ src/frontend/admin/i18n/locales/fr-FR.json | 18 +- src/frontend/admin/package.json | 2 +- .../admin/src/translations/es-ES.json | 4 + .../admin/src/translations/fr-CA.json | 4 + .../admin/src/translations/fr-FR.json | 6 +- src/tray/tray.yml | 2 +- src/tray/vars/all/main.yml | 4 +- 18 files changed, 513 insertions(+), 378 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b287214f..6cda1bd8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to ## [Unreleased] +## [2.2.0] - 2024-05-22 + ### Added - BO : Highlight graded target courses in product detail view @@ -316,7 +318,8 @@ and this project adheres to - First working version serving sellable micro-credentials for multiple organizations synchronized to a remote catalog -[unreleased]: https://github.com/openfun/joanie/compare/v2.1.0...main +[unreleased]: https://github.com/openfun/joanie/compare/v2.2.0...main +[2.2.0]: https://github.com/openfun/joanie/compare/v2.1.0...v2.2.0 [2.1.0]: https://github.com/openfun/joanie/compare/v2.0.1...v2.1.0 [2.0.1]: https://github.com/openfun/joanie/compare/v2.0.0...v2.0.1 [2.0.0]: https://github.com/openfun/joanie/compare/v1.2.0...v2.0.0 diff --git a/arnold.yml b/arnold.yml index 9fa47d56e..85aa2691f 100644 --- a/arnold.yml +++ b/arnold.yml @@ -1,6 +1,6 @@ # arnold.yml metadata: name: joanie - version: 2.1.0 + version: 2.2.0 source: path: src/tray diff --git a/src/backend/locale/es_ES/LC_MESSAGES/django.mo b/src/backend/locale/es_ES/LC_MESSAGES/django.mo index c1e058fb508a2d98faa5e82f663af0cd49f7a99b..d2ad57a9c654068bb8cfe7ac065f8d5cfd50738d 100755 GIT binary patch delta 19 acmaFL@|0!5BMu`Y1p`YfBg2iasu=-EX$I~9 delta 19 acmaFL@|0!5BMt*&1p{*{Ba4l%su=-EZwB%J diff --git a/src/backend/locale/es_ES/LC_MESSAGES/django.po b/src/backend/locale/es_ES/LC_MESSAGES/django.po index 06e811081..36f817f5a 100644 --- a/src/backend/locale/es_ES/LC_MESSAGES/django.po +++ b/src/backend/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: joanie\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-02 15:32+0000\n" -"PO-Revision-Date: 2024-05-03 07:28\n" +"POT-Creation-Date: 2024-05-22 07:36+0000\n" +"PO-Revision-Date: 2024-05-22 09:21\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -114,7 +114,7 @@ msgstr[1] "" msgid "Course" msgstr "" -#: joanie/core/admin.py:71 joanie/core/models/products.py:106 +#: joanie/core/admin.py:71 joanie/core/models/products.py:107 #: joanie/core/templates/issuers/invoice.html:78 msgid "Product" msgstr "" @@ -198,114 +198,134 @@ msgstr "" msgid "Credential" msgstr "" -#: joanie/core/enums.py:34 joanie/core/enums.py:131 +#: joanie/core/enums.py:34 joanie/core/enums.py:151 #: joanie/core/models/courses.py:1014 msgid "Enrollment" msgstr "" -#: joanie/core/enums.py:37 joanie/core/enums.py:122 +#: joanie/core/enums.py:37 joanie/core/enums.py:142 #: joanie/core/models/certifications.py:116 #: joanie/core/templates/issuers/degree.html:27 msgid "Certificate" msgstr "" -#: joanie/core/enums.py:67 +#: joanie/core/enums.py:71 msgid "Draft" msgstr "" -#: joanie/core/enums.py:68 +#: joanie/core/enums.py:72 msgid "Submitted" msgstr "" -#: joanie/core/enums.py:69 joanie/core/enums.py:163 +#: joanie/core/enums.py:73 joanie/core/enums.py:183 msgid "Pending" msgstr "" -#: joanie/core/enums.py:70 +#: joanie/core/enums.py:74 msgctxt "As in: the order is cancelled." msgid "Canceled" msgstr "" -#: joanie/core/enums.py:73 +#: joanie/core/enums.py:77 msgctxt "As in: the order is validated." msgid "Validated" msgstr "" -#: joanie/core/enums.py:90 +#: joanie/core/enums.py:81 +msgctxt "As in: the order payment is pending." +msgid "Pending payment" +msgstr "" + +#: joanie/core/enums.py:85 +msgctxt "As in: the last order payment has failed." +msgid "Failed payment" +msgstr "" + +#: joanie/core/enums.py:89 +msgctxt "As in: the first order payment has failed." +msgid "No payment" +msgstr "" + +#: joanie/core/enums.py:93 +msgctxt "As in: the order is completed." +msgid "Completed" +msgstr "" + +#: joanie/core/enums.py:110 msgctxt "As in: the enrollment was successfully set on the LMS." msgid "Set" msgstr "" -#: joanie/core/enums.py:94 +#: joanie/core/enums.py:114 msgctxt "As in: the enrollment failed on the LMS." msgid "Failed" msgstr "" -#: joanie/core/enums.py:101 +#: joanie/core/enums.py:121 msgid "Contract Definition" msgstr "" -#: joanie/core/enums.py:109 +#: joanie/core/enums.py:129 msgid "Unsigned" msgstr "" -#: joanie/core/enums.py:112 +#: joanie/core/enums.py:132 msgid "Partially signed" msgstr "" -#: joanie/core/enums.py:114 +#: joanie/core/enums.py:134 msgid "Signed" msgstr "" -#: joanie/core/enums.py:123 +#: joanie/core/enums.py:143 msgid "Degree" msgstr "" -#: joanie/core/enums.py:130 joanie/core/models/products.py:500 +#: joanie/core/enums.py:150 joanie/core/models/products.py:518 msgid "Order" msgstr "" -#: joanie/core/enums.py:141 +#: joanie/core/enums.py:161 msgid "Info" msgstr "" -#: joanie/core/enums.py:142 +#: joanie/core/enums.py:162 msgid "Success" msgstr "" -#: joanie/core/enums.py:143 +#: joanie/core/enums.py:163 msgid "Warning" msgstr "" -#: joanie/core/enums.py:144 +#: joanie/core/enums.py:164 msgid "Error" msgstr "" -#: joanie/core/enums.py:153 +#: joanie/core/enums.py:173 msgid "Notification" msgstr "" -#: joanie/core/enums.py:154 +#: joanie/core/enums.py:174 msgid "Payment succeeded" msgstr "" -#: joanie/core/enums.py:155 +#: joanie/core/enums.py:175 msgid "Payment failed" msgstr "" -#: joanie/core/enums.py:164 joanie/payment/enums.py:28 +#: joanie/core/enums.py:184 joanie/payment/enums.py:28 msgid "Paid" msgstr "" -#: joanie/core/enums.py:165 +#: joanie/core/enums.py:185 msgid "Refused" msgstr "" -#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:104 +#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:107 msgid "" msgstr "" -#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:105 +#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:108 msgid "" msgstr "" @@ -392,7 +412,7 @@ msgstr "" #: joanie/core/models/accounts.py:154 joanie/core/models/certifications.py:33 #: joanie/core/models/contracts.py:29 joanie/core/models/courses.py:170 #: joanie/core/models/courses.py:470 joanie/core/models/courses.py:783 -#: joanie/core/models/products.py:67 joanie/payment/models.py:360 +#: joanie/core/models/products.py:68 joanie/payment/models.py:367 msgid "title" msgstr "" @@ -421,17 +441,17 @@ msgid "last name" msgstr "" #: joanie/core/models/accounts.py:163 joanie/core/models/courses.py:357 -#: joanie/core/models/courses.py:587 joanie/core/models/products.py:445 -#: joanie/payment/models.py:369 +#: joanie/core/models/courses.py:587 joanie/core/models/products.py:463 +#: joanie/payment/models.py:376 msgid "owner" msgstr "" #: joanie/core/models/accounts.py:171 joanie/core/models/certifications.py:97 -#: joanie/core/models/products.py:388 +#: joanie/core/models/products.py:406 msgid "organization" msgstr "" -#: joanie/core/models/accounts.py:177 joanie/payment/models.py:373 +#: joanie/core/models/accounts.py:177 joanie/payment/models.py:380 msgid "main" msgstr "" @@ -473,7 +493,7 @@ msgstr "" msgid "context" msgstr "" -#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:64 +#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:65 msgid "type" msgstr "" @@ -530,7 +550,7 @@ msgid "name" msgstr "" #: joanie/core/models/certifications.py:34 joanie/core/models/contracts.py:30 -#: joanie/core/models/products.py:68 +#: joanie/core/models/products.py:69 msgid "description" msgstr "" @@ -552,11 +572,11 @@ msgid "Date of issuance" msgstr "" #: joanie/core/models/certifications.py:82 joanie/core/models/contracts.py:80 -#: joanie/core/models/products.py:1093 joanie/payment/models.py:54 +#: joanie/core/models/products.py:1127 joanie/payment/models.py:54 msgid "order" msgstr "" -#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:410 +#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:428 msgid "enrollment" msgstr "" @@ -585,7 +605,7 @@ msgid "template name" msgstr "" #: joanie/core/models/contracts.py:48 joanie/core/models/contracts.py:73 -#: joanie/core/models/products.py:98 +#: joanie/core/models/products.py:99 msgid "Contract definition" msgstr "" @@ -790,13 +810,13 @@ msgid "Course accesses" msgstr "" #: joanie/core/models/courses.py:705 joanie/core/models/courses.py:777 -#: joanie/core/models/products.py:274 joanie/core/models/products.py:403 -#: joanie/core/models/products.py:1081 +#: joanie/core/models/products.py:275 joanie/core/models/products.py:421 +#: joanie/core/models/products.py:1115 msgid "course" msgstr "" -#: joanie/core/models/courses.py:711 joanie/core/models/products.py:280 -#: joanie/core/models/products.py:395 +#: joanie/core/models/courses.py:711 joanie/core/models/products.py:281 +#: joanie/core/models/products.py:413 msgid "product" msgstr "" @@ -908,164 +928,164 @@ msgstr "" msgid "You are not allowed to enroll to a course run not listed." msgstr "" -#: joanie/core/models/products.py:69 +#: joanie/core/models/products.py:70 msgid "instructions" msgstr "" -#: joanie/core/models/products.py:70 +#: joanie/core/models/products.py:71 msgid "call to action" msgstr "" -#: joanie/core/models/products.py:77 +#: joanie/core/models/products.py:78 msgid "target courses" msgstr "" -#: joanie/core/models/products.py:81 joanie/core/models/products.py:434 +#: joanie/core/models/products.py:82 joanie/core/models/products.py:452 msgid "price" msgstr "" -#: joanie/core/models/products.py:82 joanie/core/models/products.py:436 +#: joanie/core/models/products.py:83 joanie/core/models/products.py:454 msgid "tax included" msgstr "" -#: joanie/core/models/products.py:91 +#: joanie/core/models/products.py:92 msgid "certificate definition" msgstr "" -#: joanie/core/models/products.py:107 +#: joanie/core/models/products.py:108 msgid "Products" msgstr "" -#: joanie/core/models/products.py:254 +#: joanie/core/models/products.py:255 msgid "Certificate definition is only allowed for product kinds: " msgstr "" -#: joanie/core/models/products.py:289 joanie/core/models/products.py:1087 +#: joanie/core/models/products.py:290 joanie/core/models/products.py:1121 msgid "course runs" msgstr "" -#: joanie/core/models/products.py:292 +#: joanie/core/models/products.py:293 msgid "position in product" msgstr "" -#: joanie/core/models/products.py:294 joanie/core/models/products.py:1099 +#: joanie/core/models/products.py:295 joanie/core/models/products.py:1133 msgid "take into account for certification" msgstr "" -#: joanie/core/models/products.py:295 joanie/core/models/products.py:1100 +#: joanie/core/models/products.py:296 joanie/core/models/products.py:1134 msgid "Take into account the course grade for certification." msgstr "" -#: joanie/core/models/products.py:303 +#: joanie/core/models/products.py:304 msgid "Target course relation to a product with a position" msgstr "" -#: joanie/core/models/products.py:304 +#: joanie/core/models/products.py:305 msgid "Target courses relations to products with a position" msgstr "" -#: joanie/core/models/products.py:335 +#: joanie/core/models/products.py:336 msgid "Number of seats" msgstr "" -#: joanie/core/models/products.py:337 +#: joanie/core/models/products.py:338 msgid "The maximum number of orders that can be validated for a given order group" msgstr "" -#: joanie/core/models/products.py:342 +#: joanie/core/models/products.py:343 msgid "course product relation" msgstr "" -#: joanie/core/models/products.py:346 +#: joanie/core/models/products.py:347 msgid "is active" msgstr "" -#: joanie/core/models/products.py:419 +#: joanie/core/models/products.py:437 msgid "order group" msgstr "" -#: joanie/core/models/products.py:430 +#: joanie/core/models/products.py:448 msgid "courses" msgstr "" -#: joanie/core/models/products.py:451 +#: joanie/core/models/products.py:469 msgid "has consent to terms" msgstr "" -#: joanie/core/models/products.py:454 +#: joanie/core/models/products.py:472 msgid "User has consented to the platform terms and conditions." msgstr "" -#: joanie/core/models/products.py:462 +#: joanie/core/models/products.py:480 msgid "payment schedule" msgstr "" -#: joanie/core/models/products.py:463 +#: joanie/core/models/products.py:481 msgid "Payment schedule for the order." msgstr "" -#: joanie/core/models/products.py:501 +#: joanie/core/models/products.py:519 msgid "Orders" msgstr "" -#: joanie/core/models/products.py:586 +#: joanie/core/models/products.py:604 #, python-brace-format msgid "{required_field} field should be set for {self.product.type} products." msgstr "" -#: joanie/core/models/products.py:592 +#: joanie/core/models/products.py:610 #, python-brace-format msgid "{empty_field} field should be left empty for {self.product.type} products." msgstr "" -#: joanie/core/models/products.py:599 +#: joanie/core/models/products.py:617 msgid "The enrollment should belong to the owner of this order." msgstr "" -#: joanie/core/models/products.py:604 +#: joanie/core/models/products.py:622 msgid "Orders can't be placed on enrollments originating from an order." msgstr "" -#: joanie/core/models/products.py:613 +#: joanie/core/models/products.py:631 msgid "The order cannot be generated on course run that is in archived state." msgstr "" -#: joanie/core/models/products.py:632 +#: joanie/core/models/products.py:650 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\", " msgstr "" -#: joanie/core/models/products.py:638 +#: joanie/core/models/products.py:656 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\" and " msgstr "" -#: joanie/core/models/products.py:832 +#: joanie/core/models/products.py:850 #, python-brace-format msgid "Product {self.product.title} does not allow to generate a certificate." msgstr "" -#: joanie/core/models/products.py:847 +#: joanie/core/models/products.py:865 msgid "No graded courses found." msgstr "" -#: joanie/core/models/products.py:863 +#: joanie/core/models/products.py:881 msgid "This order is not ready for gradation." msgstr "" -#: joanie/core/models/products.py:873 +#: joanie/core/models/products.py:891 msgid "Course run " msgstr "" -#: joanie/core/models/products.py:1097 +#: joanie/core/models/products.py:1131 msgid "position in order" msgstr "" -#: joanie/core/models/products.py:1108 +#: joanie/core/models/products.py:1142 msgid "Course relation to an order with a position" msgstr "" -#: joanie/core/models/products.py:1109 +#: joanie/core/models/products.py:1143 msgid "Courses relations to orders with a position" msgstr "" @@ -1113,7 +1133,7 @@ msgstr "" msgid "You are not allowed to manage accesses for this organization." msgstr "" -#: joanie/core/serializers/client.py:756 +#: joanie/core/serializers/client.py:1164 msgid "You must accept the terms and conditions to proceed." msgstr "" @@ -1443,143 +1463,143 @@ msgstr "" msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]" msgstr "" -#: joanie/core/utils/contract_definition.py:14 +#: joanie/core/utils/contract_definition.py:17 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:15 +#: joanie/core/utils/contract_definition.py:18 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:16 +#: joanie/core/utils/contract_definition.py:19 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:17 +#: joanie/core/utils/contract_definition.py:20 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:18 +#: joanie/core/utils/contract_definition.py:21 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:19 +#: joanie/core/utils/contract_definition.py:22 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:20 +#: joanie/core/utils/contract_definition.py:23 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:26 +#: joanie/core/utils/contract_definition.py:29 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:27 +#: joanie/core/utils/contract_definition.py:30 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:28 +#: joanie/core/utils/contract_definition.py:31 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:29 +#: joanie/core/utils/contract_definition.py:32 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:30 +#: joanie/core/utils/contract_definition.py:33 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:31 +#: joanie/core/utils/contract_definition.py:34 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:32 +#: joanie/core/utils/contract_definition.py:35 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:90 +#: joanie/core/utils/contract_definition.py:93 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:91 +#: joanie/core/utils/contract_definition.py:94 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:92 +#: joanie/core/utils/contract_definition.py:95 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:93 +#: joanie/core/utils/contract_definition.py:96 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:94 +#: joanie/core/utils/contract_definition.py:97 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:95 +#: joanie/core/utils/contract_definition.py:98 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:96 +#: joanie/core/utils/contract_definition.py:99 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:97 +#: joanie/core/utils/contract_definition.py:100 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:98 +#: joanie/core/utils/contract_definition.py:101 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:99 +#: joanie/core/utils/contract_definition.py:102 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:102 +#: joanie/core/utils/contract_definition.py:105 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:103 +#: joanie/core/utils/contract_definition.py:106 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:106 +#: joanie/core/utils/contract_definition.py:109 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:107 +#: joanie/core/utils/contract_definition.py:110 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:109 +#: joanie/core/utils/contract_definition.py:112 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:110 +#: joanie/core/utils/contract_definition.py:113 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:111 +#: joanie/core/utils/contract_definition.py:114 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:114 +#: joanie/core/utils/contract_definition.py:117 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:115 +#: joanie/core/utils/contract_definition.py:118 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:116 +#: joanie/core/utils/contract_definition.py:119 msgid "" msgstr "" -#: joanie/payment/admin.py:204 +#: joanie/payment/admin.py:229 msgid "To get results, choose an owner on the right" msgstr "" @@ -1587,7 +1607,7 @@ msgstr "" msgid "Joanie payment application" msgstr "Solicitud de pago Joanie" -#: joanie/payment/backends/base.py:77 joanie/payment/backends/base.py:93 +#: joanie/payment/backends/base.py:87 joanie/payment/backends/base.py:103 msgid "Purchase order confirmed!" msgstr "" @@ -1660,22 +1680,26 @@ msgid "Transactions" msgstr "" #: joanie/payment/models.py:361 +msgid "initial issuer transaction identifier" +msgstr "" + +#: joanie/payment/models.py:368 msgid "brand" msgstr "" -#: joanie/payment/models.py:363 +#: joanie/payment/models.py:370 msgid "expiration month" msgstr "" -#: joanie/payment/models.py:365 +#: joanie/payment/models.py:372 msgid "expiration year" msgstr "" -#: joanie/payment/models.py:366 +#: joanie/payment/models.py:373 msgid "last 4 numbers" msgstr "" -#: joanie/payment/models.py:403 +#: joanie/payment/models.py:410 msgid "Demote a main credit card is forbidden" msgstr "" diff --git a/src/backend/locale/fr_CA/LC_MESSAGES/django.mo b/src/backend/locale/fr_CA/LC_MESSAGES/django.mo index 51986d330e4a8ff290e609cf7409da4b37f21e24..0cb3eb71345d842c8abdb30c6a92a35145ff05e8 100755 GIT binary patch delta 19 acmey)@||VEBMu`Y1p`YfBg2iadKm#s6$c~$ delta 19 acmey)@||VEBMt*&1p{*{Ba4l%dKm#s8wV%= diff --git a/src/backend/locale/fr_CA/LC_MESSAGES/django.po b/src/backend/locale/fr_CA/LC_MESSAGES/django.po index 39fa7e3a8..e2e978531 100644 --- a/src/backend/locale/fr_CA/LC_MESSAGES/django.po +++ b/src/backend/locale/fr_CA/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: joanie\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-02 15:32+0000\n" -"PO-Revision-Date: 2024-05-03 07:28\n" +"POT-Creation-Date: 2024-05-22 07:36+0000\n" +"PO-Revision-Date: 2024-05-22 09:21\n" "Last-Translator: \n" "Language-Team: French, Canada\n" "Language: fr_CA\n" @@ -114,7 +114,7 @@ msgstr[1] "" msgid "Course" msgstr "" -#: joanie/core/admin.py:71 joanie/core/models/products.py:106 +#: joanie/core/admin.py:71 joanie/core/models/products.py:107 #: joanie/core/templates/issuers/invoice.html:78 msgid "Product" msgstr "" @@ -198,114 +198,134 @@ msgstr "" msgid "Credential" msgstr "" -#: joanie/core/enums.py:34 joanie/core/enums.py:131 +#: joanie/core/enums.py:34 joanie/core/enums.py:151 #: joanie/core/models/courses.py:1014 msgid "Enrollment" msgstr "" -#: joanie/core/enums.py:37 joanie/core/enums.py:122 +#: joanie/core/enums.py:37 joanie/core/enums.py:142 #: joanie/core/models/certifications.py:116 #: joanie/core/templates/issuers/degree.html:27 msgid "Certificate" msgstr "" -#: joanie/core/enums.py:67 +#: joanie/core/enums.py:71 msgid "Draft" msgstr "" -#: joanie/core/enums.py:68 +#: joanie/core/enums.py:72 msgid "Submitted" msgstr "" -#: joanie/core/enums.py:69 joanie/core/enums.py:163 +#: joanie/core/enums.py:73 joanie/core/enums.py:183 msgid "Pending" msgstr "" -#: joanie/core/enums.py:70 +#: joanie/core/enums.py:74 msgctxt "As in: the order is cancelled." msgid "Canceled" msgstr "" -#: joanie/core/enums.py:73 +#: joanie/core/enums.py:77 msgctxt "As in: the order is validated." msgid "Validated" msgstr "" -#: joanie/core/enums.py:90 +#: joanie/core/enums.py:81 +msgctxt "As in: the order payment is pending." +msgid "Pending payment" +msgstr "" + +#: joanie/core/enums.py:85 +msgctxt "As in: the last order payment has failed." +msgid "Failed payment" +msgstr "" + +#: joanie/core/enums.py:89 +msgctxt "As in: the first order payment has failed." +msgid "No payment" +msgstr "" + +#: joanie/core/enums.py:93 +msgctxt "As in: the order is completed." +msgid "Completed" +msgstr "" + +#: joanie/core/enums.py:110 msgctxt "As in: the enrollment was successfully set on the LMS." msgid "Set" msgstr "" -#: joanie/core/enums.py:94 +#: joanie/core/enums.py:114 msgctxt "As in: the enrollment failed on the LMS." msgid "Failed" msgstr "" -#: joanie/core/enums.py:101 +#: joanie/core/enums.py:121 msgid "Contract Definition" msgstr "" -#: joanie/core/enums.py:109 +#: joanie/core/enums.py:129 msgid "Unsigned" msgstr "" -#: joanie/core/enums.py:112 +#: joanie/core/enums.py:132 msgid "Partially signed" msgstr "" -#: joanie/core/enums.py:114 +#: joanie/core/enums.py:134 msgid "Signed" msgstr "" -#: joanie/core/enums.py:123 +#: joanie/core/enums.py:143 msgid "Degree" msgstr "" -#: joanie/core/enums.py:130 joanie/core/models/products.py:500 +#: joanie/core/enums.py:150 joanie/core/models/products.py:518 msgid "Order" msgstr "" -#: joanie/core/enums.py:141 +#: joanie/core/enums.py:161 msgid "Info" msgstr "" -#: joanie/core/enums.py:142 +#: joanie/core/enums.py:162 msgid "Success" msgstr "" -#: joanie/core/enums.py:143 +#: joanie/core/enums.py:163 msgid "Warning" msgstr "" -#: joanie/core/enums.py:144 +#: joanie/core/enums.py:164 msgid "Error" msgstr "" -#: joanie/core/enums.py:153 +#: joanie/core/enums.py:173 msgid "Notification" msgstr "" -#: joanie/core/enums.py:154 +#: joanie/core/enums.py:174 msgid "Payment succeeded" msgstr "" -#: joanie/core/enums.py:155 +#: joanie/core/enums.py:175 msgid "Payment failed" msgstr "" -#: joanie/core/enums.py:164 joanie/payment/enums.py:28 +#: joanie/core/enums.py:184 joanie/payment/enums.py:28 msgid "Paid" msgstr "" -#: joanie/core/enums.py:165 +#: joanie/core/enums.py:185 msgid "Refused" msgstr "" -#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:104 +#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:107 msgid "" msgstr "" -#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:105 +#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:108 msgid "" msgstr "" @@ -392,7 +412,7 @@ msgstr "" #: joanie/core/models/accounts.py:154 joanie/core/models/certifications.py:33 #: joanie/core/models/contracts.py:29 joanie/core/models/courses.py:170 #: joanie/core/models/courses.py:470 joanie/core/models/courses.py:783 -#: joanie/core/models/products.py:67 joanie/payment/models.py:360 +#: joanie/core/models/products.py:68 joanie/payment/models.py:367 msgid "title" msgstr "" @@ -421,17 +441,17 @@ msgid "last name" msgstr "" #: joanie/core/models/accounts.py:163 joanie/core/models/courses.py:357 -#: joanie/core/models/courses.py:587 joanie/core/models/products.py:445 -#: joanie/payment/models.py:369 +#: joanie/core/models/courses.py:587 joanie/core/models/products.py:463 +#: joanie/payment/models.py:376 msgid "owner" msgstr "" #: joanie/core/models/accounts.py:171 joanie/core/models/certifications.py:97 -#: joanie/core/models/products.py:388 +#: joanie/core/models/products.py:406 msgid "organization" msgstr "" -#: joanie/core/models/accounts.py:177 joanie/payment/models.py:373 +#: joanie/core/models/accounts.py:177 joanie/payment/models.py:380 msgid "main" msgstr "" @@ -473,7 +493,7 @@ msgstr "" msgid "context" msgstr "" -#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:64 +#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:65 msgid "type" msgstr "" @@ -530,7 +550,7 @@ msgid "name" msgstr "" #: joanie/core/models/certifications.py:34 joanie/core/models/contracts.py:30 -#: joanie/core/models/products.py:68 +#: joanie/core/models/products.py:69 msgid "description" msgstr "" @@ -552,11 +572,11 @@ msgid "Date of issuance" msgstr "" #: joanie/core/models/certifications.py:82 joanie/core/models/contracts.py:80 -#: joanie/core/models/products.py:1093 joanie/payment/models.py:54 +#: joanie/core/models/products.py:1127 joanie/payment/models.py:54 msgid "order" msgstr "" -#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:410 +#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:428 msgid "enrollment" msgstr "" @@ -585,7 +605,7 @@ msgid "template name" msgstr "" #: joanie/core/models/contracts.py:48 joanie/core/models/contracts.py:73 -#: joanie/core/models/products.py:98 +#: joanie/core/models/products.py:99 msgid "Contract definition" msgstr "" @@ -790,13 +810,13 @@ msgid "Course accesses" msgstr "" #: joanie/core/models/courses.py:705 joanie/core/models/courses.py:777 -#: joanie/core/models/products.py:274 joanie/core/models/products.py:403 -#: joanie/core/models/products.py:1081 +#: joanie/core/models/products.py:275 joanie/core/models/products.py:421 +#: joanie/core/models/products.py:1115 msgid "course" msgstr "" -#: joanie/core/models/courses.py:711 joanie/core/models/products.py:280 -#: joanie/core/models/products.py:395 +#: joanie/core/models/courses.py:711 joanie/core/models/products.py:281 +#: joanie/core/models/products.py:413 msgid "product" msgstr "" @@ -908,164 +928,164 @@ msgstr "" msgid "You are not allowed to enroll to a course run not listed." msgstr "" -#: joanie/core/models/products.py:69 +#: joanie/core/models/products.py:70 msgid "instructions" msgstr "" -#: joanie/core/models/products.py:70 +#: joanie/core/models/products.py:71 msgid "call to action" msgstr "" -#: joanie/core/models/products.py:77 +#: joanie/core/models/products.py:78 msgid "target courses" msgstr "" -#: joanie/core/models/products.py:81 joanie/core/models/products.py:434 +#: joanie/core/models/products.py:82 joanie/core/models/products.py:452 msgid "price" msgstr "" -#: joanie/core/models/products.py:82 joanie/core/models/products.py:436 +#: joanie/core/models/products.py:83 joanie/core/models/products.py:454 msgid "tax included" msgstr "" -#: joanie/core/models/products.py:91 +#: joanie/core/models/products.py:92 msgid "certificate definition" msgstr "" -#: joanie/core/models/products.py:107 +#: joanie/core/models/products.py:108 msgid "Products" msgstr "" -#: joanie/core/models/products.py:254 +#: joanie/core/models/products.py:255 msgid "Certificate definition is only allowed for product kinds: " msgstr "" -#: joanie/core/models/products.py:289 joanie/core/models/products.py:1087 +#: joanie/core/models/products.py:290 joanie/core/models/products.py:1121 msgid "course runs" msgstr "" -#: joanie/core/models/products.py:292 +#: joanie/core/models/products.py:293 msgid "position in product" msgstr "" -#: joanie/core/models/products.py:294 joanie/core/models/products.py:1099 +#: joanie/core/models/products.py:295 joanie/core/models/products.py:1133 msgid "take into account for certification" msgstr "" -#: joanie/core/models/products.py:295 joanie/core/models/products.py:1100 +#: joanie/core/models/products.py:296 joanie/core/models/products.py:1134 msgid "Take into account the course grade for certification." msgstr "" -#: joanie/core/models/products.py:303 +#: joanie/core/models/products.py:304 msgid "Target course relation to a product with a position" msgstr "" -#: joanie/core/models/products.py:304 +#: joanie/core/models/products.py:305 msgid "Target courses relations to products with a position" msgstr "" -#: joanie/core/models/products.py:335 +#: joanie/core/models/products.py:336 msgid "Number of seats" msgstr "" -#: joanie/core/models/products.py:337 +#: joanie/core/models/products.py:338 msgid "The maximum number of orders that can be validated for a given order group" msgstr "" -#: joanie/core/models/products.py:342 +#: joanie/core/models/products.py:343 msgid "course product relation" msgstr "" -#: joanie/core/models/products.py:346 +#: joanie/core/models/products.py:347 msgid "is active" msgstr "" -#: joanie/core/models/products.py:419 +#: joanie/core/models/products.py:437 msgid "order group" msgstr "" -#: joanie/core/models/products.py:430 +#: joanie/core/models/products.py:448 msgid "courses" msgstr "" -#: joanie/core/models/products.py:451 +#: joanie/core/models/products.py:469 msgid "has consent to terms" msgstr "" -#: joanie/core/models/products.py:454 +#: joanie/core/models/products.py:472 msgid "User has consented to the platform terms and conditions." msgstr "" -#: joanie/core/models/products.py:462 +#: joanie/core/models/products.py:480 msgid "payment schedule" msgstr "" -#: joanie/core/models/products.py:463 +#: joanie/core/models/products.py:481 msgid "Payment schedule for the order." msgstr "" -#: joanie/core/models/products.py:501 +#: joanie/core/models/products.py:519 msgid "Orders" msgstr "" -#: joanie/core/models/products.py:586 +#: joanie/core/models/products.py:604 #, python-brace-format msgid "{required_field} field should be set for {self.product.type} products." msgstr "" -#: joanie/core/models/products.py:592 +#: joanie/core/models/products.py:610 #, python-brace-format msgid "{empty_field} field should be left empty for {self.product.type} products." msgstr "" -#: joanie/core/models/products.py:599 +#: joanie/core/models/products.py:617 msgid "The enrollment should belong to the owner of this order." msgstr "" -#: joanie/core/models/products.py:604 +#: joanie/core/models/products.py:622 msgid "Orders can't be placed on enrollments originating from an order." msgstr "" -#: joanie/core/models/products.py:613 +#: joanie/core/models/products.py:631 msgid "The order cannot be generated on course run that is in archived state." msgstr "" -#: joanie/core/models/products.py:632 +#: joanie/core/models/products.py:650 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\", " msgstr "" -#: joanie/core/models/products.py:638 +#: joanie/core/models/products.py:656 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\" and " msgstr "" -#: joanie/core/models/products.py:832 +#: joanie/core/models/products.py:850 #, python-brace-format msgid "Product {self.product.title} does not allow to generate a certificate." msgstr "" -#: joanie/core/models/products.py:847 +#: joanie/core/models/products.py:865 msgid "No graded courses found." msgstr "" -#: joanie/core/models/products.py:863 +#: joanie/core/models/products.py:881 msgid "This order is not ready for gradation." msgstr "" -#: joanie/core/models/products.py:873 +#: joanie/core/models/products.py:891 msgid "Course run " msgstr "" -#: joanie/core/models/products.py:1097 +#: joanie/core/models/products.py:1131 msgid "position in order" msgstr "" -#: joanie/core/models/products.py:1108 +#: joanie/core/models/products.py:1142 msgid "Course relation to an order with a position" msgstr "" -#: joanie/core/models/products.py:1109 +#: joanie/core/models/products.py:1143 msgid "Courses relations to orders with a position" msgstr "" @@ -1113,7 +1133,7 @@ msgstr "" msgid "You are not allowed to manage accesses for this organization." msgstr "" -#: joanie/core/serializers/client.py:756 +#: joanie/core/serializers/client.py:1164 msgid "You must accept the terms and conditions to proceed." msgstr "" @@ -1443,143 +1463,143 @@ msgstr "" msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]" msgstr "" -#: joanie/core/utils/contract_definition.py:14 +#: joanie/core/utils/contract_definition.py:17 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:15 +#: joanie/core/utils/contract_definition.py:18 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:16 +#: joanie/core/utils/contract_definition.py:19 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:17 +#: joanie/core/utils/contract_definition.py:20 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:18 +#: joanie/core/utils/contract_definition.py:21 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:19 +#: joanie/core/utils/contract_definition.py:22 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:20 +#: joanie/core/utils/contract_definition.py:23 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:26 +#: joanie/core/utils/contract_definition.py:29 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:27 +#: joanie/core/utils/contract_definition.py:30 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:28 +#: joanie/core/utils/contract_definition.py:31 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:29 +#: joanie/core/utils/contract_definition.py:32 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:30 +#: joanie/core/utils/contract_definition.py:33 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:31 +#: joanie/core/utils/contract_definition.py:34 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:32 +#: joanie/core/utils/contract_definition.py:35 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:90 +#: joanie/core/utils/contract_definition.py:93 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:91 +#: joanie/core/utils/contract_definition.py:94 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:92 +#: joanie/core/utils/contract_definition.py:95 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:93 +#: joanie/core/utils/contract_definition.py:96 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:94 +#: joanie/core/utils/contract_definition.py:97 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:95 +#: joanie/core/utils/contract_definition.py:98 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:96 +#: joanie/core/utils/contract_definition.py:99 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:97 +#: joanie/core/utils/contract_definition.py:100 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:98 +#: joanie/core/utils/contract_definition.py:101 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:99 +#: joanie/core/utils/contract_definition.py:102 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:102 +#: joanie/core/utils/contract_definition.py:105 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:103 +#: joanie/core/utils/contract_definition.py:106 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:106 +#: joanie/core/utils/contract_definition.py:109 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:107 +#: joanie/core/utils/contract_definition.py:110 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:109 +#: joanie/core/utils/contract_definition.py:112 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:110 +#: joanie/core/utils/contract_definition.py:113 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:111 +#: joanie/core/utils/contract_definition.py:114 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:114 +#: joanie/core/utils/contract_definition.py:117 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:115 +#: joanie/core/utils/contract_definition.py:118 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:116 +#: joanie/core/utils/contract_definition.py:119 msgid "" msgstr "" -#: joanie/payment/admin.py:204 +#: joanie/payment/admin.py:229 msgid "To get results, choose an owner on the right" msgstr "" @@ -1587,7 +1607,7 @@ msgstr "" msgid "Joanie payment application" msgstr "Application de paiement de Joanie" -#: joanie/payment/backends/base.py:77 joanie/payment/backends/base.py:93 +#: joanie/payment/backends/base.py:87 joanie/payment/backends/base.py:103 msgid "Purchase order confirmed!" msgstr "" @@ -1660,22 +1680,26 @@ msgid "Transactions" msgstr "" #: joanie/payment/models.py:361 +msgid "initial issuer transaction identifier" +msgstr "" + +#: joanie/payment/models.py:368 msgid "brand" msgstr "" -#: joanie/payment/models.py:363 +#: joanie/payment/models.py:370 msgid "expiration month" msgstr "" -#: joanie/payment/models.py:365 +#: joanie/payment/models.py:372 msgid "expiration year" msgstr "" -#: joanie/payment/models.py:366 +#: joanie/payment/models.py:373 msgid "last 4 numbers" msgstr "" -#: joanie/payment/models.py:403 +#: joanie/payment/models.py:410 msgid "Demote a main credit card is forbidden" msgstr "" diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.mo b/src/backend/locale/fr_FR/LC_MESSAGES/django.mo index 0f1df1b7bd92b5ad86127ddd9b6cb2405b00b4cf..b8d967365f8fc44d67e4104018b513b8d729cdfd 100755 GIT binary patch delta 9223 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 delta 8777 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 G&wl^{jo_XD diff --git a/src/backend/locale/fr_FR/LC_MESSAGES/django.po b/src/backend/locale/fr_FR/LC_MESSAGES/django.po index bb6ce2dd6..87accebf6 100644 --- a/src/backend/locale/fr_FR/LC_MESSAGES/django.po +++ b/src/backend/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: joanie\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-05-02 15:32+0000\n" -"PO-Revision-Date: 2024-05-03 07:28\n" +"POT-Creation-Date: 2024-05-22 07:36+0000\n" +"PO-Revision-Date: 2024-05-22 09:21\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -114,7 +114,7 @@ msgstr[1] "{:d} certificats ont été générés." msgid "Course" msgstr "Cours" -#: joanie/core/admin.py:71 joanie/core/models/products.py:106 +#: joanie/core/admin.py:71 joanie/core/models/products.py:107 #: joanie/core/templates/issuers/invoice.html:78 msgid "Product" msgstr "Produit" @@ -198,114 +198,134 @@ msgstr "Le token ne contient aucun identifiant utilisateur reconnaissable" msgid "Credential" msgstr "Diplôme" -#: joanie/core/enums.py:34 joanie/core/enums.py:131 +#: joanie/core/enums.py:34 joanie/core/enums.py:151 #: joanie/core/models/courses.py:1014 msgid "Enrollment" msgstr "Inscription" -#: joanie/core/enums.py:37 joanie/core/enums.py:122 +#: joanie/core/enums.py:37 joanie/core/enums.py:142 #: joanie/core/models/certifications.py:116 #: joanie/core/templates/issuers/degree.html:27 msgid "Certificate" msgstr "Certificat" -#: joanie/core/enums.py:67 +#: joanie/core/enums.py:71 msgid "Draft" msgstr "Brouillon" -#: joanie/core/enums.py:68 +#: joanie/core/enums.py:72 msgid "Submitted" msgstr "Soumise" -#: joanie/core/enums.py:69 joanie/core/enums.py:163 +#: joanie/core/enums.py:73 joanie/core/enums.py:183 msgid "Pending" msgstr "En attente" -#: joanie/core/enums.py:70 +#: joanie/core/enums.py:74 msgctxt "As in: the order is cancelled." msgid "Canceled" msgstr "Annulée" -#: joanie/core/enums.py:73 +#: joanie/core/enums.py:77 msgctxt "As in: the order is validated." msgid "Validated" msgstr "Validée" -#: joanie/core/enums.py:90 +#: joanie/core/enums.py:81 +msgctxt "As in: the order payment is pending." +msgid "Pending payment" +msgstr "En attente de paiement" + +#: joanie/core/enums.py:85 +msgctxt "As in: the last order payment has failed." +msgid "Failed payment" +msgstr "Paiement échoué" + +#: joanie/core/enums.py:89 +msgctxt "As in: the first order payment has failed." +msgid "No payment" +msgstr "Aucun paiement" + +#: joanie/core/enums.py:93 +msgctxt "As in: the order is completed." +msgid "Completed" +msgstr "Complété" + +#: joanie/core/enums.py:110 msgctxt "As in: the enrollment was successfully set on the LMS." msgid "Set" msgstr "Défini" -#: joanie/core/enums.py:94 +#: joanie/core/enums.py:114 msgctxt "As in: the enrollment failed on the LMS." msgid "Failed" msgstr "En échec" -#: joanie/core/enums.py:101 +#: joanie/core/enums.py:121 msgid "Contract Definition" msgstr "Définition de contrat" -#: joanie/core/enums.py:109 +#: joanie/core/enums.py:129 msgid "Unsigned" msgstr "Non signé" -#: joanie/core/enums.py:112 +#: joanie/core/enums.py:132 msgid "Partially signed" msgstr "Partiellement signé" -#: joanie/core/enums.py:114 +#: joanie/core/enums.py:134 msgid "Signed" msgstr "Signé" -#: joanie/core/enums.py:123 +#: joanie/core/enums.py:143 msgid "Degree" msgstr "Diplôme" -#: joanie/core/enums.py:130 joanie/core/models/products.py:500 +#: joanie/core/enums.py:150 joanie/core/models/products.py:518 msgid "Order" msgstr "Commande" -#: joanie/core/enums.py:141 +#: joanie/core/enums.py:161 msgid "Info" msgstr "Info" -#: joanie/core/enums.py:142 +#: joanie/core/enums.py:162 msgid "Success" msgstr "Succès" -#: joanie/core/enums.py:143 +#: joanie/core/enums.py:163 msgid "Warning" msgstr "Avertissement" -#: joanie/core/enums.py:144 +#: joanie/core/enums.py:164 msgid "Error" msgstr "Erreur" -#: joanie/core/enums.py:153 +#: joanie/core/enums.py:173 msgid "Notification" msgstr "Notification" -#: joanie/core/enums.py:154 +#: joanie/core/enums.py:174 msgid "Payment succeeded" msgstr "Paiement réussi" -#: joanie/core/enums.py:155 +#: joanie/core/enums.py:175 msgid "Payment failed" msgstr "Échec du paiement" -#: joanie/core/enums.py:164 joanie/payment/enums.py:28 +#: joanie/core/enums.py:184 joanie/payment/enums.py:28 msgid "Paid" msgstr "Payée" -#: joanie/core/enums.py:165 +#: joanie/core/enums.py:185 msgid "Refused" msgstr "Refusé" -#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:104 +#: joanie/core/factories.py:801 joanie/core/utils/contract_definition.py:107 msgid "" msgstr "" -#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:105 +#: joanie/core/factories.py:806 joanie/core/utils/contract_definition.py:108 msgid "" msgstr "" @@ -392,7 +412,7 @@ msgstr "Utilisateurs" #: joanie/core/models/accounts.py:154 joanie/core/models/certifications.py:33 #: joanie/core/models/contracts.py:29 joanie/core/models/courses.py:170 #: joanie/core/models/courses.py:470 joanie/core/models/courses.py:783 -#: joanie/core/models/products.py:67 joanie/payment/models.py:360 +#: joanie/core/models/products.py:68 joanie/payment/models.py:367 msgid "title" msgstr "titre" @@ -421,17 +441,17 @@ msgid "last name" msgstr "nom de famille" #: joanie/core/models/accounts.py:163 joanie/core/models/courses.py:357 -#: joanie/core/models/courses.py:587 joanie/core/models/products.py:445 -#: joanie/payment/models.py:369 +#: joanie/core/models/courses.py:587 joanie/core/models/products.py:463 +#: joanie/payment/models.py:376 msgid "owner" msgstr "propriétaire" #: joanie/core/models/accounts.py:171 joanie/core/models/certifications.py:97 -#: joanie/core/models/products.py:388 +#: joanie/core/models/products.py:406 msgid "organization" msgstr "établissement" -#: joanie/core/models/accounts.py:177 joanie/payment/models.py:373 +#: joanie/core/models/accounts.py:177 joanie/payment/models.py:380 msgid "main" msgstr "principal" @@ -473,7 +493,7 @@ msgstr "niveau" msgid "context" msgstr "contexte" -#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:64 +#: joanie/core/models/activity_logs.py:78 joanie/core/models/products.py:65 msgid "type" msgstr "type" @@ -530,7 +550,7 @@ msgid "name" msgstr "nom" #: joanie/core/models/certifications.py:34 joanie/core/models/contracts.py:30 -#: joanie/core/models/products.py:68 +#: joanie/core/models/products.py:69 msgid "description" msgstr "description" @@ -552,11 +572,11 @@ msgid "Date of issuance" msgstr "Date de délivrance" #: joanie/core/models/certifications.py:82 joanie/core/models/contracts.py:80 -#: joanie/core/models/products.py:1093 joanie/payment/models.py:54 +#: joanie/core/models/products.py:1127 joanie/payment/models.py:54 msgid "order" msgstr "commande" -#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:410 +#: joanie/core/models/certifications.py:91 joanie/core/models/products.py:428 msgid "enrollment" msgstr "inscription" @@ -585,7 +605,7 @@ msgid "template name" msgstr "nom du modèle" #: joanie/core/models/contracts.py:48 joanie/core/models/contracts.py:73 -#: joanie/core/models/products.py:98 +#: joanie/core/models/products.py:99 msgid "Contract definition" msgstr "Définition de contrat" @@ -790,13 +810,13 @@ msgid "Course accesses" msgstr "Droits d'accès aux cours" #: joanie/core/models/courses.py:705 joanie/core/models/courses.py:777 -#: joanie/core/models/products.py:274 joanie/core/models/products.py:403 -#: joanie/core/models/products.py:1081 +#: joanie/core/models/products.py:275 joanie/core/models/products.py:421 +#: joanie/core/models/products.py:1115 msgid "course" msgstr "cours" -#: joanie/core/models/courses.py:711 joanie/core/models/products.py:280 -#: joanie/core/models/products.py:395 +#: joanie/core/models/courses.py:711 joanie/core/models/products.py:281 +#: joanie/core/models/products.py:413 msgid "product" msgstr "produit" @@ -908,164 +928,164 @@ msgstr "La session de cours \"{self.course_run.resource_link:s}\" nécessite une msgid "You are not allowed to enroll to a course run not listed." msgstr "Vous n'êtes pas autorisé à vous inscrire à une session de cours non répertoriée." -#: joanie/core/models/products.py:69 +#: joanie/core/models/products.py:70 msgid "instructions" msgstr "instructions" -#: joanie/core/models/products.py:70 +#: joanie/core/models/products.py:71 msgid "call to action" msgstr "appel à action" -#: joanie/core/models/products.py:77 +#: joanie/core/models/products.py:78 msgid "target courses" msgstr "cours ciblés" -#: joanie/core/models/products.py:81 joanie/core/models/products.py:434 +#: joanie/core/models/products.py:82 joanie/core/models/products.py:452 msgid "price" msgstr "prix" -#: joanie/core/models/products.py:82 joanie/core/models/products.py:436 +#: joanie/core/models/products.py:83 joanie/core/models/products.py:454 msgid "tax included" msgstr "taxe incluse" -#: joanie/core/models/products.py:91 +#: joanie/core/models/products.py:92 msgid "certificate definition" msgstr "définition de certificat" -#: joanie/core/models/products.py:107 +#: joanie/core/models/products.py:108 msgid "Products" msgstr "Produits" -#: joanie/core/models/products.py:254 +#: joanie/core/models/products.py:255 msgid "Certificate definition is only allowed for product kinds: " msgstr "La définition de certificat n'est autorisée que pour les produits de types : " -#: joanie/core/models/products.py:289 joanie/core/models/products.py:1087 +#: joanie/core/models/products.py:290 joanie/core/models/products.py:1121 msgid "course runs" msgstr "sessions de cours" -#: joanie/core/models/products.py:292 +#: joanie/core/models/products.py:293 msgid "position in product" msgstr "position dans le produit" -#: joanie/core/models/products.py:294 joanie/core/models/products.py:1099 +#: joanie/core/models/products.py:295 joanie/core/models/products.py:1133 msgid "take into account for certification" msgstr "prendre en compte pour la certification" -#: joanie/core/models/products.py:295 joanie/core/models/products.py:1100 +#: joanie/core/models/products.py:296 joanie/core/models/products.py:1134 msgid "Take into account the course grade for certification." msgstr "Prendre en compte la note du cours pour la certification." -#: joanie/core/models/products.py:303 +#: joanie/core/models/products.py:304 msgid "Target course relation to a product with a position" msgstr "Relation d'un cours cible à un produit avec une position" -#: joanie/core/models/products.py:304 +#: joanie/core/models/products.py:305 msgid "Target courses relations to products with a position" msgstr "Relation de cours cibles à des produits avec une position" -#: joanie/core/models/products.py:335 +#: joanie/core/models/products.py:336 msgid "Number of seats" msgstr "Nombre de sièges" -#: joanie/core/models/products.py:337 +#: joanie/core/models/products.py:338 msgid "The maximum number of orders that can be validated for a given order group" msgstr "Le nombre maximum de commandes pouvant être validées pour un groupe de commandes donné" -#: joanie/core/models/products.py:342 +#: joanie/core/models/products.py:343 msgid "course product relation" msgstr "relation cours produit" -#: joanie/core/models/products.py:346 +#: joanie/core/models/products.py:347 msgid "is active" msgstr "est actif" -#: joanie/core/models/products.py:419 +#: joanie/core/models/products.py:437 msgid "order group" msgstr "groupe de commandes" -#: joanie/core/models/products.py:430 +#: joanie/core/models/products.py:448 msgid "courses" msgstr "cours" -#: joanie/core/models/products.py:451 +#: joanie/core/models/products.py:469 msgid "has consent to terms" msgstr "a consenti aux conditions" -#: joanie/core/models/products.py:454 +#: joanie/core/models/products.py:472 msgid "User has consented to the platform terms and conditions." msgstr "L'utilisateur a consenti aux conditions générales de vente de la plateforme." -#: joanie/core/models/products.py:462 +#: joanie/core/models/products.py:480 msgid "payment schedule" msgstr "échéancier" -#: joanie/core/models/products.py:463 +#: joanie/core/models/products.py:481 msgid "Payment schedule for the order." msgstr "Échéancier pour la commande." -#: joanie/core/models/products.py:501 +#: joanie/core/models/products.py:519 msgid "Orders" msgstr "Commandes" -#: joanie/core/models/products.py:586 +#: joanie/core/models/products.py:604 #, python-brace-format msgid "{required_field} field should be set for {self.product.type} products." msgstr "Le champ {required_field} doit être défini pour les produits {self.product.type}." -#: joanie/core/models/products.py:592 +#: joanie/core/models/products.py:610 #, python-brace-format msgid "{empty_field} field should be left empty for {self.product.type} products." msgstr "Le champ {empty_field} devrait être laissé vide pour les produits {self.product.type}." -#: joanie/core/models/products.py:599 +#: joanie/core/models/products.py:617 msgid "The enrollment should belong to the owner of this order." msgstr "L'inscription devrait appartenir au propriétaire de cette commande." -#: joanie/core/models/products.py:604 +#: joanie/core/models/products.py:622 msgid "Orders can't be placed on enrollments originating from an order." msgstr "Des commandes ne peuvent pas être passées sur des inscriptions créées à partir d'une commande." -#: joanie/core/models/products.py:613 +#: joanie/core/models/products.py:631 msgid "The order cannot be generated on course run that is in archived state." msgstr "La commande ne peut pas être générée via une session de cours archivée." -#: joanie/core/models/products.py:632 +#: joanie/core/models/products.py:650 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\", " msgstr "Cette commande ne peut pas être liée au produit \"{product_title}\", " -#: joanie/core/models/products.py:638 +#: joanie/core/models/products.py:656 #, python-brace-format msgid "This order cannot be linked to the product \"{product_title}\" and " msgstr "Cette commande ne peut pas être liée au produit \"{product_title}\" et " -#: joanie/core/models/products.py:832 +#: joanie/core/models/products.py:850 #, python-brace-format msgid "Product {self.product.title} does not allow to generate a certificate." msgstr "Le produit {self.product.title} ne permet pas de générer un certificat." -#: joanie/core/models/products.py:847 +#: joanie/core/models/products.py:865 msgid "No graded courses found." msgstr "Aucun cours noté trouvé." -#: joanie/core/models/products.py:863 +#: joanie/core/models/products.py:881 msgid "This order is not ready for gradation." msgstr "Cette commande n'est pas prête à être évaluée." -#: joanie/core/models/products.py:873 +#: joanie/core/models/products.py:891 msgid "Course run " msgstr "Session de cours " -#: joanie/core/models/products.py:1097 +#: joanie/core/models/products.py:1131 msgid "position in order" msgstr "position dans la commande" -#: joanie/core/models/products.py:1108 +#: joanie/core/models/products.py:1142 msgid "Course relation to an order with a position" msgstr "Relation d'un cours à une commande avec une position" -#: joanie/core/models/products.py:1109 +#: joanie/core/models/products.py:1143 msgid "Courses relations to orders with a position" msgstr "Relations de cours à des commandes avec une position" @@ -1113,7 +1133,7 @@ msgstr "Vous devez définir un ID d'établissement dans le contexte pour créer msgid "You are not allowed to manage accesses for this organization." msgstr "Vous n'êtes pas autorisé à gérer les droits d'accès à cet établissement." -#: joanie/core/serializers/client.py:756 +#: joanie/core/serializers/client.py:1164 msgid "You must accept the terms and conditions to proceed." msgstr "Vous devez accepter les conditions générales de vente pour continuer." @@ -1447,143 +1467,143 @@ msgstr "Vous avez acheté %(title)s pour un prix de %(price)s." msgid "This mail has been sent to %(email)s by %(name)s [%(href)s]" msgstr "Ce courriel a été envoyé à %(email)s par %(name)s [%(href)s]" -#: joanie/core/utils/contract_definition.py:14 +#: joanie/core/utils/contract_definition.py:17 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:15 +#: joanie/core/utils/contract_definition.py:18 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:16 +#: joanie/core/utils/contract_definition.py:19 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:17 +#: joanie/core/utils/contract_definition.py:20 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:18 +#: joanie/core/utils/contract_definition.py:21 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:19 +#: joanie/core/utils/contract_definition.py:22 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:20 +#: joanie/core/utils/contract_definition.py:23 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:26 +#: joanie/core/utils/contract_definition.py:29 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:27 +#: joanie/core/utils/contract_definition.py:30 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:28 +#: joanie/core/utils/contract_definition.py:31 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:29 +#: joanie/core/utils/contract_definition.py:32 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:30 +#: joanie/core/utils/contract_definition.py:33 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:31 +#: joanie/core/utils/contract_definition.py:34 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:32 +#: joanie/core/utils/contract_definition.py:35 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:90 +#: joanie/core/utils/contract_definition.py:93 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:91 +#: joanie/core/utils/contract_definition.py:94 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:92 +#: joanie/core/utils/contract_definition.py:95 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:93 +#: joanie/core/utils/contract_definition.py:96 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:94 +#: joanie/core/utils/contract_definition.py:97 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:95 +#: joanie/core/utils/contract_definition.py:98 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:96 +#: joanie/core/utils/contract_definition.py:99 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:97 +#: joanie/core/utils/contract_definition.py:100 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:98 +#: joanie/core/utils/contract_definition.py:101 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:99 +#: joanie/core/utils/contract_definition.py:102 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:102 +#: joanie/core/utils/contract_definition.py:105 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:103 +#: joanie/core/utils/contract_definition.py:106 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:106 +#: joanie/core/utils/contract_definition.py:109 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:107 +#: joanie/core/utils/contract_definition.py:110 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:109 +#: joanie/core/utils/contract_definition.py:112 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:110 +#: joanie/core/utils/contract_definition.py:113 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:111 +#: joanie/core/utils/contract_definition.py:114 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:114 +#: joanie/core/utils/contract_definition.py:117 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:115 +#: joanie/core/utils/contract_definition.py:118 msgid "" msgstr "" -#: joanie/core/utils/contract_definition.py:116 +#: joanie/core/utils/contract_definition.py:119 msgid "" msgstr "" -#: joanie/payment/admin.py:204 +#: joanie/payment/admin.py:229 msgid "To get results, choose an owner on the right" msgstr "Pour obtenir des résultats, choisissez un propriétaire sur la droite" @@ -1591,7 +1611,7 @@ msgstr "Pour obtenir des résultats, choisissez un propriétaire sur la droite" msgid "Joanie payment application" msgstr "Application de paiement de Joanie" -#: joanie/payment/backends/base.py:77 joanie/payment/backends/base.py:93 +#: joanie/payment/backends/base.py:87 joanie/payment/backends/base.py:103 msgid "Purchase order confirmed!" msgstr "Commande confirmée !" @@ -1664,22 +1684,26 @@ msgid "Transactions" msgstr "Transactions" #: joanie/payment/models.py:361 +msgid "initial issuer transaction identifier" +msgstr "identifiant de transaction de l'émetteur initial" + +#: joanie/payment/models.py:368 msgid "brand" msgstr "marque" -#: joanie/payment/models.py:363 +#: joanie/payment/models.py:370 msgid "expiration month" msgstr "mois d'expiration" -#: joanie/payment/models.py:365 +#: joanie/payment/models.py:372 msgid "expiration year" msgstr "année d'expiration" -#: joanie/payment/models.py:366 +#: joanie/payment/models.py:373 msgid "last 4 numbers" msgstr "4 derniers chiffres" -#: joanie/payment/models.py:403 +#: joanie/payment/models.py:410 msgid "Demote a main credit card is forbidden" msgstr "Rétrograder une carte bancaire principale est interdit" diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index 087dcc3fd..13237fc62 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "joanie" -version = "2.1.0" +version = "2.2.0" authors = [{ "name" = "Open FUN (France Université Numérique)", "email" = "fun.dev@fun-mooc.fr" }] classifiers = [ "Development Status :: 5 - Production/Stable", diff --git a/src/frontend/admin/i18n/locales/es-ES.json b/src/frontend/admin/i18n/locales/es-ES.json index 8c4936126..c7406c4a4 100644 --- a/src/frontend/admin/i18n/locales/es-ES.json +++ b/src/frontend/admin/i18n/locales/es-ES.json @@ -35,6 +35,10 @@ "description": "Label for the search input", "message": "Search..." }, + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": { + "description": "Message displayed when a date entered is not a date", + "message": "Invalid date" + }, "components.presentational.hookForm.provider.dirtyModalMessage": { "description": "Message for the dirty alert modal", "message": "Changes in the form have been detected. Please submit the form or your changes will be lost." @@ -399,6 +403,10 @@ "description": "Title for the edit order group modal", "message": "Edit an order group" }, + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": { + "description": "Text when hovering over the action to generate certificates, but a generation is already in progress", + "message": "There is already a certificate generation in progress" + }, "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": { "description": "Title for the delete order group modal", "message": "Delete an order group" @@ -407,6 +415,10 @@ "description": "Content for the delete order group modal", "message": "Are you sure you want to delete this order group?" }, + "components.templates.courses.form.productRelation.row.generateCertificate": { + "description": "Label for the generate certificate action", + "message": "Generate certificates" + }, "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": { "description": "Title for the order group row", "message": "Order group {number}" @@ -983,6 +995,10 @@ "description": "Title for the credential product type", "message": "Microcredential" }, + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": { + "description": "Label for the is graded tooltip", + "message": "Taken into account for certification" + }, "components.templates.products.form.translations.addRelatedCourseButtonLabel": { "description": "Label for the add related courses button", "message": "Add related course" diff --git a/src/frontend/admin/i18n/locales/fr-CA.json b/src/frontend/admin/i18n/locales/fr-CA.json index 003d422e2..aa273c164 100644 --- a/src/frontend/admin/i18n/locales/fr-CA.json +++ b/src/frontend/admin/i18n/locales/fr-CA.json @@ -35,6 +35,10 @@ "description": "Label for the search input", "message": "Search..." }, + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": { + "description": "Message displayed when a date entered is not a date", + "message": "Invalid date" + }, "components.presentational.hookForm.provider.dirtyModalMessage": { "description": "Message for the dirty alert modal", "message": "Changes in the form have been detected. Please submit the form or your changes will be lost." @@ -399,6 +403,10 @@ "description": "Title for the edit order group modal", "message": "Edit an order group" }, + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": { + "description": "Text when hovering over the action to generate certificates, but a generation is already in progress", + "message": "There is already a certificate generation in progress" + }, "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": { "description": "Title for the delete order group modal", "message": "Delete an order group" @@ -407,6 +415,10 @@ "description": "Content for the delete order group modal", "message": "Are you sure you want to delete this order group?" }, + "components.templates.courses.form.productRelation.row.generateCertificate": { + "description": "Label for the generate certificate action", + "message": "Generate certificates" + }, "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": { "description": "Title for the order group row", "message": "Order group {number}" @@ -983,6 +995,10 @@ "description": "Title for the credential product type", "message": "Microcredential" }, + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": { + "description": "Label for the is graded tooltip", + "message": "Taken into account for certification" + }, "components.templates.products.form.translations.addRelatedCourseButtonLabel": { "description": "Label for the add related courses button", "message": "Add related course" diff --git a/src/frontend/admin/i18n/locales/fr-FR.json b/src/frontend/admin/i18n/locales/fr-FR.json index 4d5dcfce6..f10859823 100644 --- a/src/frontend/admin/i18n/locales/fr-FR.json +++ b/src/frontend/admin/i18n/locales/fr-FR.json @@ -35,6 +35,10 @@ "description": "Label for the search input", "message": "Rechercher..." }, + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": { + "description": "Message displayed when a date entered is not a date", + "message": "Date invalide" + }, "components.presentational.hookForm.provider.dirtyModalMessage": { "description": "Message for the dirty alert modal", "message": "Des modifications dans le formulaire ont été détectées. Veuillez sauvegarder ou vos modifications seront perdues." @@ -399,6 +403,10 @@ "description": "Title for the edit order group modal", "message": "Modifier un groupe de commandes" }, + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": { + "description": "Text when hovering over the action to generate certificates, but a generation is already in progress", + "message": "Une génération de certificats est déjà en cours" + }, "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": { "description": "Title for the delete order group modal", "message": "Supprimer un groupe de commandes" @@ -407,6 +415,10 @@ "description": "Content for the delete order group modal", "message": "Êtes-vous sûr de vouloir supprimer ce groupe de commandes ?" }, + "components.templates.courses.form.productRelation.row.generateCertificate": { + "description": "Label for the generate certificate action", + "message": "Générer les certificats" + }, "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": { "description": "Title for the order group row", "message": "Groupe de commandes {number}" @@ -983,6 +995,10 @@ "description": "Title for the credential product type", "message": "Micro-certification" }, + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": { + "description": "Label for the is graded tooltip", + "message": "Pris en compte pour la certification" + }, "components.templates.products.form.translations.addRelatedCourseButtonLabel": { "description": "Label for the add related courses button", "message": "Associer à un cours" @@ -1309,7 +1325,7 @@ }, "hooks.useEnrollments.errorCreate": { "description": "Error message shown to the user when order creation request fails.", - "message": "An error occurred while creating the order. Please retry later." + "message": "Une erreur s'est produite lors de l'inscription. Veuillez réessayer plus tard." }, "hooks.useEnrollments.errorDelete": { "description": "Error message shown to the user when order deletion request fails.", diff --git a/src/frontend/admin/package.json b/src/frontend/admin/package.json index f96f8f528..ac627d3cd 100644 --- a/src/frontend/admin/package.json +++ b/src/frontend/admin/package.json @@ -1,6 +1,6 @@ { "name": "admin", - "version": "2.1.0", + "version": "2.2.0", "private": true, "scripts": { "dev": "next dev -p 8072", diff --git a/src/frontend/admin/src/translations/es-ES.json b/src/frontend/admin/src/translations/es-ES.json index d19d5da51..b4cafb2ad 100644 --- a/src/frontend/admin/src/translations/es-ES.json +++ b/src/frontend/admin/src/translations/es-ES.json @@ -8,6 +8,7 @@ "components.presentational.filters.searchFilters.filtersModalInfo": "In this part, you can add filters to filter entities based on different parameters. On a multiple choice filter, an \"OR\" is applied", "components.presentational.filters.searchFilters.filtersModalTitle": "Add filters", "components.presentational.filters.searchFilters.searchPlaceholder": "Search...", + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": "Invalid date", "components.presentational.hookForm.provider.dirtyModalMessage": "Changes in the form have been detected. Please submit the form or your changes will be lost.", "components.presentational.hookForm.provider.dirtyModalTitle": "Before you leave!", "components.presentational.hookForm.provider.submit": "Submit", @@ -99,8 +100,10 @@ "components.templates.courses.filters.CourseFilters.searchPlaceholder": "Search by title or code", "components.templates.courses.form.productRelation.row.addOrderGroupButton": "Add order group", "components.templates.courses.form.productRelation.row.addOrderGroupModalFormTitle": "Edit an order group", + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": "There is already a certificate generation in progress", "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": "Delete an order group", "components.templates.courses.form.productRelation.row.deleteOrderGroupModalContent": "Are you sure you want to delete this order group?", + "components.templates.courses.form.productRelation.row.generateCertificate": "Generate certificates", "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": "Order group {number}", "components.templates.courses.form.productRelation.row.orderGroupDisabledActionsMessage": "Seats have already been reserved, so you cannot perform this action.", "components.templates.courses.form.productRelation.row.orderGroupIsActiveSwitchAriaLabel": "Order group is active switch", @@ -245,6 +248,7 @@ "components.templates.products.form.sections.OderGroups.OrderGroupForm.isActiveLabel": "Activate this order group", "components.templates.products.form.sections.OderGroups.OrderGroupForm.numberOfSeatInputLabel": "Number of seats", "components.templates.products.form.sections.ProductFormTypeSection.microCredentialTitle": "Microcredential", + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": "Taken into account for certification", "components.templates.products.form.translations.addRelatedCourseButtonLabel": "Add related course", "components.templates.products.form.translations.addTargetCourseButtonLabel": "Add target course", "components.templates.products.form.translations.addTargetCourseCourseRunModalTitle": "List of available course runs", diff --git a/src/frontend/admin/src/translations/fr-CA.json b/src/frontend/admin/src/translations/fr-CA.json index ea0c2959d..170f2e4fd 100644 --- a/src/frontend/admin/src/translations/fr-CA.json +++ b/src/frontend/admin/src/translations/fr-CA.json @@ -8,6 +8,7 @@ "components.presentational.filters.searchFilters.filtersModalInfo": "In this part, you can add filters to filter entities based on different parameters. On a multiple choice filter, an \"OR\" is applied", "components.presentational.filters.searchFilters.filtersModalTitle": "Add filters", "components.presentational.filters.searchFilters.searchPlaceholder": "Search...", + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": "Invalid date", "components.presentational.hookForm.provider.dirtyModalMessage": "Changes in the form have been detected. Please submit the form or your changes will be lost.", "components.presentational.hookForm.provider.dirtyModalTitle": "Before you leave!", "components.presentational.hookForm.provider.submit": "Submit", @@ -99,8 +100,10 @@ "components.templates.courses.filters.CourseFilters.searchPlaceholder": "Search by title or code", "components.templates.courses.form.productRelation.row.addOrderGroupButton": "Add order group", "components.templates.courses.form.productRelation.row.addOrderGroupModalFormTitle": "Edit an order group", + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": "There is already a certificate generation in progress", "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": "Delete an order group", "components.templates.courses.form.productRelation.row.deleteOrderGroupModalContent": "Are you sure you want to delete this order group?", + "components.templates.courses.form.productRelation.row.generateCertificate": "Generate certificates", "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": "Order group {number}", "components.templates.courses.form.productRelation.row.orderGroupDisabledActionsMessage": "Seats have already been reserved, so you cannot perform this action.", "components.templates.courses.form.productRelation.row.orderGroupIsActiveSwitchAriaLabel": "Order group is active switch", @@ -245,6 +248,7 @@ "components.templates.products.form.sections.OderGroups.OrderGroupForm.isActiveLabel": "Activate this order group", "components.templates.products.form.sections.OderGroups.OrderGroupForm.numberOfSeatInputLabel": "Number of seats", "components.templates.products.form.sections.ProductFormTypeSection.microCredentialTitle": "Microcredential", + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": "Taken into account for certification", "components.templates.products.form.translations.addRelatedCourseButtonLabel": "Add related course", "components.templates.products.form.translations.addTargetCourseButtonLabel": "Add target course", "components.templates.products.form.translations.addTargetCourseCourseRunModalTitle": "List of available course runs", diff --git a/src/frontend/admin/src/translations/fr-FR.json b/src/frontend/admin/src/translations/fr-FR.json index b650749e4..cbf5a3515 100644 --- a/src/frontend/admin/src/translations/fr-FR.json +++ b/src/frontend/admin/src/translations/fr-FR.json @@ -8,6 +8,7 @@ "components.presentational.filters.searchFilters.filtersModalInfo": "Dans cette partie, vous pouvez ajouter des filtres pour filtrer les entités en fonction de différents paramètres. Sur un filtre à choix multiple, un opérateur \"OU\" est appliqué", "components.presentational.filters.searchFilters.filtersModalTitle": "Ajouter des filtres", "components.presentational.filters.searchFilters.searchPlaceholder": "Rechercher...", + "components.presentational.hookForm.RHFDateTimePicker.invalidDate": "Date invalide", "components.presentational.hookForm.provider.dirtyModalMessage": "Des modifications dans le formulaire ont été détectées. Veuillez sauvegarder ou vos modifications seront perdues.", "components.presentational.hookForm.provider.dirtyModalTitle": "Avant de partir !", "components.presentational.hookForm.provider.submit": "Valider", @@ -99,8 +100,10 @@ "components.templates.courses.filters.CourseFilters.searchPlaceholder": "Rechercher par titre, code", "components.templates.courses.form.productRelation.row.addOrderGroupButton": "Ajouter un groupe de commandes", "components.templates.courses.form.productRelation.row.addOrderGroupModalFormTitle": "Modifier un groupe de commandes", + "components.templates.courses.form.productRelation.row.alreadyCertificateGenerationInProgress": "Une génération de certificats est déjà en cours", "components.templates.courses.form.productRelation.row.deleteOrderGroupModal": "Supprimer un groupe de commandes", "components.templates.courses.form.productRelation.row.deleteOrderGroupModalContent": "Êtes-vous sûr de vouloir supprimer ce groupe de commandes ?", + "components.templates.courses.form.productRelation.row.generateCertificate": "Générer les certificats", "components.templates.courses.form.productRelation.row.mainTitleOrderGroup": "Groupe de commandes {number}", "components.templates.courses.form.productRelation.row.orderGroupDisabledActionsMessage": "Des places ont déjà été réservées, vous ne pouvez donc pas effectuer cette action.", "components.templates.courses.form.productRelation.row.orderGroupIsActiveSwitchAriaLabel": "Interrupteur d'activation du groupe de commandes", @@ -245,6 +248,7 @@ "components.templates.products.form.sections.OderGroups.OrderGroupForm.isActiveLabel": "Activer ce groupe de commandes", "components.templates.products.form.sections.OderGroups.OrderGroupForm.numberOfSeatInputLabel": "Nombre de sièges", "components.templates.products.form.sections.ProductFormTypeSection.microCredentialTitle": "Micro-certification", + "components.templates.products.form.sections.targetCourses.ProductFormTargetCourseRow.isGradedTooltip": "Pris en compte pour la certification", "components.templates.products.form.translations.addRelatedCourseButtonLabel": "Associer à un cours", "components.templates.products.form.translations.addTargetCourseButtonLabel": "Ajouter un cours", "components.templates.products.form.translations.addTargetCourseCourseRunModalTitle": "Liste des sessions de cours disponibles", @@ -326,7 +330,7 @@ "hooks.useCourseRun.errorNotFound": "Session de cours introuvable", "hooks.useCourseRun.errorSelect": "Une erreur s'est produite lors de la récupération des sessions de cours. Veuillez réessayer plus tard.", "hooks.useCourseRun.errorUpdate": "Une erreur s'est produite lors de la mise à jour de la session de cours. Veuillez réessayer plus tard.", - "hooks.useEnrollments.errorCreate": "An error occurred while creating the order. Please retry later.", + "hooks.useEnrollments.errorCreate": "Une erreur s'est produite lors de l'inscription. Veuillez réessayer plus tard.", "hooks.useEnrollments.errorDelete": "An error occurred while deleting the order. Please retry later.", "hooks.useEnrollments.errorGet": "An error occurred while fetching orders. Please retry later.", "hooks.useEnrollments.errorNotFound": "Cannot find the order", diff --git a/src/tray/tray.yml b/src/tray/tray.yml index 05a102975..18f821ac5 100644 --- a/src/tray/tray.yml +++ b/src/tray/tray.yml @@ -1,3 +1,3 @@ metadata: name: joanie - version: 2.1.0 + version: 2.2.0 diff --git a/src/tray/vars/all/main.yml b/src/tray/vars/all/main.yml index 891f84344..6a3294053 100644 --- a/src/tray/vars/all/main.yml +++ b/src/tray/vars/all/main.yml @@ -21,7 +21,7 @@ joanie_nginx_static_cache_expires: "1M" # -- admin nginx joanie_admin_nginx_image_name: "fundocker/joanie-admin" -joanie_admin_nginx_image_tag: "2.1.0" +joanie_admin_nginx_image_tag: "2.2.0" joanie_admin_nginx_port: 8061 joanie_admin_nginx_replicas: 1 joanie_admin_nginx_healthcheck_port: 5000 @@ -41,7 +41,7 @@ joanie_database_secret_name: "joanie-postgresql-{{ joanie_vault_checksum | defau # -- joanie joanie_image_name: "fundocker/joanie" -joanie_image_tag: "2.1.0" +joanie_image_tag: "2.2.0" # The image pull secret name should match the name of your secret created to # login to your private docker registry joanie_image_pull_secret_name: ""