Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📊🖌️ Table Designer #7882

Merged
merged 152 commits into from
May 3, 2024
Merged
Show file tree
Hide file tree
Changes from 97 commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
272508b
[#6118] custom url_type button for table designer
wardi Jul 14, 2021
cb9b405
[#6118] create table for table designer resources
wardi Oct 5, 2021
a1fa646
Merge branch 'master' into 6118-table-designer
wardi Oct 8, 2021
63e9c06
[#6118] use blanket for actions
wardi Oct 8, 2021
69529bb
[#6118] form in progress
wardi Oct 13, 2021
5df6313
[#6118] js fixes
wardi Oct 14, 2021
33aa98c
[#6118] set id/type for new fields
wardi Oct 14, 2021
24e3ce4
[#6118] create new fields from form
wardi Oct 19, 2021
975fee0
[#6118] allow defining primary keys
wardi Oct 22, 2021
5e2fd84
[#6118] basic add row functionality
wardi Nov 25, 2021
2091e8e
basic edit row functionality
wardi Dec 20, 2021
e5640b1
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Sep 12, 2022
1d1c083
[#6118] restore plugin after setup.py change
wardi Sep 12, 2022
d4a816d
Merge branch '7085-restore-plugin-template-order' into 6118-table-des…
wardi Sep 15, 2022
90d8c6f
[#6118] display error on duplicate pk
wardi Sep 26, 2022
566d713
[#6118] mark primary keys in add/edit forms
wardi Sep 26, 2022
dc2cf42
[#6118] display error on duplicate pk edit form
wardi Sep 26, 2022
4218ed8
[#6118] remove field js fix
wardi Dec 22, 2022
63dae35
[#6118] indicate primary keys in data dictionary form
wardi Dec 22, 2022
98212de
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Dec 27, 2022
24ed15d
[#6118] source encodings
wardi Dec 27, 2022
e75eb46
[#6118] fix for non-pk label
wardi Feb 9, 2023
f0c3326
[#6118] pass empty strings to upsert
wardi Feb 9, 2023
8143c12
[#6118] edit row button in datatables previews
wardi Mar 15, 2023
459445e
[#6118] safe url generation
wardi Mar 19, 2023
723f1ca
[#6118] tabledesigner fields in resource new form
wardi Mar 22, 2023
bfe4d1f
[#6118] populate table form new resource form
wardi Mar 27, 2023
e1d6fe4
[#6118] show resource after update data dictionary
wardi Mar 27, 2023
310c15a
[#6118] auto-create datatables view
wardi Mar 27, 2023
a8ca110
[#6118] fix for create titles, descriptions
wardi Mar 27, 2023
f277499
[#6118] add field descriptions to add/edit form
wardi Mar 31, 2023
9f1ab3e
[#6118] validate pk fields not blank
wardi Apr 21, 2023
e10d61a
[#6118] maintain pk cols after edit
wardi Apr 21, 2023
49c9171
[#6118] start of column type registry
wardi Apr 26, 2023
244acf5
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi May 1, 2023
6d9e9c9
[#6118] custom empty check per column type
wardi May 1, 2023
1654ed2
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi May 19, 2023
aa904b4
Merge remote-tracking branch 'origin/7573-data-api-extensions' into 6…
wardi May 19, 2023
cfb540f
Merge remote-tracking branch 'origin/7586-edit-navigation' into 6118-…
wardi May 19, 2023
21b8061
[#6118] custom api info for tabledesigner
wardi May 23, 2023
2c7f628
[#6118] dynamic query, insert, update, delete parameters
wardi May 30, 2023
08a057a
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Jun 2, 2023
27dc553
[#6118] fix for empty validation rules
wardi Jun 12, 2023
b3f7b74
[#6118] fix render empty data dictionary
wardi Jun 12, 2023
a40bf57
[#6118] scheming template compat
wardi Jun 13, 2023
19c2b57
[#6118] api data examples from actual data
wardi Jun 27, 2023
f4c5f58
[#7683] datastore_upsert, datastore_create error fixes
wardi Jul 7, 2023
ce44e28
[#7683] remove InvalidDataError and duplicative test
wardi Jul 7, 2023
97ae593
[#7683] remove unused import
wardi Jul 7, 2023
1f39dcd
[#6118] form validation error display for invalid data
wardi Jul 7, 2023
9910948
[#6118] delete rows from datatable view
wardi Jul 21, 2023
481d882
[#6118] separate tdtype from datastore type
wardi Aug 3, 2023
18037b6
[#6118] choices column type
wardi Aug 6, 2023
1e77ce6
[#7748] datastore errors with records_row
wardi Aug 11, 2023
03dd756
[#6118] hide edit row form
wardi Aug 14, 2023
a523d92
[#6118] required fields
wardi Aug 29, 2023
d3afe89
[#6118] delete_rows template
wardi Aug 29, 2023
ecf5476
[#6118] pk/required fix
wardi Aug 29, 2023
4f9224b
[#6118] show bad column id errors
wardi Sep 6, 2023
f8be9a8
[#6118] remove tabledesigner form from resource create page
wardi Sep 6, 2023
7c17caa
[#6118] allow complete standard_field overrides
wardi Sep 11, 2023
ca64d21
[#6118] more generic view name
wardi Sep 15, 2023
d4cc685
[#6118] remove remaining prefix references
wardi Oct 11, 2023
f353856
[#6118] preview records to be deleted
wardi Oct 11, 2023
13c2468
[#6118] choice form snippet
wardi Oct 11, 2023
92d970f
[#6118] handle type error on edit
wardi Oct 11, 2023
b562aa8
[#6118] tabledesigner datastore tables can be updated without force=True
wardi Oct 11, 2023
e145a53
[#6118] correct tag for headings
wardi Oct 21, 2023
5b2eadc
[#6118] date types
wardi Oct 24, 2023
a30cf8d
[#6118] use html input types
wardi Oct 24, 2023
ad1279c
[#6118] fix template failure edge case
wardi Oct 30, 2023
b6b60c8
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Oct 30, 2023
3209ae2
[#6118] flake8
wardi Oct 31, 2023
d09c955
[#6118] changes file
wardi Oct 31, 2023
ae7ac09
[#6118] typing
wardi Oct 31, 2023
3f36b14
[#6118] flake8
wardi Oct 31, 2023
2cd991f
Merge remote-tracking branch 'origin/type-update-2023-10' into 6118-t…
wardi Oct 31, 2023
3afe174
[#6118] Extend API examples only on tabledesigner resources
wardi Nov 3, 2023
8d067fc
[#6118] required and validation logic in column_types
wardi Nov 6, 2023
afd7865
[#6118] design snippets for column types
wardi Nov 6, 2023
3c9f741
[#6118] IColumnTypes
wardi Nov 7, 2023
8cdc851
[#6118] IColumnConstraints
wardi Nov 9, 2023
3bccbb5
[#6118] update examples
wardi Nov 10, 2023
352ed6c
[#6118] fix column deletion issue
wardi Nov 10, 2023
b702fef
[#6118] fix column add issue
wardi Nov 10, 2023
0c6c160
[#6118] PatternConstraint
wardi Nov 10, 2023
f444faa
[#6118] use classes like a normal person
wardi Nov 12, 2023
29652c0
[#6118] enforce email field validation
wardi Nov 13, 2023
bb54680
[#6118] trim text primary key values
wardi Nov 13, 2023
a0acb80
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Nov 14, 2023
fd44d88
[#6118] allow choice mappings
wardi Nov 14, 2023
9d90d48
[#6118] excel validation rules, formats
wardi Nov 15, 2023
7a99503
[#6118] fix for RangeConstraint excel rule
wardi Nov 16, 2023
afa8056
[#6118] technical writing edits
wardi Dec 4, 2023
fa46a7c
[#6118] choice textarea, fr translations
wardi Dec 15, 2023
608c593
[#6118] typo fix
wardi Dec 19, 2023
18ecd01
[#6118] more fr translations
wardi Dec 22, 2023
9a223f6
[#6118] fix timestamp table schema mapping
wardi Jan 2, 2024
2173972
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Jan 3, 2024
1710d70
[#6118] update fr translations
wardi Jan 16, 2024
edeb008
Merge remote-tracking branch 'origin/7971-data-dictionary-form' into …
wardi Jan 18, 2024
9c88172
Merge remote-tracking branch 'origin/7971-data-dictionary-form' into …
wardi Jan 27, 2024
9086063
[#6118] use IDataDictionaryForm
wardi Jan 30, 2024
65e2fdc
[#6118] data dictionary error handling
wardi Jan 30, 2024
02da162
[#6118] types and fixes
wardi Jan 31, 2024
f60328a
[#6118] fixes
wardi Feb 1, 2024
f3b5ad2
[#6118] fix, update examples
wardi Feb 1, 2024
bd3c130
[#6118] fix for choice column
wardi Feb 7, 2024
134f181
[#6118] immutable checkbox fix
wardi Feb 2, 2024
df10269
[#6118] tabledesigner upgrade cli
wardi Feb 9, 2024
162e6c5
[#6118] types and style
wardi Feb 13, 2024
5bb6f0b
[#6118] upgrade choices fix
wardi Feb 13, 2024
381935f
[#6118] upgrade choices fix 2
wardi Feb 15, 2024
a88bf02
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Feb 22, 2024
aac210d
[#6118] Table Designer docs: creating tables
wardi Feb 23, 2024
c979930
[#6118] Table Designer docs: loading data
wardi Feb 27, 2024
d47d7a5
[#6118] Table Designer docs: remove unnecessary image, passive voice
wardi Feb 27, 2024
7eb27cf
[#6118] Table Designer docs: extending table designer
wardi Feb 28, 2024
4641de1
Merge branch '8092-readthedocs-build' into 6118-table-designer
wardi Feb 28, 2024
4f3afdc
[#6118] Table Designer docs: start custom type example
wardi Feb 29, 2024
45007fd
[#6118] Table Designer docs: custom column constraint example
wardi Mar 1, 2024
2ca4049
[#6118] Table Designer docs: screenshots
wardi Mar 1, 2024
16e6acb
[#6118] Table Designer docs: ref fix, document _SQL_IS_EMPTY
wardi Mar 1, 2024
3182f1c
[#6118] Table Designer docs: link to source on github from reference
wardi Mar 5, 2024
23706c7
[#6118] Table Designer docs: use tag instead of version
wardi Mar 5, 2024
a158320
[#6118] fix variable name
wardi Mar 5, 2024
c77c2d0
[#6118] spelling fixes
wardi Mar 7, 2024
6119ee9
[#6118] fix for deleting fields
wardi Mar 11, 2024
7e44c4e
Merge branch '8108-data-dictionary-preview' into 6118-table-designer
wardi Mar 13, 2024
8f64421
[#6118] table designer info in data dictionary view
wardi Mar 13, 2024
a6f815b
[#8108] no accordion when no extra data
wardi Mar 18, 2024
eb80a5b
[#8108] fix for field ids with spaces
wardi Mar 15, 2024
be174d9
[#8108] ckanext-dsaudit compat
wardi Mar 15, 2024
4a51415
Merge remote-tracking branch 'origin/master' into 6118-table-designer
wardi Mar 21, 2024
27b9164
[#6118] obligation in dictionary view
wardi Mar 21, 2024
198ac45
[#6118] ckanext-dsaudit screenshots
wardi Mar 21, 2024
6e92d1c
Merge branch 'master' into 6118-table-designer
amercader Apr 26, 2024
b09be9a
[#6118] align create/edit text
wardi Apr 30, 2024
75568cd
[#6118] alert for empty table
wardi Apr 30, 2024
4fc42e6
[#6118] datastore_upsert: no fail on no fields
wardi Apr 30, 2024
4a11723
[#6118] move add button to datatable
wardi Apr 30, 2024
539a434
[#6118] remove upgrade cli (only pre-release users affected)
wardi Apr 30, 2024
c125d07
[#6118] add docs link to DataStore
wardi Apr 30, 2024
224a5e2
[#6118] update add row docs, s/linked/referenced/
wardi Apr 30, 2024
492f768
[#6118] fix missing datatables_view, deleted table view cases
wardi Apr 30, 2024
7477bac
[#6118] flake8
wardi Apr 30, 2024
526ca1e
[#6118] accordion for data dictionary form
wardi Apr 30, 2024
f79d99c
[#6118] better-looking deleted field message
wardi Apr 30, 2024
73a7b8c
[#6118] Data API: use example values from ColumnTypes
wardi May 1, 2024
9dea85c
[#6118] css fix from @amercader
wardi May 2, 2024
add57cd
[#6118] move js to templates that need them
wardi May 2, 2024
2a59ad5
Merge branch 'master' into 6118-table-designer
amercader May 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 10 additions & 0 deletions changes/6118.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Table Designer: UI for datastore-first datasets

Use Table Designer option on resource url/upload control for:
- automatic creation of datatable view for new Table Designer resources
- add/delete columns and edit schema via Data Dictionary page
- primary keys and required columns fully supported
- add individual rows with an auto-generated form based on the schema
- data validation enforced by postgresql triggers, rendered as friendly errors in forms
- extended datatable preview with "edit row" and "delete rows" buttons for managing data
- automatic API documentation for upsert/delete with examples from real data when available
325 changes: 324 additions & 1 deletion ckan/i18n/fr/LC_MESSAGES/ckan.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
# Translators:
# Adrià Mercader <adria.mercader@okfn.org>, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: ckan 2.10.0b0\n"
Expand Down Expand Up @@ -5286,3 +5285,327 @@ msgstr "URL de la page Web"
msgid "eg. http://example.com (if blank uses resource url)"
msgstr ""
"p. ex. http://exemple.com (si elle est vide utiliser l'URL de la ressource)"

#: ckanext/datastore/templates/ajax_snippets/api_info.html:77
#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:35
msgid "SQL query example:"
msgstr "Exemple de requête SQL :"

#: ckanext/datastore/templates/ajax_snippets/api_info.html:90
msgid "Using the API with this Web Browser"
msgstr "Utiliser l’API avec ce navigateur Web"

#: ckanext/datastore/templates/ajax_snippets/api_info.html:94
msgid "Some API endpoints may be accessed using a GET query string."
msgstr "On peut accéder à certains points d’extrémité de l’API au moyen d’une chaîne de requête GET."

#: ckanext/datastore/templates/datastore/api_examples/python.html:9
#, python-format
msgid "(using the <a href=\"%(url)s\">ckanapi</a> client library)"
msgstr "(en utilisant la bibliothèque client<a href=\"%(url)s\">ckanapi</a>)"

#: ckanext/datastore/templates/datastore/snippets/dictionary_form.html:5
#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:31
msgid "Primary key"
msgstr "Clé primaire"

#: ckanext/tabledesigner/column_constraints.py:63
msgid "Below minimum"
msgstr "Inférieur au minimum"

#: ckanext/tabledesigner/column_constraints.py:72
msgid "Above maximum"
msgstr "Supérieur au maximum"

#: ckanext/tabledesigner/column_constraints.py:118
msgid "Does not match pattern"
msgstr "Ne correspond pas au modèle"

#: ckanext/tabledesigner/column_constraints.py:120
msgid "Data dictionary field pattern is invalid"
msgstr "Modèle de champ du dictionnaire de données invalide"

#: ckanext/tabledesigner/column_types.py:85
msgid "Unicode text of any length"
msgstr "Texte Unicode de n’importe quelle longueur"

#: ckanext/tabledesigner/column_types.py:86
msgid "free-form text"
msgstr "Rtexte libre"

#: ckanext/tabledesigner/column_types.py:108
msgid "Choice"
msgstr "Choix"

#: ckanext/tabledesigner/column_types.py:109
msgid "Choose one option from a fixed list"
msgstr "Choisir une option dans une liste fixe"

#: ckanext/tabledesigner/column_types.py:158
msgid "Email Address"
msgstr "Adresse e-mail"

#: ckanext/tabledesigner/column_types.py:159
msgid "A single email address"
msgstr "Une seule adresse courriel"

#: ckanext/tabledesigner/column_types.py:186
msgid "Invalid email"
msgstr "Courriel invalide"

#: ckanext/tabledesigner/column_types.py:192
msgid "URI"
msgstr ""

#: ckanext/tabledesigner/column_types.py:193
msgid "Uniform resource identifier (URL or URN)"
msgstr "Adresse URI ou URN"

#: ckanext/tabledesigner/column_types.py:203
msgid "Universally unique identifier (UUID)"
msgstr "Adresse UUID"

#: ckanext/tabledesigner/column_types.py:204
msgid "A universally unique identifier as hexadecimal"
msgstr "Identifiant universel unique sous forme hexadécimale"

#: ckanext/tabledesigner/column_types.py:214
msgid "Numeric"
msgstr "Numérique"

#: ckanext/tabledesigner/column_types.py:215
msgid ""
"Number with arbitrary precision (any number of digits before and after "
"the decimal)"
msgstr "Nombre avec une précision arbitraire (n’importe quel nombre de chiffres avant et après la décimale)"

#: ckanext/tabledesigner/column_types.py:228
msgid "Integer"
msgstr "Entier"

#: ckanext/tabledesigner/column_types.py:229
msgid "Whole numbers with no decimal"
msgstr "Nombres entiers sans décimale"

#: ckanext/tabledesigner/column_types.py:241
msgid "Boolean"
msgstr "Booléen"

#: ckanext/tabledesigner/column_types.py:242
msgid "True or false values"
msgstr "Valeurs vraies ou fausses"

#: ckanext/tabledesigner/column_types.py:252
msgid "FALSE"
msgstr "FALSE"

#: ckanext/tabledesigner/column_types.py:253
msgid "TRUE"
msgstr "TRUE"

#: ckanext/tabledesigner/column_types.py:269
msgid "JSON"
msgstr ""

#: ckanext/tabledesigner/column_types.py:270
msgid "A JSON object"
msgstr "Un objet JSON"

#: ckanext/tabledesigner/column_types.py:280
msgid "Date without time of day"
msgstr "Date sans heure du jour"

#: ckanext/tabledesigner/column_types.py:295
msgid "Timestamp"
msgstr "Horodatage"

#: ckanext/tabledesigner/column_types.py:296
msgid "Date and time without time zone"
msgstr "Date et heure sans fuseau horaire"

#: ckanext/tabledesigner/views.py:52
msgid "Required fields missing"
msgstr "Champs obligatoires manquants"

#: ckanext/tabledesigner/views.py:85
msgid "Table Designer fields updated."
msgstr "Mise à jour des champs du concepteur de tableaux."

#: ckanext/tabledesigner/views.py:135 ckanext/tabledesigner/views.py:217
msgid "Duplicate primary key exists"
msgstr "Clé primaire existe en double"

#: ckanext/tabledesigner/views.py:140 ckanext/tabledesigner/views.py:222
msgid "Invalid input"
msgstr "Entrée non valide"

#: ckanext/tabledesigner/views.py:183
msgid "Row not found"
msgstr "Rangée introuvable"

#: ckanext/tabledesigner/views.py:264
msgid "Row(s) not found"
msgstr "Rangée(s) introuvable(s)"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:29
msgid "Get results filtered by the contents of specific fields:"
msgstr "Obtenir des résultats filtrés par le contenu de champs spécifiques :"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:45
msgid "Inserting and Updating"
msgstr "Insertion et mise à jour"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:49
msgid "Insert a new record:"
msgstr "Insérer un nouvel enregistrement :"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:53
msgid "Update an existing record:"
msgstr "Mettre à jour un enregistrement existant :"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:57
#, python-format
msgid ""
"\"%(method)s\" defaults to \"%(upsert)s\" i.e. records will be inserted "
"or updated based on the primary key values passed"
msgstr "\"%(method)s\" defaults to \"%(upsert)s\" c.-à-d. que les enregistrements seront insérés ou mis à jour en fonction des valeurs de la clé primaire transmises
"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:65
msgid "Deleting"
msgstr "Suppression"

#: ckanext/tabledesigner/templates/ajax_snippets/api_info.html:69
msgid "Delete a record:"
msgstr "Supprimer un enregistrement :"

#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:18
msgid "ID"
msgstr ""

#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:20
msgid "Field identifier or column heading when exported to CSV"
msgstr "Identificateur de champ ou titre de colonne lors de l’exportation au format CSV"

#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:27
msgid "Obligation"
msgstr "Obligation"

#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:29
msgid "Optional"
msgstr "Optionnel"

#: ckanext/tabledesigner/templates/datastore/snippets/dictionary_form.html:30
msgid "Required"
msgstr "Exigée"

#: ckanext/tabledesigner/templates/datatables/datatables_view.html:7
msgid "Delete rows"
msgstr "Supprimer des rangées"

#: ckanext/tabledesigner/templates/datatables/datatables_view.html:12
#: ckanext/tabledesigner/templates/tabledesigner/edit_row.html:10
msgid "Edit row"
msgstr "Modifier la rangée"

#: ckanext/tabledesigner/templates/package/resource_read.html:10
#: ckanext/tabledesigner/templates/package/snippets/resource_upload_field.html:9
#: ckanext/tabledesigner/templates/package/snippets/resource_upload_field.html:18
msgid "Table Designer"
msgstr "Concepteur de tableau"

#: ckanext/tabledesigner/templates/package/resource_read.html:15
#: ckanext/tabledesigner/templates/tabledesigner/add_row.html:10
msgid "Add row"
msgstr "Ajouter une rangée"

#: ckanext/tabledesigner/templates/package/snippets/resource_upload_field.html:6
msgid "Create a custom table for your data"
msgstr "Créer un tableau personnalisé pour vos données"

#: ckanext/tabledesigner/templates/package/snippets/resource_upload_field.html:20
msgid "Create this resource then, design the table from the Data Dictionary tab"
msgstr "Créer cette ressource, puis concevoir le tableau à partir de l’onglet Dictionnaire de données"

#: ckanext/tabledesigner/templates/package/snippets/resource_upload_field.html:22
#, python-format
msgid ""
"Use the <a href=\"%(url)s\">Data Dictionary</a> tab to customize this "
"table."
msgstr "Utiliser le <a href=\"%(url)s\">Dictionnaire de données</a> pour personnaliser ce tableau."

#: ckanext/tabledesigner/templates/tabledesigner/delete_rows.html:6
#: ckanext/tabledesigner/templates/tabledesigner/delete_rows.html:10
msgid "Delete row"
msgid_plural "Delete rows"
msgstr[0] "Supprimer la rangée"
msgstr[1] "Supprimer des rangées"
msgstr[2] "Supprimer des rangées"

#: ckanext/tabledesigner/templates/tabledesigner/delete_rows.html:12
msgid "Delete {num} row?"
msgid_plural "Delete {num} rows?"
msgstr[0] "Supprimer {num} rangée?"
msgstr[1] "Supprimer {num} rangée?"
msgstr[2] "Supprimer {num} rangée?"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/pattern.html:3
msgid "Pattern"
msgstr "Modèle"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/pattern.html:10
msgid ""
"Regular expression to match against the field, e.g. <code>AB-\\d{6}</code> "
"for text starting with <code>AB-</code> and ending with 6 digits"
msgstr ""
"Expression régulière établissant une correspondance avec le champ, p. ex. "
"<code>AB-\d{6}</code> pour un texte commençant avec <code>AB-</code> et se "
"terminant avec six chiffres"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/range.html:3
msgid "Minimum"
msgstr "Minimum"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/range.html:11
msgid "Minimum permitted value for data in this column"
msgstr "Valeur minimale autorisée pour les données de cette colonne"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/range.html:17
msgid "Maximum"
msgstr "Maximum"

#: ckanext/tabledesigner/templates/tabledesigner/constraint_snippets/range.html:25
msgid "Maximum permitted value for data in this column"
msgstr "Valeur maximale autorisée pour les données de cette colonne"

#: ckanext/tabledesigner/templates/tabledesigner/design_snippets/choice.html:2
msgid "Choices"
msgstr "Choix"

#: ckanext/tabledesigner/templates/tabledesigner/design_snippets/choice.html:5
msgid "Add one option per line (press enter after each option is entered)"
msgstr "Ajouter une option par ligne (appuyer sur la touche Entrée après chaque option)"

#: ckanext/tabledesigner/templates/tabledesigner/form_snippets/choice.html:14
msgid "(invalid choice)"
msgstr "(choix non valide)"

#: ckanext/tabledesigner/templates/tabledesigner/form_snippets/choice.html:31
#: ckanext/tabledesigner/templates/tabledesigner/form_snippets/text.html:9
msgid " (Primary key)"
msgstr " (Clé primaire)"

#: ckanext/tabledesigner/templates/tabledesigner/snippets/design_fields.html:16
msgid ""
"Field {num} removed. Click Save below to save your changes and delete all"
" data in this field."
msgstr "Champ {num} supprimé. Cliquez sur Enregistrer ci-dessous pour enregistrer vos modifications et supprimer toutes les données de ce champ."

#: ckanext/tabledesigner/templates/tabledesigner/snippets/design_fields.html:30
msgid "Add field"
msgstr "Ajouter un champ"

#: ckanext/textview/assets/text_view.js:70
msgid "An error occured during AJAX request. Could not load view."
msgstr ""
"Une erreur est survenue durant une requête AJAX. La vue n'a pas pu être "
12 changes: 12 additions & 0 deletions ckan/lib/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2513,6 +2513,18 @@ def unified_resource_format(format: str) -> str:
return format_new


@core_helper
def resource_url_type(resource_id: str) -> str:
'''api_info ajax snippet: "which extension manages this resource_id?"'''
# ajax snippets have no permissions checking and require things like
# this for full functionality, should we stop using them instead?
query = model.Session.query(model.Resource.url_type).filter(
model.Resource.id == resource_id,
)
result = query.one_or_none()
return result[0] if result else ''


@core_helper
def check_config_permission(permission: str) -> Union[list[str], bool]:
return authz.check_config_permission(permission)
Expand Down
10 changes: 3 additions & 7 deletions ckanext/datastore/blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,17 +139,13 @@ def _prepare(self, id: str, resource_id: str) -> dict[str, Any]:
# resource_edit_base template uses these
pkg_dict = get_action(u'package_show')({}, {u'id': id})
resource = get_action(u'resource_show')({}, {u'id': resource_id})
rec = get_action(u'datastore_search')(
{}, {
u'resource_id': resource_id,
u'limit': 0
}
)
rec = get_action(u'datastore_info')({}, {u'id': resource_id})
return {
u'pkg_dict': pkg_dict,
u'resource': resource,
u'fields': [
f for f in rec[u'fields'] if not f[u'id'].startswith(u'_')
f for f in rec.get('fields', [])
if not f[u'id'].startswith(u'_')
]
}

Expand Down