📝(docs) clarify sub as optional to support email-only user provisioning

Update the sub field documentation to explicitly reflect its optional nature.
Originally intended to be mandatory, sub became optional due to a code issue.
This change acknowledges and formalizes that behavior as intentional.

The optional sub enables external API integrations to provision users with
only an email address. Full identity (sub) is assigned on first login,
allowing third-party platforms to create users before they authenticate.
This commit is contained in:
lebaudantoine
2025-12-17 16:15:43 +01:00
committed by aleb_the_flash
parent 8348a55f7e
commit 9523f52546
6 changed files with 236 additions and 230 deletions

View File

@@ -41,7 +41,7 @@ class Migration(migrations.Migration):
('id', models.UUIDField(default=uuid.uuid4, editable=False, help_text='primary key for the record as UUID', primary_key=True, serialize=False, verbose_name='id')),
('created_at', models.DateTimeField(auto_now_add=True, help_text='date and time at which a record was created', verbose_name='created on')),
('updated_at', models.DateTimeField(auto_now=True, help_text='date and time at which a record was last updated', verbose_name='updated on')),
('sub', models.CharField(blank=True, help_text='Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only.', max_length=255, null=True, unique=True, validators=[django.core.validators.RegexValidator(message='Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters.', regex='^[\\w.@+-]+\\Z')], verbose_name='sub')),
('sub', models.CharField(blank=True, help_text='Optional for pending users; required upon account activation. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only.', max_length=255, null=True, unique=True, validators=[django.core.validators.RegexValidator(message='Enter a valid sub. This value may contain only letters, numbers, and @/./+/-/_ characters.', regex='^[\\w.@+-]+\\Z')], verbose_name='sub')),
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='identity email address')),
('admin_email', models.EmailField(blank=True, max_length=254, null=True, unique=True, verbose_name='admin email address')),
('language', models.CharField(choices="(('en-us', 'English'), ('fr-fr', 'French'))", default='en-us', help_text='The language in which the user wants to see the interface.', max_length=10, verbose_name='language')),

View File

@@ -146,7 +146,8 @@ class User(AbstractBaseUser, BaseModel, auth_models.PermissionsMixin):
sub = models.CharField(
_("sub"),
help_text=_(
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
"Optional for pending users; required upon account activation. "
"255 characters or fewer. Letters, numbers, and @/./+/-/_ characters only."
),
max_length=255,
unique=True,

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-17 15:07+0000\n"
"POT-Creation-Date: 2025-12-17 15:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -177,61 +177,61 @@ msgstr "Sub"
#: core/models.py:149
msgid ""
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ "
"characters only."
"Optional for pending users; required upon account activation. 255 characters "
"or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
"Erforderlich. Maximal 255 Zeichen. Nur Buchstaben, Zahlen und @/./+/-/_ sind "
"erlaubt."
"Optional für ausstehende Benutzer; erforderlich nach Kontoaktivierung. "
"Maximal 255 Zeichen. Nur Buchstaben, Zahlen und @/./+/-/_ Zeichen erlaubt."
#: core/models.py:157
#: core/models.py:158
msgid "identity email address"
msgstr "Identitäts-E-Mail-Adresse"
#: core/models.py:162
#: core/models.py:163
msgid "admin email address"
msgstr "Administrator-E-Mail-Adresse"
#: core/models.py:164
#: core/models.py:165
msgid "full name"
msgstr "Vollständiger Name"
#: core/models.py:166
#: core/models.py:167
msgid "short name"
msgstr "Kurzname"
#: core/models.py:172
#: core/models.py:173
msgid "language"
msgstr "Sprache"
#: core/models.py:173
#: core/models.py:174
msgid "The language in which the user wants to see the interface."
msgstr "Die Sprache, in der der Benutzer die Oberfläche sehen möchte."
#: core/models.py:179
#: core/models.py:180
msgid "The timezone in which the user wants to see times."
msgstr "Die Zeitzone, in der der Benutzer die Zeiten sehen möchte."
#: core/models.py:182
#: core/models.py:183
msgid "device"
msgstr "Gerät"
#: core/models.py:184
#: core/models.py:185
msgid "Whether the user is a device or a real user."
msgstr "Ob es sich um ein Gerät oder einen echten Benutzer handelt."
#: core/models.py:187
#: core/models.py:188
msgid "staff status"
msgstr "Mitarbeiterstatus"
#: core/models.py:189
#: core/models.py:190
msgid "Whether the user can log into this admin site."
msgstr "Ob der Benutzer sich bei dieser Admin-Seite anmelden kann."
#: core/models.py:192
#: core/models.py:193
msgid "active"
msgstr "aktiv"
#: core/models.py:195
#: core/models.py:196
msgid ""
"Whether this user should be treated as active. Unselect this instead of "
"deleting accounts."
@@ -239,66 +239,66 @@ msgstr ""
"Ob dieser Benutzer als aktiv behandelt werden soll. Deaktivieren Sie dies "
"anstelle des Löschens des Kontos."
#: core/models.py:208
#: core/models.py:209
msgid "user"
msgstr "Benutzer"
#: core/models.py:209
#: core/models.py:210
msgid "users"
msgstr "Benutzer"
#: core/models.py:268
#: core/models.py:269
msgid "Resource"
msgstr "Ressource"
#: core/models.py:269
#: core/models.py:270
msgid "Resources"
msgstr "Ressourcen"
#: core/models.py:323
#: core/models.py:324
msgid "Resource access"
msgstr "Ressourcenzugriff"
#: core/models.py:324
#: core/models.py:325
msgid "Resource accesses"
msgstr "Ressourcenzugriffe"
#: core/models.py:330
#: core/models.py:331
msgid "Resource access with this User and Resource already exists."
msgstr ""
"Ein Ressourcenzugriff mit diesem Benutzer und dieser Ressource existiert "
"bereits."
#: core/models.py:386
#: core/models.py:387
msgid "Visio room configuration"
msgstr "Visio-Raumkonfiguration"
#: core/models.py:387
#: core/models.py:388
msgid "Values for Visio parameters to configure the room."
msgstr "Werte für Visio-Parameter zur Konfiguration des Raums."
#: core/models.py:394
#: core/models.py:395
msgid "Room PIN code"
msgstr "PIN-Code für den Raum"
#: core/models.py:395
#: core/models.py:396
msgid "Unique n-digit code that identifies this room in telephony mode."
msgstr ""
"Eindeutiger n-stelliger Code, der diesen Raum im Telephonmodus identifiziert."
#: core/models.py:401 core/models.py:555
#: core/models.py:402 core/models.py:556
msgid "Room"
msgstr "Raum"
#: core/models.py:402
#: core/models.py:403
msgid "Rooms"
msgstr "Räume"
#: core/models.py:566
#: core/models.py:567
msgid "Worker ID"
msgstr "Worker-ID"
#: core/models.py:568
#: core/models.py:569
msgid ""
"Enter an identifier for the worker recording.This ID is retained even when "
"the worker stops, allowing for easy tracking."
@@ -307,99 +307,100 @@ msgstr ""
"erhalten, auch wenn der Worker stoppt, was ein einfaches Nachverfolgen "
"ermöglicht."
#: core/models.py:576
#: core/models.py:577
msgid "Recording mode"
msgstr "Aufzeichnungsmodus"
#: core/models.py:577
#: core/models.py:578
msgid "Defines the mode of recording being called."
msgstr "Definiert den aufgerufenen Aufzeichnungsmodus."
#: core/models.py:583
#: core/models.py:584
msgid "Recording"
msgstr "Aufzeichnung"
#: core/models.py:584
#: core/models.py:585
msgid "Recordings"
msgstr "Aufzeichnungen"
#: core/models.py:692
#: core/models.py:693
msgid "Recording/user relation"
msgstr "Beziehung Aufzeichnung/Benutzer"
#: core/models.py:693
#: core/models.py:694
msgid "Recording/user relations"
msgstr "Beziehungen Aufzeichnung/Benutzer"
#: core/models.py:699
#: core/models.py:700
msgid "This user is already in this recording."
msgstr "Dieser Benutzer ist bereits Teil dieser Aufzeichnung."
#: core/models.py:705
#: core/models.py:706
msgid "This team is already in this recording."
msgstr "Dieses Team ist bereits Teil dieser Aufzeichnung."
#: core/models.py:711
#: core/models.py:712
msgid "Either user or team must be set, not both."
msgstr "Entweder Benutzer oder Team muss festgelegt werden, nicht beides."
#: core/models.py:728
#: core/models.py:729
msgid "Create rooms"
msgstr "Räume erstellen"
#: core/models.py:729
#: core/models.py:730
msgid "List rooms"
msgstr "Räume auflisten"
#: core/models.py:730
#: core/models.py:731
msgid "Retrieve room details"
msgstr "Raumdetails abrufen"
#: core/models.py:731
#: core/models.py:732
msgid "Update rooms"
msgstr "Räume aktualisieren"
#: core/models.py:732
#: core/models.py:733
msgid "Delete rooms"
msgstr "Räume löschen"
#: core/models.py:745
#: core/models.py:746
msgid "Application name"
msgstr "Anwendungsname"
#: core/models.py:746
#: core/models.py:747
msgid "Descriptive name for this application."
msgstr "Beschreibender Name für diese Anwendung."
#: core/models.py:756
#: core/models.py:757
msgid "Hashed on Save. Copy it now if this is a new secret."
msgstr "Beim Speichern gehasht. Jetzt kopieren, wenn dies ein neues Geheimnis ist."
msgstr ""
"Beim Speichern gehasht. Jetzt kopieren, wenn dies ein neues Geheimnis ist."
#: core/models.py:767
#: core/models.py:768
msgid "Application"
msgstr "Anwendung"
#: core/models.py:768
#: core/models.py:769
msgid "Applications"
msgstr "Anwendungen"
#: core/models.py:791
#: core/models.py:792
msgid "Enter a valid domain"
msgstr "Geben Sie eine gültige Domain ein"
#: core/models.py:794
#: core/models.py:795
msgid "Domain"
msgstr "Domain"
#: core/models.py:795
#: core/models.py:796
msgid "Email domain this application can act on behalf of."
msgstr "E-Mail-Domain, im Namen der diese Anwendung handeln kann."
#: core/models.py:807
#: core/models.py:808
msgid "Application domain"
msgstr "Anwendungsdomain"
#: core/models.py:808
#: core/models.py:809
msgid "Application domains"
msgstr "Anwendungsdomains"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-17 15:07+0000\n"
"POT-Creation-Date: 2025-12-17 15:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -175,61 +175,61 @@ msgstr "sub"
#: core/models.py:149
msgid ""
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ "
"characters only."
"Optional for pending users; required upon account activation. 255 characters "
"or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ "
"characters only."
#: core/models.py:157
#: core/models.py:158
msgid "identity email address"
msgstr "identity email address"
#: core/models.py:162
#: core/models.py:163
msgid "admin email address"
msgstr "admin email address"
#: core/models.py:164
#: core/models.py:165
msgid "full name"
msgstr "full name"
#: core/models.py:166
#: core/models.py:167
msgid "short name"
msgstr "short name"
#: core/models.py:172
#: core/models.py:173
msgid "language"
msgstr "language"
#: core/models.py:173
#: core/models.py:174
msgid "The language in which the user wants to see the interface."
msgstr "The language in which the user wants to see the interface."
#: core/models.py:179
#: core/models.py:180
msgid "The timezone in which the user wants to see times."
msgstr "The timezone in which the user wants to see times."
#: core/models.py:182
#: core/models.py:183
msgid "device"
msgstr "device"
#: core/models.py:184
#: core/models.py:185
msgid "Whether the user is a device or a real user."
msgstr "Whether the user is a device or a real user."
#: core/models.py:187
#: core/models.py:188
msgid "staff status"
msgstr "staff status"
#: core/models.py:189
#: core/models.py:190
msgid "Whether the user can log into this admin site."
msgstr "Whether the user can log into this admin site."
#: core/models.py:192
#: core/models.py:193
msgid "active"
msgstr "active"
#: core/models.py:195
#: core/models.py:196
msgid ""
"Whether this user should be treated as active. Unselect this instead of "
"deleting accounts."
@@ -237,63 +237,63 @@ msgstr ""
"Whether this user should be treated as active. Unselect this instead of "
"deleting accounts."
#: core/models.py:208
#: core/models.py:209
msgid "user"
msgstr "user"
#: core/models.py:209
#: core/models.py:210
msgid "users"
msgstr "users"
#: core/models.py:268
#: core/models.py:269
msgid "Resource"
msgstr "Resource"
#: core/models.py:269
#: core/models.py:270
msgid "Resources"
msgstr "Resources"
#: core/models.py:323
#: core/models.py:324
msgid "Resource access"
msgstr "Resource access"
#: core/models.py:324
#: core/models.py:325
msgid "Resource accesses"
msgstr "Resource accesses"
#: core/models.py:330
#: core/models.py:331
msgid "Resource access with this User and Resource already exists."
msgstr "Resource access with this User and Resource already exists."
#: core/models.py:386
#: core/models.py:387
msgid "Visio room configuration"
msgstr "Visio room configuration"
#: core/models.py:387
#: core/models.py:388
msgid "Values for Visio parameters to configure the room."
msgstr "Values for Visio parameters to configure the room."
#: core/models.py:394
#: core/models.py:395
msgid "Room PIN code"
msgstr "Room PIN code"
#: core/models.py:395
#: core/models.py:396
msgid "Unique n-digit code that identifies this room in telephony mode."
msgstr "Unique n-digit code that identifies this room in telephony mode."
#: core/models.py:401 core/models.py:555
#: core/models.py:402 core/models.py:556
msgid "Room"
msgstr "Room"
#: core/models.py:402
#: core/models.py:403
msgid "Rooms"
msgstr "Rooms"
#: core/models.py:566
#: core/models.py:567
msgid "Worker ID"
msgstr "Worker ID"
#: core/models.py:568
#: core/models.py:569
msgid ""
"Enter an identifier for the worker recording.This ID is retained even when "
"the worker stops, allowing for easy tracking."
@@ -301,103 +301,103 @@ msgstr ""
"Enter an identifier for the worker recording.This ID is retained even when "
"the worker stops, allowing for easy tracking."
#: core/models.py:576
#: core/models.py:577
msgid "Recording mode"
msgstr "Recording mode"
#: core/models.py:577
#: core/models.py:578
msgid "Defines the mode of recording being called."
msgstr "Defines the mode of recording being called."
#: core/models.py:583
#: core/models.py:584
msgid "Recording"
msgstr "Recording"
#: core/models.py:584
#: core/models.py:585
msgid "Recordings"
msgstr "Recordings"
#: core/models.py:692
#: core/models.py:693
msgid "Recording/user relation"
msgstr "Recording/user relation"
#: core/models.py:693
#: core/models.py:694
msgid "Recording/user relations"
msgstr "Recording/user relations"
#: core/models.py:699
#: core/models.py:700
msgid "This user is already in this recording."
msgstr "This user is already in this recording."
#: core/models.py:705
#: core/models.py:706
msgid "This team is already in this recording."
msgstr "This team is already in this recording."
#: core/models.py:711
#: core/models.py:712
msgid "Either user or team must be set, not both."
msgstr "Either user or team must be set, not both."
#: core/models.py:728
#: core/models.py:729
#, fuzzy
#| msgid "created on"
msgid "Create rooms"
msgstr "Create rooms"
#: core/models.py:729
#: core/models.py:730
msgid "List rooms"
msgstr "List rooms"
#: core/models.py:730
#: core/models.py:731
msgid "Retrieve room details"
msgstr "Retrieve room details"
#: core/models.py:731
#: core/models.py:732
#, fuzzy
#| msgid "updated on"
msgid "Update rooms"
msgstr "Update rooms"
#: core/models.py:732
#: core/models.py:733
msgid "Delete rooms"
msgstr "Delete rooms"
#: core/models.py:745
#: core/models.py:746
msgid "Application name"
msgstr "Application name"
#: core/models.py:746
#: core/models.py:747
msgid "Descriptive name for this application."
msgstr "Descriptive name for this application."
#: core/models.py:756
#: core/models.py:757
msgid "Hashed on Save. Copy it now if this is a new secret."
msgstr "Hashed on Save. Copy it now if this is a new secret."
#: core/models.py:767
#: core/models.py:768
msgid "Application"
msgstr "Application"
#: core/models.py:768
#: core/models.py:769
msgid "Applications"
msgstr "Applications"
#: core/models.py:791
#: core/models.py:792
msgid "Enter a valid domain"
msgstr "Enter a valid domain"
#: core/models.py:794
#: core/models.py:795
msgid "Domain"
msgstr "Domain"
#: core/models.py:795
#: core/models.py:796
msgid "Email domain this application can act on behalf of."
msgstr "Email domain this application can act on behalf of."
#: core/models.py:807
#: core/models.py:808
msgid "Application domain"
msgstr "Application domain"
#: core/models.py:808
#: core/models.py:809
msgid "Application domains"
msgstr "Application domains"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-17 15:07+0000\n"
"POT-Creation-Date: 2025-12-17 15:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: antoine.lebaud@mail.numerique.gouv.fr\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -179,61 +179,61 @@ msgstr "sub"
#: core/models.py:149
msgid ""
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ "
"characters only."
"Optional for pending users; required upon account activation. 255 characters "
"or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
"Obligatoire. 255 caractères ou moins. Lettres, chiffres et caractères @/./"
"+/-/_ uniquement."
"Optionnel pour les utilisateurs en attente ; requis lors de l'activation du "
"compte. 255 caractères maximum. Lettres, chiffres et @/./+/-/_ uniquement."
#: core/models.py:157
#: core/models.py:158
msgid "identity email address"
msgstr "adresse e-mail d'identité"
#: core/models.py:162
#: core/models.py:163
msgid "admin email address"
msgstr "adresse e-mail d'administrateur"
#: core/models.py:164
#: core/models.py:165
msgid "full name"
msgstr "nom complet"
#: core/models.py:166
#: core/models.py:167
msgid "short name"
msgstr "nom court"
#: core/models.py:172
#: core/models.py:173
msgid "language"
msgstr "langue"
#: core/models.py:173
#: core/models.py:174
msgid "The language in which the user wants to see the interface."
msgstr "La langue dans laquelle l'utilisateur souhaite voir l'interface."
#: core/models.py:179
#: core/models.py:180
msgid "The timezone in which the user wants to see times."
msgstr "Le fuseau horaire dans lequel l'utilisateur souhaite voir les heures."
#: core/models.py:182
#: core/models.py:183
msgid "device"
msgstr "appareil"
#: core/models.py:184
#: core/models.py:185
msgid "Whether the user is a device or a real user."
msgstr "Si l'utilisateur est un appareil ou un utilisateur réel."
#: core/models.py:187
#: core/models.py:188
msgid "staff status"
msgstr "statut du personnel"
#: core/models.py:189
#: core/models.py:190
msgid "Whether the user can log into this admin site."
msgstr "Si l'utilisateur peut se connecter à ce site d'administration."
#: core/models.py:192
#: core/models.py:193
msgid "active"
msgstr "actif"
#: core/models.py:195
#: core/models.py:196
msgid ""
"Whether this user should be treated as active. Unselect this instead of "
"deleting accounts."
@@ -241,65 +241,65 @@ msgstr ""
"Si cet utilisateur doit être traité comme actif. Désélectionnez cette option "
"au lieu de supprimer des comptes."
#: core/models.py:208
#: core/models.py:209
msgid "user"
msgstr "utilisateur"
#: core/models.py:209
#: core/models.py:210
msgid "users"
msgstr "utilisateurs"
#: core/models.py:268
#: core/models.py:269
msgid "Resource"
msgstr "Ressource"
#: core/models.py:269
#: core/models.py:270
msgid "Resources"
msgstr "Ressources"
#: core/models.py:323
#: core/models.py:324
msgid "Resource access"
msgstr "Accès aux ressources"
#: core/models.py:324
#: core/models.py:325
msgid "Resource accesses"
msgstr "Accès aux ressources"
#: core/models.py:330
#: core/models.py:331
msgid "Resource access with this User and Resource already exists."
msgstr ""
"L'accès à la ressource avec cet utilisateur et cette ressource existe déjà."
#: core/models.py:386
#: core/models.py:387
msgid "Visio room configuration"
msgstr "Configuration de la salle de visioconférence"
#: core/models.py:387
#: core/models.py:388
msgid "Values for Visio parameters to configure the room."
msgstr "Valeurs des paramètres de visioconférence pour configurer la salle."
#: core/models.py:394
#: core/models.py:395
msgid "Room PIN code"
msgstr "Code PIN de la salle"
#: core/models.py:395
#: core/models.py:396
msgid "Unique n-digit code that identifies this room in telephony mode."
msgstr ""
"Code unique à n chiffres qui identifie cette salle en mode téléphonique."
#: core/models.py:401 core/models.py:555
#: core/models.py:402 core/models.py:556
msgid "Room"
msgstr "Salle"
#: core/models.py:402
#: core/models.py:403
msgid "Rooms"
msgstr "Salles"
#: core/models.py:566
#: core/models.py:567
msgid "Worker ID"
msgstr "ID du Worker"
#: core/models.py:568
#: core/models.py:569
msgid ""
"Enter an identifier for the worker recording.This ID is retained even when "
"the worker stops, allowing for easy tracking."
@@ -307,99 +307,101 @@ msgstr ""
"Entrez un identifiant pour l'enregistrement du Worker. Cet identifiant est "
"conservé même lorsque le Worker s'arrête, permettant un suivi facile."
#: core/models.py:576
#: core/models.py:577
msgid "Recording mode"
msgstr "Mode d'enregistrement"
#: core/models.py:577
#: core/models.py:578
msgid "Defines the mode of recording being called."
msgstr "Définit le mode d'enregistrement appelé."
#: core/models.py:583
#: core/models.py:584
msgid "Recording"
msgstr "Enregistrement"
#: core/models.py:584
#: core/models.py:585
msgid "Recordings"
msgstr "Enregistrements"
#: core/models.py:692
#: core/models.py:693
msgid "Recording/user relation"
msgstr "Relation enregistrement/utilisateur"
#: core/models.py:693
#: core/models.py:694
msgid "Recording/user relations"
msgstr "Relations enregistrement/utilisateur"
#: core/models.py:699
#: core/models.py:700
msgid "This user is already in this recording."
msgstr "Cet utilisateur est déjà dans cet enregistrement."
#: core/models.py:705
#: core/models.py:706
msgid "This team is already in this recording."
msgstr "Cette équipe est déjà dans cet enregistrement."
#: core/models.py:711
#: core/models.py:712
msgid "Either user or team must be set, not both."
msgstr "Soit l'utilisateur, soit l'équipe doit être défini, pas les deux."
#: core/models.py:728
#: core/models.py:729
msgid "Create rooms"
msgstr "Créer des salles"
#: core/models.py:729
#: core/models.py:730
msgid "List rooms"
msgstr "Lister les salles"
#: core/models.py:730
#: core/models.py:731
msgid "Retrieve room details"
msgstr "Afficher les détails dune salle"
#: core/models.py:731
#: core/models.py:732
msgid "Update rooms"
msgstr "Mettre à jour les salles"
#: core/models.py:732
#: core/models.py:733
msgid "Delete rooms"
msgstr "Supprimer les salles"
#: core/models.py:745
#: core/models.py:746
msgid "Application name"
msgstr "Nom de lapplication"
#: core/models.py:746
#: core/models.py:747
msgid "Descriptive name for this application."
msgstr "Nom descriptif de cette application."
#: core/models.py:756
#: core/models.py:757
msgid "Hashed on Save. Copy it now if this is a new secret."
msgstr "Haché lors de lenregistrement. Copiez-le maintenant sil sagit dun nouveau secret."
msgstr ""
"Haché lors de lenregistrement. Copiez-le maintenant sil sagit dun "
"nouveau secret."
#: core/models.py:767
#: core/models.py:768
msgid "Application"
msgstr "Application"
#: core/models.py:768
#: core/models.py:769
msgid "Applications"
msgstr "Applications"
#: core/models.py:791
#: core/models.py:792
msgid "Enter a valid domain"
msgstr "Saisissez un domaine valide"
#: core/models.py:794
#: core/models.py:795
msgid "Domain"
msgstr "Domaine"
#: core/models.py:795
#: core/models.py:796
msgid "Email domain this application can act on behalf of."
msgstr "Domaine de messagerie au nom duquel cette application peut agir."
#: core/models.py:807
#: core/models.py:808
msgid "Application domain"
msgstr "Domaine dapplication"
#: core/models.py:808
#: core/models.py:809
msgid "Application domains"
msgstr "Domaines dapplication"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-17 15:07+0000\n"
"POT-Creation-Date: 2025-12-17 15:12+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -176,60 +176,61 @@ msgstr "sub"
#: core/models.py:149
msgid ""
"Required. 255 characters or fewer. Letters, numbers, and @/./+/-/_ "
"characters only."
"Optional for pending users; required upon account activation. 255 characters "
"or fewer. Letters, numbers, and @/./+/-/_ characters only."
msgstr ""
"Vereist. 255 tekens of minder. Alleen letters, cijfers en @/./+/-/_ tekens."
"Optioneel voor gebruikers in afwachting; vereist bij accountactivering. "
"Maximum 255 tekens. Alleen letters, cijfers en @/./+/-/_ toegestaan."
#: core/models.py:157
#: core/models.py:158
msgid "identity email address"
msgstr "identiteit e-mailadres"
#: core/models.py:162
#: core/models.py:163
msgid "admin email address"
msgstr "beheerder e-mailadres"
#: core/models.py:164
#: core/models.py:165
msgid "full name"
msgstr "volledige naam"
#: core/models.py:166
#: core/models.py:167
msgid "short name"
msgstr "korte naam"
#: core/models.py:172
#: core/models.py:173
msgid "language"
msgstr "taal"
#: core/models.py:173
#: core/models.py:174
msgid "The language in which the user wants to see the interface."
msgstr "De taal waarin de gebruiker de interface wil zien."
#: core/models.py:179
#: core/models.py:180
msgid "The timezone in which the user wants to see times."
msgstr "De tijdzone waarin de gebruiker tijden wil zien."
#: core/models.py:182
#: core/models.py:183
msgid "device"
msgstr "apparaat"
#: core/models.py:184
#: core/models.py:185
msgid "Whether the user is a device or a real user."
msgstr "Of de gebruiker een apparaat is of een echte gebruiker."
#: core/models.py:187
#: core/models.py:188
msgid "staff status"
msgstr "personeelsstatus"
#: core/models.py:189
#: core/models.py:190
msgid "Whether the user can log into this admin site."
msgstr "Of de gebruiker kan inloggen op deze beheersite."
#: core/models.py:192
#: core/models.py:193
msgid "active"
msgstr "actief"
#: core/models.py:195
#: core/models.py:196
msgid ""
"Whether this user should be treated as active. Unselect this instead of "
"deleting accounts."
@@ -237,64 +238,64 @@ msgstr ""
"Of deze gebruiker als actief moet worden behandeld. Deselecteer dit in "
"plaats van accounts te verwijderen."
#: core/models.py:208
#: core/models.py:209
msgid "user"
msgstr "gebruiker"
#: core/models.py:209
#: core/models.py:210
msgid "users"
msgstr "gebruikers"
#: core/models.py:268
#: core/models.py:269
msgid "Resource"
msgstr "Bron"
#: core/models.py:269
#: core/models.py:270
msgid "Resources"
msgstr "Bronnen"
#: core/models.py:323
#: core/models.py:324
msgid "Resource access"
msgstr "Brontoegang"
#: core/models.py:324
#: core/models.py:325
msgid "Resource accesses"
msgstr "Brontoegangsrechten"
#: core/models.py:330
#: core/models.py:331
msgid "Resource access with this User and Resource already exists."
msgstr "Brontoegang met deze gebruiker en bron bestaat al."
#: core/models.py:386
#: core/models.py:387
msgid "Visio room configuration"
msgstr "Visio-ruimteconfiguratie"
#: core/models.py:387
#: core/models.py:388
msgid "Values for Visio parameters to configure the room."
msgstr "Waarden voor Visio-parameters om de ruimte te configureren."
#: core/models.py:394
#: core/models.py:395
msgid "Room PIN code"
msgstr "Pincode van de kamer"
#: core/models.py:395
#: core/models.py:396
msgid "Unique n-digit code that identifies this room in telephony mode."
msgstr ""
"Unieke n-cijferige code die deze kamer identificeert in telefonie-modus."
#: core/models.py:401 core/models.py:555
#: core/models.py:402 core/models.py:556
msgid "Room"
msgstr "Ruimte"
#: core/models.py:402
#: core/models.py:403
msgid "Rooms"
msgstr "Ruimtes"
#: core/models.py:566
#: core/models.py:567
msgid "Worker ID"
msgstr "Worker ID"
#: core/models.py:568
#: core/models.py:569
msgid ""
"Enter an identifier for the worker recording.This ID is retained even when "
"the worker stops, allowing for easy tracking."
@@ -302,99 +303,100 @@ msgstr ""
"Voer een identificatie in voor de worker-opname. Deze ID blijft behouden, "
"zelfs wanneer de worker stopt, waardoor eenvoudige tracking mogelijk is."
#: core/models.py:576
#: core/models.py:577
msgid "Recording mode"
msgstr "Opnamemodus"
#: core/models.py:577
#: core/models.py:578
msgid "Defines the mode of recording being called."
msgstr "Definieert de modus van opname die wordt aangeroepen."
#: core/models.py:583
#: core/models.py:584
msgid "Recording"
msgstr "Opname"
#: core/models.py:584
#: core/models.py:585
msgid "Recordings"
msgstr "Opnames"
#: core/models.py:692
#: core/models.py:693
msgid "Recording/user relation"
msgstr "Opname/gebruiker-relatie"
#: core/models.py:693
#: core/models.py:694
msgid "Recording/user relations"
msgstr "Opname/gebruiker-relaties"
#: core/models.py:699
#: core/models.py:700
msgid "This user is already in this recording."
msgstr "Deze gebruiker is al in deze opname."
#: core/models.py:705
#: core/models.py:706
msgid "This team is already in this recording."
msgstr "Dit team is al in deze opname."
#: core/models.py:711
#: core/models.py:712
msgid "Either user or team must be set, not both."
msgstr "Ofwel gebruiker of team moet worden ingesteld, niet beide."
#: core/models.py:728
#: core/models.py:729
msgid "Create rooms"
msgstr "Ruimtes aanmaken"
#: core/models.py:729
#: core/models.py:730
msgid "List rooms"
msgstr "Ruimtes weergeven"
#: core/models.py:730
#: core/models.py:731
msgid "Retrieve room details"
msgstr "Details van een ruimte ophalen"
#: core/models.py:731
#: core/models.py:732
msgid "Update rooms"
msgstr "Ruimtes bijwerken"
#: core/models.py:732
#: core/models.py:733
msgid "Delete rooms"
msgstr "Ruimtes verwijderen"
#: core/models.py:745
#: core/models.py:746
msgid "Application name"
msgstr "Naam van de applicatie"
#: core/models.py:746
#: core/models.py:747
msgid "Descriptive name for this application."
msgstr "Beschrijvende naam voor deze applicatie."
#: core/models.py:756
#: core/models.py:757
msgid "Hashed on Save. Copy it now if this is a new secret."
msgstr "Wordt gehasht bij het opslaan. Kopieer het nu als dit een nieuw geheim is."
msgstr ""
"Wordt gehasht bij het opslaan. Kopieer het nu als dit een nieuw geheim is."
#: core/models.py:767
#: core/models.py:768
msgid "Application"
msgstr "Applicatie"
#: core/models.py:768
#: core/models.py:769
msgid "Applications"
msgstr "Applicaties"
#: core/models.py:791
#: core/models.py:792
msgid "Enter a valid domain"
msgstr "Voer een geldig domein in"
#: core/models.py:794
#: core/models.py:795
msgid "Domain"
msgstr "Domein"
#: core/models.py:795
#: core/models.py:796
msgid "Email domain this application can act on behalf of."
msgstr "E-maildomein namens welke deze applicatie kan handelen."
#: core/models.py:807
#: core/models.py:808
msgid "Application domain"
msgstr "Applicatiedomein"
#: core/models.py:808
#: core/models.py:809
msgid "Application domains"
msgstr "Applicatiedomeinen"