├── .circleci └── config.yml ├── .editorconfig ├── .gitignore ├── .lighthouseci └── front-plugin-udata.cfg ├── .nvmrc ├── .postcssrc ├── .pre-commit-config.yaml ├── .pyup.yml ├── .storybook ├── custom-runner.js ├── load-theme-preview-preset.ts ├── main.ts ├── msw │ └── mockServiceWorker.js ├── preview-head.html └── preview.ts ├── CHANGELOG.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── babel.cfg ├── bumpr.rc ├── coverage.rc ├── crowdin.yml ├── cypress.config.js ├── cypress ├── cypress.config.js ├── e2e │ ├── a11y.cy.js │ ├── datasets.cy.js │ ├── discussions.cy.js │ ├── home.cy.js │ ├── menu-search.cy.js │ └── register.cy.js ├── fixtures │ ├── dataset.json │ ├── example.json │ └── organization.json ├── support │ ├── commands.js │ ├── component-index.html │ ├── component.js │ └── e2e.js └── udata-front-e2e.cfg.example ├── jsconfig.json ├── lighthouserc.js ├── package-lock.json ├── package.json ├── pep8.rc ├── public └── mockServiceWorker.js ├── requirements ├── develop.in ├── develop.pip ├── install.in ├── install.pip ├── test.in ├── test.pip ├── udata.in └── udata.pip ├── setup.cfg ├── setup.py ├── svgo.config.js ├── tasks.py ├── test-runner-jest.config.js ├── tox.ini ├── tsconfig.json ├── udata-front-plugins-helper ├── README.md ├── package-lock.json ├── package.json ├── postcss.config.js ├── src │ ├── env.d.ts │ └── index.ts ├── test │ ├── index.test-d.ts │ └── index.test.ts ├── tsconfig.json └── vite.config.ts ├── udata_front ├── __init__.py ├── api.py ├── forms.py ├── frontend │ ├── __init__.py │ ├── error_handlers.py │ ├── helpers.py │ ├── markdown.py │ ├── menu_helpers.py │ └── resource_helpers.py ├── migrations │ ├── 2015-07-07-C3-datasets-titles.txt │ ├── 2015-07-10-dataconnexions-badges.js │ ├── 2015-09-14-dataconnexions-6.js │ ├── 2015-09-28-fix-maaf-harvester-doublouns.js │ ├── 2016-04-05-deactivate-datapublica.js │ ├── 2017-01-05-geozones-admin-levels-fr.js │ ├── 2017-08-04-fix-wrong-spatial-coverages.js │ ├── 2018-04-09-normalize-resource-filetype.js │ └── 2018-04-18-migrate-active-users.js ├── models.py ├── settings.py ├── static │ ├── c3 │ │ └── logo-c3.png │ ├── dataconnexions │ │ ├── dataconnexions6-logo-couleur.png │ │ ├── logo-blanc-rouge.png │ │ ├── logo-blanc.png │ │ ├── logo-couleur-rouge.png │ │ ├── logo-couleur.png │ │ └── logo-transparent.png │ ├── faq │ │ ├── integration │ │ │ └── exemple-integration-blog-etalab.png │ │ └── outils │ │ │ ├── 800px-CartePOI.png │ │ │ ├── 800px-Evolutionbio.png │ │ │ ├── 800px-Inventaire_du_patrimoine_Poitou-Chatrentes.png │ │ │ ├── 800px-Inventaire_du_patrimoine_vecteurs.png │ │ │ ├── 800px-OSM-cadastre.png │ │ │ ├── 800px-TileMill.png │ │ │ ├── Alluvial.png │ │ │ ├── Dependencies.png │ │ │ ├── Heatmap-salons-coiffure-paris-opendatasoft.png │ │ │ └── PAC2012.jpg │ ├── licences │ │ ├── ETALAB-Licence-Ouverte-v2.0.pdf │ │ ├── description-contenu.pdf │ │ ├── homologation-licences-2017-05-05.pdf │ │ ├── homologation-licences-2017-09-26.pdf │ │ ├── homologation-licences-2017-09-29.pdf │ │ ├── homologation-licences-2019-04-17.pdf │ │ ├── homologation-licences-2019-05-29.pdf │ │ ├── licence-d-utilisation-a-titre-gratuit-de-l-IGN-2017-05-05.pdf │ │ ├── licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-de-PI-2019-04-17.pdf │ │ ├── licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-du-RNCS-2019-04-17.pdf │ │ ├── licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2017-05-05.pdf │ │ └── licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2019-05-29.pdf │ ├── nec_mergitur │ │ └── logo_nec_mergitur.png │ └── openfield16 │ │ └── logo.jpg ├── tests │ ├── __init__.py │ ├── conftest.py │ ├── frontend │ │ ├── __init__.py │ │ └── test_frontend_filters.py │ ├── test_api.py │ ├── test_discussions.py │ ├── test_error.py │ ├── test_forms.py │ ├── test_security.py │ ├── test_sitemap.py │ ├── test_static_pages.py │ ├── tests.py │ └── views │ │ ├── __init__.py │ │ ├── test_dataset.py │ │ ├── test_oembed.py │ │ ├── test_organization.py │ │ ├── test_post.py │ │ ├── test_reuse.py │ │ ├── test_security.py │ │ ├── test_site.py │ │ ├── test_territories.py │ │ ├── test_topic.py │ │ └── test_user.py ├── theme │ ├── __init__.py │ ├── gouvfr │ │ ├── __init__.py │ │ ├── assets │ │ │ ├── fonts │ │ │ │ ├── Marianne-ExtraBold.woff │ │ │ │ ├── Marianne-ExtraBold.woff2 │ │ │ │ ├── Spectral-Italic.woff │ │ │ │ └── Spectral-Italic.woff2 │ │ │ ├── img │ │ │ │ ├── favicon.png │ │ │ │ ├── homepage │ │ │ │ │ ├── annuaire.png │ │ │ │ │ ├── annuaire@2x.png │ │ │ │ │ ├── datasets.png │ │ │ │ │ ├── datasets@2x.png │ │ │ │ │ ├── datasets@3x.png │ │ │ │ │ ├── dvf.png │ │ │ │ │ ├── dvf@2x.png │ │ │ │ │ ├── hero-background.png │ │ │ │ │ ├── reuses.png │ │ │ │ │ ├── reuses@2x.png │ │ │ │ │ └── reuses@3x.png │ │ │ │ ├── logo-social.png │ │ │ │ ├── organizations │ │ │ │ │ ├── cnil.png │ │ │ │ │ ├── cnil@2x.png │ │ │ │ │ ├── cnil@3x.png │ │ │ │ │ ├── googlemaps.png │ │ │ │ │ ├── googlemaps@2x.png │ │ │ │ │ ├── googlemaps@3x.png │ │ │ │ │ ├── insee.png │ │ │ │ │ ├── insee@2x.png │ │ │ │ │ ├── insee@3x.png │ │ │ │ │ ├── lemonde.png │ │ │ │ │ ├── lemonde@2x.png │ │ │ │ │ ├── lemonde@3x.png │ │ │ │ │ ├── liberation.png │ │ │ │ │ ├── liberation@2x.png │ │ │ │ │ ├── liberation@3x.png │ │ │ │ │ ├── minedu.png │ │ │ │ │ ├── minedu@2x.png │ │ │ │ │ ├── minedu@3x.png │ │ │ │ │ ├── spf.png │ │ │ │ │ ├── spf@2x.png │ │ │ │ │ ├── spf@3x.png │ │ │ │ │ ├── wikimedia.png │ │ │ │ │ ├── wikimedia@2x.png │ │ │ │ │ └── wikimedia@3x.png │ │ │ │ └── placeholders │ │ │ │ │ ├── author.png │ │ │ │ │ ├── dataset.png │ │ │ │ │ ├── news.png │ │ │ │ │ ├── organization.png │ │ │ │ │ └── reuse.png │ │ │ ├── js │ │ │ │ ├── Introduction.mdx │ │ │ │ ├── admin.ts │ │ │ │ ├── api │ │ │ │ │ ├── dataservices.ts │ │ │ │ │ ├── datasets.ts │ │ │ │ │ ├── discussions.ts │ │ │ │ │ ├── harvesters.ts │ │ │ │ │ ├── licenses.ts │ │ │ │ │ ├── me.ts │ │ │ │ │ ├── organizations.ts │ │ │ │ │ ├── posts.ts │ │ │ │ │ ├── reports.ts │ │ │ │ │ ├── resources.ts │ │ │ │ │ ├── reuses.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── users.ts │ │ │ │ ├── components │ │ │ │ │ ├── Accordion │ │ │ │ │ │ ├── Accordion.mdx │ │ │ │ │ │ ├── Accordion.stories.ts │ │ │ │ │ │ ├── Accordion.vue │ │ │ │ │ │ ├── AccordionGroup.mdx │ │ │ │ │ │ ├── AccordionGroup.stories.ts │ │ │ │ │ │ └── AccordionGroup.vue │ │ │ │ │ ├── AdminAddMember │ │ │ │ │ │ ├── AdminAddMemberButton.vue │ │ │ │ │ │ └── AdminAddMemberModal.vue │ │ │ │ │ ├── AdminBadge │ │ │ │ │ │ ├── AdminBadge.mdx │ │ │ │ │ │ ├── AdminBadge.stories.ts │ │ │ │ │ │ └── AdminBadge.vue │ │ │ │ │ ├── AdminContentWithTooltip │ │ │ │ │ │ ├── AdminContentWithTooltip.mdx │ │ │ │ │ │ ├── AdminContentWithTooltip.stories.ts │ │ │ │ │ │ └── AdminContentWithTooltip.vue │ │ │ │ │ ├── AdminDangerZone │ │ │ │ │ │ ├── AdminDangerZone.mdx │ │ │ │ │ │ ├── AdminDangerZone.stories.ts │ │ │ │ │ │ └── AdminDangerZone.vue │ │ │ │ │ ├── AdminEditMember │ │ │ │ │ │ ├── AdminEditMemberButton.vue │ │ │ │ │ │ └── AdminEditMemberModal.vue │ │ │ │ │ ├── AdminEmail │ │ │ │ │ │ └── AdminEmail.vue │ │ │ │ │ ├── AdminLoader │ │ │ │ │ │ ├── AdminLoader.stories.ts │ │ │ │ │ │ └── AdminLoader.vue │ │ │ │ │ ├── AdminMembershipRequest │ │ │ │ │ │ ├── AdminMembershipRequest.mdx │ │ │ │ │ │ ├── AdminMembershipRequest.stories.ts │ │ │ │ │ │ └── AdminMembershipRequest.vue │ │ │ │ │ ├── AdminSidebar │ │ │ │ │ │ ├── AdminSidebarLink │ │ │ │ │ │ │ ├── AdminSidebarLink.mdx │ │ │ │ │ │ │ ├── AdminSidebarLink.stories.ts │ │ │ │ │ │ │ └── AdminSidebarLink.vue │ │ │ │ │ │ └── AdminSidebarMenu │ │ │ │ │ │ │ ├── AdminSidebarMenu.mdx │ │ │ │ │ │ │ ├── AdminSidebarMenu.stories.ts │ │ │ │ │ │ │ └── AdminSidebarMenu.vue │ │ │ │ │ ├── AdminTable │ │ │ │ │ │ ├── AdminCommunityResourcesTable │ │ │ │ │ │ │ ├── AdminCommunityResourcesTable.stories.ts │ │ │ │ │ │ │ └── AdminCommunityResourcesTable.vue │ │ │ │ │ │ ├── AdminDatasetsTable │ │ │ │ │ │ │ ├── AdminDatasetsTable.stories.ts │ │ │ │ │ │ │ └── AdminDatasetsTable.vue │ │ │ │ │ │ ├── AdminDiscussionsTable │ │ │ │ │ │ │ └── AdminDiscussionsTable.vue │ │ │ │ │ │ ├── AdminReusesTable │ │ │ │ │ │ │ ├── AdminReusesTable.stories.ts │ │ │ │ │ │ │ └── AdminReusesTable.vue │ │ │ │ │ │ ├── AdminTable.mdx │ │ │ │ │ │ └── Table │ │ │ │ │ │ │ ├── AdminTable.stories.ts │ │ │ │ │ │ │ ├── AdminTable.vue │ │ │ │ │ │ │ └── AdminTableTh.vue │ │ │ │ │ ├── Alert │ │ │ │ │ │ ├── Alert.stories.js │ │ │ │ │ │ └── Alert.vue │ │ │ │ │ ├── Breadcrumb │ │ │ │ │ │ └── Breadcrumb.vue │ │ │ │ │ ├── ContactPointSelector │ │ │ │ │ │ ├── ContactPointSelector.stories.ts │ │ │ │ │ │ └── ContactPointSelector.vue │ │ │ │ │ ├── DataservicesSearch │ │ │ │ │ │ ├── DataservicesSearch.stories.ts │ │ │ │ │ │ └── DataservicesSearch.vue │ │ │ │ │ ├── Form │ │ │ │ │ │ ├── ActionCard │ │ │ │ │ │ │ ├── ActionCard.mdx │ │ │ │ │ │ │ ├── ActionCard.stories.js │ │ │ │ │ │ │ └── ActionCard.vue │ │ │ │ │ │ ├── ButtonLoader.vue │ │ │ │ │ │ ├── FileCard │ │ │ │ │ │ │ ├── FileCard.mdx │ │ │ │ │ │ │ ├── FileCard.stories.js │ │ │ │ │ │ │ ├── FileCard.vue │ │ │ │ │ │ │ └── FileLoader.vue │ │ │ │ │ │ ├── InputGroup │ │ │ │ │ │ │ ├── InputGroup.mdx │ │ │ │ │ │ │ ├── InputGroup.stories.ts │ │ │ │ │ │ │ └── InputGroup.vue │ │ │ │ │ │ ├── LinkedToAccordion │ │ │ │ │ │ │ ├── LinkedToAccordion.mdx │ │ │ │ │ │ │ ├── LinkedToAccordion.stories.js │ │ │ │ │ │ │ └── LinkedToAccordion.vue │ │ │ │ │ │ ├── NoSearchResults.vue │ │ │ │ │ │ ├── SelectGroup │ │ │ │ │ │ │ ├── SelectGroup.mdx │ │ │ │ │ │ │ ├── SelectGroup.stories.ts │ │ │ │ │ │ │ └── SelectGroup.vue │ │ │ │ │ │ ├── Stepper │ │ │ │ │ │ │ ├── Stepper.mdx │ │ │ │ │ │ │ ├── Stepper.stories.ts │ │ │ │ │ │ │ └── Stepper.vue │ │ │ │ │ │ └── UploadGroup │ │ │ │ │ │ │ ├── UploadGroup.mdx │ │ │ │ │ │ │ ├── UploadGroup.stories.js │ │ │ │ │ │ │ ├── UploadGroup.vue │ │ │ │ │ │ │ ├── UploadModal.vue │ │ │ │ │ │ │ ├── UploadModalButton.mdx │ │ │ │ │ │ │ ├── UploadModalButton.stories.ts │ │ │ │ │ │ │ └── UploadModalButton.vue │ │ │ │ │ ├── MarkAsNoSpam │ │ │ │ │ │ ├── MarkAsNoSpam.mdx │ │ │ │ │ │ ├── MarkAsNoSpam.stories.ts │ │ │ │ │ │ └── MarkAsNoSpam.vue │ │ │ │ │ ├── MarkdownEditor │ │ │ │ │ │ ├── EditorButton.vue │ │ │ │ │ │ ├── ImageModal │ │ │ │ │ │ │ ├── ImageModal.vue │ │ │ │ │ │ │ ├── ImageModalButton.mdx │ │ │ │ │ │ │ ├── ImageModalButton.stories.ts │ │ │ │ │ │ │ └── ImageModalButton.vue │ │ │ │ │ │ ├── InternalEditor.mdx │ │ │ │ │ │ ├── InternalEditor.stories.ts │ │ │ │ │ │ ├── InternalEditor.vue │ │ │ │ │ │ ├── MarkdownEditor.mdx │ │ │ │ │ │ ├── MarkdownEditor.stories.ts │ │ │ │ │ │ ├── MarkdownEditor.vue │ │ │ │ │ │ ├── Milkdown │ │ │ │ │ │ │ ├── LinkEdit │ │ │ │ │ │ │ │ ├── LinkEditTooltip.vue │ │ │ │ │ │ │ │ ├── configureEditTooltip.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── insertLink.ts │ │ │ │ │ │ │ │ └── linkEditTooltip.ts │ │ │ │ │ │ │ ├── LinkPreview │ │ │ │ │ │ │ │ ├── LinkPreviewTooltip.vue │ │ │ │ │ │ │ │ ├── configurePreviewTooltip.ts │ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ │ ├── linkPreviewTooltip.ts │ │ │ │ │ │ │ │ ├── shouldShowPreview.ts │ │ │ │ │ │ │ │ └── useLinkPreview.ts │ │ │ │ │ │ │ ├── TableSelector │ │ │ │ │ │ │ │ ├── TableSelectorWidget.vue │ │ │ │ │ │ │ │ └── tableSelectorPlugin.ts │ │ │ │ │ │ │ ├── TableTooltip │ │ │ │ │ │ │ │ ├── TableTooltip.vue │ │ │ │ │ │ │ │ ├── TooltipButton.vue │ │ │ │ │ │ │ │ └── tableTooltip.ts │ │ │ │ │ │ │ ├── Tooltip │ │ │ │ │ │ │ │ ├── EditorTooltip.vue │ │ │ │ │ │ │ │ └── useTooltipProvider.ts │ │ │ │ │ │ │ └── dsfrColumnResizingPlugin.ts │ │ │ │ │ │ ├── ProseMirror │ │ │ │ │ │ │ ├── DSFRTableView.ts │ │ │ │ │ │ │ ├── findMarkPosition.ts │ │ │ │ │ │ │ ├── getMarkInNode.ts │ │ │ │ │ │ │ ├── getNodeAtCoords.ts │ │ │ │ │ │ │ └── handleLink.ts │ │ │ │ │ │ └── types.ts │ │ │ │ │ ├── MultiSelect │ │ │ │ │ │ ├── MultiSelect.mdx │ │ │ │ │ │ ├── MultiSelect.stories.js │ │ │ │ │ │ └── MultiSelect.vue │ │ │ │ │ ├── ProducerSelector │ │ │ │ │ │ ├── ProducerSelector.stories.ts │ │ │ │ │ │ └── ProducerSelector.vue │ │ │ │ │ ├── RangePicker │ │ │ │ │ │ ├── RangePicker.mdx │ │ │ │ │ │ ├── RangePicker.stories.js │ │ │ │ │ │ └── RangePicker.vue │ │ │ │ │ ├── Report │ │ │ │ │ │ ├── ReportModal.vue │ │ │ │ │ │ ├── ReportModalButton.stories.ts │ │ │ │ │ │ ├── ReportModalButton.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Reuse │ │ │ │ │ │ ├── NewReuseLoader.vue │ │ │ │ │ │ ├── Reuse.mdx │ │ │ │ │ │ ├── Reuse.stories.ts │ │ │ │ │ │ ├── Reuse.vue │ │ │ │ │ │ ├── ReuseList.mdx │ │ │ │ │ │ ├── ReuseList.stories.ts │ │ │ │ │ │ ├── ReuseList.vue │ │ │ │ │ │ ├── ReuseLoader.vue │ │ │ │ │ │ └── loader.vue │ │ │ │ │ ├── SchemaSelect │ │ │ │ │ │ ├── SchemaSelect.mdx │ │ │ │ │ │ ├── SchemaSelect.stories.js │ │ │ │ │ │ └── SchemaSelect.vue │ │ │ │ │ ├── Sidemenu │ │ │ │ │ │ ├── Sidemenu.mdx │ │ │ │ │ │ ├── Sidemenu.stories.js │ │ │ │ │ │ └── Sidemenu.vue │ │ │ │ │ ├── Tooltip │ │ │ │ │ │ ├── Tooltip.stories.ts │ │ │ │ │ │ └── Tooltip.vue │ │ │ │ │ ├── Ui │ │ │ │ │ │ ├── Container │ │ │ │ │ │ │ ├── Container.mdx │ │ │ │ │ │ │ ├── Container.stories.js │ │ │ │ │ │ │ └── Container.vue │ │ │ │ │ │ ├── Required │ │ │ │ │ │ │ ├── Required.mdx │ │ │ │ │ │ │ ├── Required.stories.ts │ │ │ │ │ │ │ └── Required.vue │ │ │ │ │ │ └── RequiredExplanation │ │ │ │ │ │ │ ├── RequiredExplanation.mdx │ │ │ │ │ │ │ ├── RequiredExplanation.stories.ts │ │ │ │ │ │ │ └── RequiredExplanation.vue │ │ │ │ │ ├── UserDatasetList │ │ │ │ │ │ └── UserDatasetList.vue │ │ │ │ │ ├── UserReuseList │ │ │ │ │ │ └── UserReuseList.vue │ │ │ │ │ ├── charts │ │ │ │ │ │ └── chart.vue │ │ │ │ │ ├── dataset │ │ │ │ │ │ ├── CardLG.mdx │ │ │ │ │ │ ├── CardLG.stories.ts │ │ │ │ │ │ ├── CardList.mdx │ │ │ │ │ │ ├── CardList.stories.ts │ │ │ │ │ │ ├── CardList.vue │ │ │ │ │ │ ├── card-lg.vue │ │ │ │ │ │ ├── loader.vue │ │ │ │ │ │ └── resource │ │ │ │ │ │ │ ├── resourceFromHash.vue │ │ │ │ │ │ │ └── resources.vue │ │ │ │ │ ├── discussions │ │ │ │ │ │ ├── Author │ │ │ │ │ │ │ ├── Author.mdx │ │ │ │ │ │ │ ├── Author.stories.js │ │ │ │ │ │ │ └── Author.vue │ │ │ │ │ │ ├── Thread │ │ │ │ │ │ │ ├── Loader.vue │ │ │ │ │ │ │ ├── Thread.mdx │ │ │ │ │ │ │ ├── Thread.stories.ts │ │ │ │ │ │ │ └── Thread.vue │ │ │ │ │ │ ├── ThreadCreate │ │ │ │ │ │ │ ├── ThreadCreate.mdx │ │ │ │ │ │ │ ├── ThreadCreate.stories.js │ │ │ │ │ │ │ ├── ThreadCreate.vue │ │ │ │ │ │ │ ├── ThreadCreateButton.mdx │ │ │ │ │ │ │ ├── ThreadCreateButton.stories.js │ │ │ │ │ │ │ └── ThreadCreateButton.vue │ │ │ │ │ │ ├── ThreadReply │ │ │ │ │ │ │ ├── ThreadReply.mdx │ │ │ │ │ │ │ ├── ThreadReply.stories.js │ │ │ │ │ │ │ └── ThreadReply.vue │ │ │ │ │ │ ├── Threads.mdx │ │ │ │ │ │ ├── Threads.stories.ts │ │ │ │ │ │ └── Threads.vue │ │ │ │ │ ├── organization │ │ │ │ │ │ └── request-membership.vue │ │ │ │ │ ├── search │ │ │ │ │ │ ├── MenuSearch │ │ │ │ │ │ │ ├── MenuSearch.mdx │ │ │ │ │ │ │ ├── MenuSearch.stories.ts │ │ │ │ │ │ │ ├── MenuSearch.vue │ │ │ │ │ │ │ └── MenuSearchOption.vue │ │ │ │ │ │ ├── OrganizationSearch │ │ │ │ │ │ │ ├── OrganizationSearch.stories.ts │ │ │ │ │ │ │ ├── OrganizationSearch.vue │ │ │ │ │ │ │ ├── OrganizationSearchOption.stories.ts │ │ │ │ │ │ │ └── OrganizationSearchOption.vue │ │ │ │ │ │ ├── Search │ │ │ │ │ │ │ ├── Search.mdx │ │ │ │ │ │ │ ├── Search.stories.ts │ │ │ │ │ │ │ └── Search.vue │ │ │ │ │ │ └── search-input.vue │ │ │ │ │ ├── utils │ │ │ │ │ │ ├── DeleteButton │ │ │ │ │ │ │ ├── DeleteButton.mdx │ │ │ │ │ │ │ ├── DeleteButton.stories.ts │ │ │ │ │ │ │ ├── DeleteButton.vue │ │ │ │ │ │ │ ├── DeleteUserButton.stories.ts │ │ │ │ │ │ │ └── DeleteUserButton.vue │ │ │ │ │ │ ├── featured.vue │ │ │ │ │ │ ├── follow-button.vue │ │ │ │ │ │ ├── placeholder.vue │ │ │ │ │ │ └── search-bar.vue │ │ │ │ │ └── vanilla │ │ │ │ │ │ ├── accordion.ts │ │ │ │ │ │ ├── clipboard.js │ │ │ │ │ │ ├── dialog.js │ │ │ │ │ │ ├── fixup-tabs-on-startup.js │ │ │ │ │ │ ├── sort-search.js │ │ │ │ │ │ └── tabs.js │ │ │ │ ├── composables │ │ │ │ │ ├── admin │ │ │ │ │ │ └── useCurrentOrganization.ts │ │ │ │ │ ├── form │ │ │ │ │ │ ├── useFileValidation.js │ │ │ │ │ │ ├── useFileValidation.mdx │ │ │ │ │ │ ├── useFileValidation.stories.js │ │ │ │ │ │ ├── useFilesUpload.ts │ │ │ │ │ │ └── useFunctionalState.js │ │ │ │ │ ├── useActiveDescendant.ts │ │ │ │ │ ├── useCollapse.ts │ │ │ │ │ ├── useDebouncedRef.js │ │ │ │ │ ├── useDropdown.ts │ │ │ │ │ ├── useHash.ts │ │ │ │ │ ├── useIdFromHash.js │ │ │ │ │ ├── useLicense.ts │ │ │ │ │ ├── useSearchUrl.ts │ │ │ │ │ ├── useToast.js │ │ │ │ │ └── useUid.js │ │ │ │ ├── config.ts │ │ │ │ ├── dsfr.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── i18n.ts │ │ │ │ ├── index.ts │ │ │ │ ├── locales │ │ │ │ │ ├── de.json │ │ │ │ │ ├── en.json │ │ │ │ │ ├── es.json │ │ │ │ │ ├── fr.json │ │ │ │ │ ├── it.json │ │ │ │ │ ├── pt.json │ │ │ │ │ └── sr.json │ │ │ │ ├── plugins │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── auth.ts │ │ │ │ │ └── eventbus.ts │ │ │ │ ├── sentry.ts │ │ │ │ └── types.ts │ │ │ └── less │ │ │ │ ├── components │ │ │ │ ├── accordion.less │ │ │ │ ├── alert.less │ │ │ │ ├── animations.less │ │ │ │ ├── badge.less │ │ │ │ ├── borders.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── buttons.less │ │ │ │ ├── callout.less │ │ │ │ ├── card.less │ │ │ │ ├── dataset.less │ │ │ │ ├── discussions.less │ │ │ │ ├── embed.less │ │ │ │ ├── follow-button.less │ │ │ │ ├── forms.less │ │ │ │ ├── highlight.less │ │ │ │ ├── logo.less │ │ │ │ ├── markdown-editor.less │ │ │ │ ├── markdown.less │ │ │ │ ├── multiselect.less │ │ │ │ ├── notice.less │ │ │ │ ├── organization-search.less │ │ │ │ ├── pagination.less │ │ │ │ ├── quality-score.less │ │ │ │ ├── quote.less │ │ │ │ ├── rangepicker.less │ │ │ │ ├── read-more.less │ │ │ │ ├── search-input.less │ │ │ │ ├── segmented-control.less │ │ │ │ ├── sidemenu.less │ │ │ │ ├── stepper.less │ │ │ │ ├── summary.less │ │ │ │ ├── table.less │ │ │ │ ├── tabs-full-page.less │ │ │ │ ├── tabs-home.less │ │ │ │ ├── tabs-no-js.less │ │ │ │ ├── tabs.less │ │ │ │ ├── tags.less │ │ │ │ ├── tile.less │ │ │ │ ├── toast.less │ │ │ │ ├── tooltip.less │ │ │ │ └── well.less │ │ │ │ ├── content │ │ │ │ ├── colors.less │ │ │ │ ├── hero-image.less │ │ │ │ ├── links.less │ │ │ │ ├── nav-link.less │ │ │ │ ├── not-enlarged-links.less │ │ │ │ ├── typography.less │ │ │ │ └── visibility.less │ │ │ │ ├── examples.css │ │ │ │ ├── font.less │ │ │ │ ├── icons.less │ │ │ │ ├── images │ │ │ │ ├── chevron.svg │ │ │ │ └── logo.png │ │ │ │ ├── layout │ │ │ │ ├── grid.less │ │ │ │ ├── responsive.less │ │ │ │ └── rhythm.less │ │ │ │ ├── override.less │ │ │ │ ├── specific │ │ │ │ ├── buttons-venti.less │ │ │ │ ├── footer.less │ │ │ │ ├── header.less │ │ │ │ ├── hero.less │ │ │ │ ├── metrics-bar.less │ │ │ │ ├── oauth.less │ │ │ │ ├── oembed.less │ │ │ │ ├── search.less │ │ │ │ └── translate.less │ │ │ │ ├── style.less │ │ │ │ ├── theme.css │ │ │ │ └── variables.less │ │ ├── babel.cfg │ │ ├── datagouv-components │ │ │ ├── .env │ │ │ ├── .gitignore │ │ │ ├── .npmrc │ │ │ ├── .nvmrc │ │ │ ├── .storybook │ │ │ │ ├── main.ts │ │ │ │ ├── manager.ts │ │ │ │ ├── msw-requests.ts │ │ │ │ ├── msw │ │ │ │ │ └── mockServiceWorker.js │ │ │ │ ├── preview.tsx │ │ │ │ ├── previewBody.ts │ │ │ │ └── theme.ts │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── demo-vue-router │ │ │ │ ├── Details.vue │ │ │ │ ├── View.vue │ │ │ │ ├── index.html │ │ │ │ └── index.ts │ │ │ ├── demo │ │ │ │ ├── App.vue │ │ │ │ └── index.ts │ │ │ ├── index.html │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── src │ │ │ │ ├── api │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── frequency.ts │ │ │ │ │ ├── granularity.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── licenses.ts │ │ │ │ │ ├── reuses.ts │ │ │ │ │ ├── schemas.ts │ │ │ │ │ ├── tabularApi.ts │ │ │ │ │ └── zones.ts │ │ │ │ ├── assets │ │ │ │ │ └── img │ │ │ │ │ │ └── placeholders │ │ │ │ │ │ ├── author.png │ │ │ │ │ │ ├── dataset.png │ │ │ │ │ │ ├── news.png │ │ │ │ │ │ ├── organization.png │ │ │ │ │ │ └── reuse.png │ │ │ │ ├── components │ │ │ │ │ ├── AppLink │ │ │ │ │ │ ├── AppLink.stories.ts │ │ │ │ │ │ ├── AppLink.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── AsyncTextClamp │ │ │ │ │ │ └── AsyncTextClamp.vue │ │ │ │ │ ├── Avatar │ │ │ │ │ │ ├── Avatar.stories.ts │ │ │ │ │ │ ├── Avatar.vue │ │ │ │ │ │ ├── AvatarWithName.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── CopyButton │ │ │ │ │ │ ├── CopyButton.stories.ts │ │ │ │ │ │ ├── CopyButton.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── DataserviceCard │ │ │ │ │ │ ├── DataserviceCard.stories.ts │ │ │ │ │ │ ├── DataserviceCard.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── DataserviceLinks │ │ │ │ │ │ ├── DataserviceLinks.stories.ts │ │ │ │ │ │ ├── DataserviceLinks.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── DatasetCard │ │ │ │ │ │ ├── DatasetCard.stories.ts │ │ │ │ │ │ ├── DatasetCard.vue │ │ │ │ │ │ ├── TestComponent.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── DescriptionList │ │ │ │ │ │ ├── DescriptionDetails.stories.ts │ │ │ │ │ │ ├── DescriptionDetails.vue │ │ │ │ │ │ ├── DescriptionList.stories.ts │ │ │ │ │ │ ├── DescriptionList.vue │ │ │ │ │ │ ├── DescriptionTerm.stories.ts │ │ │ │ │ │ └── DescriptionTerm.vue │ │ │ │ │ ├── ExtraAccordion │ │ │ │ │ │ ├── ExtraAccordion.stories.ts │ │ │ │ │ │ ├── ExtraAccordion.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── InformationPanel │ │ │ │ │ │ ├── InformationPanel.stories.ts │ │ │ │ │ │ ├── InformationPanel.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Organization │ │ │ │ │ │ ├── OrganizationNameWithCertificate.stories.ts │ │ │ │ │ │ ├── OrganizationNameWithCertificate.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Owner │ │ │ │ │ │ ├── OwnerType.stories.ts │ │ │ │ │ │ ├── OwnerType.vue │ │ │ │ │ │ ├── OwnerTypeIcon.stories.ts │ │ │ │ │ │ ├── OwnerTypeIcon.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Pagination │ │ │ │ │ │ ├── Pagination.stories.ts │ │ │ │ │ │ ├── Pagination.vue │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── paginate.ts │ │ │ │ │ ├── Placeholder │ │ │ │ │ │ ├── Placeholder.stories.ts │ │ │ │ │ │ ├── Placeholder.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QualityComponent │ │ │ │ │ │ ├── QualityComponent.stories.ts │ │ │ │ │ │ ├── QualityComponent.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QualityComponentInline │ │ │ │ │ │ ├── QualityComponentInline.stories.ts │ │ │ │ │ │ ├── QualityComponentInline.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QualityItem │ │ │ │ │ │ ├── QualityItem.stories.ts │ │ │ │ │ │ ├── QualityItem.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QualityItemWarning │ │ │ │ │ │ ├── QualityItemWarning.stories.ts │ │ │ │ │ │ ├── QualityItemWarning.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── QualityScore │ │ │ │ │ │ ├── QualityScore.stories.ts │ │ │ │ │ │ ├── QualityScore.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ReadMore │ │ │ │ │ │ ├── ReadMore.stories.ts │ │ │ │ │ │ ├── ReadMore.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ResourceAccordion │ │ │ │ │ │ ├── DataStructure │ │ │ │ │ │ │ ├── DataStructure.stories.ts │ │ │ │ │ │ │ ├── DataStructure.vue │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── EditButton.stories.ts │ │ │ │ │ │ ├── EditButton.vue │ │ │ │ │ │ ├── Loader.stories.ts │ │ │ │ │ │ ├── Loader.vue │ │ │ │ │ │ ├── Metadata.vue │ │ │ │ │ │ ├── Preview │ │ │ │ │ │ │ ├── Loader.vue │ │ │ │ │ │ │ ├── Preview.stories.ts │ │ │ │ │ │ │ ├── Preview.vue │ │ │ │ │ │ │ ├── france.svg │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── ResourceAccordion.stories.ts │ │ │ │ │ │ ├── ResourceAccordion.vue │ │ │ │ │ │ ├── ResourceIcon.vue │ │ │ │ │ │ ├── SchemaBadge.vue │ │ │ │ │ │ ├── SchemaLoader.stories.ts │ │ │ │ │ │ ├── SchemaLoader.vue │ │ │ │ │ │ ├── Swagger.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ReuseCard │ │ │ │ │ │ ├── ReuseCard.stories.ts │ │ │ │ │ │ ├── ReuseCard.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── SmallChart │ │ │ │ │ │ ├── SmallChart.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── StatBox │ │ │ │ │ │ ├── StatBox.stories.ts │ │ │ │ │ │ ├── StatBox.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Tabs │ │ │ │ │ │ ├── Tab.vue │ │ │ │ │ │ ├── TabGroup.vue │ │ │ │ │ │ ├── TabList.vue │ │ │ │ │ │ ├── TabPanel.vue │ │ │ │ │ │ ├── TabPanels.vue │ │ │ │ │ │ └── Tabs.stories.ts │ │ │ │ │ ├── Toggletip │ │ │ │ │ │ ├── Toggletip.mdx │ │ │ │ │ │ ├── Toggletip.stories.ts │ │ │ │ │ │ ├── Toggletip.vue │ │ │ │ │ │ ├── ToggletipButton.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── Well │ │ │ │ │ │ ├── Well.stories.ts │ │ │ │ │ │ ├── Well.vue │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── accordion.less │ │ │ │ │ ├── badge.less │ │ │ │ │ ├── base.less │ │ │ │ │ ├── border.less │ │ │ │ │ ├── button.less │ │ │ │ │ ├── dataset.less │ │ │ │ │ ├── embed.less │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── links.less │ │ │ │ │ ├── logo.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── quality-score.less │ │ │ │ │ ├── read-more.less │ │ │ │ │ ├── reuse.less │ │ │ │ │ ├── segmented-control.less │ │ │ │ │ ├── table.less │ │ │ │ │ ├── tabs.less │ │ │ │ │ ├── toggletip.less │ │ │ │ │ ├── visibility.less │ │ │ │ │ └── well.less │ │ │ │ ├── composables │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── organizations │ │ │ │ │ │ ├── useOrganizationCertified.ts │ │ │ │ │ │ ├── useOrganizationType.ts │ │ │ │ │ │ └── useOwnerName.ts │ │ │ │ │ ├── useAccordion.ts │ │ │ │ │ ├── useLicense.ts │ │ │ │ │ ├── useOEmbed.ts │ │ │ │ │ ├── useReuseType.ts │ │ │ │ │ ├── useTabs.ts │ │ │ │ │ └── useToast.ts │ │ │ │ ├── config.ts │ │ │ │ ├── helpers │ │ │ │ │ ├── getUserAvatar.ts │ │ │ │ │ ├── i18n.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── markdown.ts │ │ │ │ │ ├── matomo.ts │ │ │ │ │ ├── resources.ts │ │ │ │ │ ├── throwOnNever.ts │ │ │ │ │ └── toggleAccordion.ts │ │ │ │ ├── index.ts │ │ │ │ ├── locales │ │ │ │ │ ├── de.json │ │ │ │ │ ├── en.json │ │ │ │ │ ├── es.json │ │ │ │ │ ├── fr.json │ │ │ │ │ ├── it.json │ │ │ │ │ ├── pt.json │ │ │ │ │ └── sr.json │ │ │ │ ├── types │ │ │ │ │ ├── badges.ts │ │ │ │ │ ├── contact_point.ts │ │ │ │ │ ├── dataservices.ts │ │ │ │ │ ├── datasets.ts │ │ │ │ │ ├── frequency.ts │ │ │ │ │ ├── granularity.ts │ │ │ │ │ ├── harvest.ts │ │ │ │ │ ├── licenses.ts │ │ │ │ │ ├── organizations.ts │ │ │ │ │ ├── owned.ts │ │ │ │ │ ├── resources.ts │ │ │ │ │ ├── reuses.ts │ │ │ │ │ ├── ui.ts │ │ │ │ │ └── users.ts │ │ │ │ └── vite-env.d.ts │ │ │ ├── test-runner-jest.config.js │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── info.json │ │ ├── templates │ │ │ ├── api │ │ │ │ ├── admin.html │ │ │ │ ├── card.html │ │ │ │ ├── oauth_authorize.html │ │ │ │ └── oauth_error.html │ │ │ ├── banners │ │ │ │ ├── feedback.html │ │ │ │ ├── generic.html │ │ │ │ └── read-only.html │ │ │ ├── base.html │ │ │ ├── carousel.html │ │ │ ├── comments │ │ │ │ └── dataset_archived.txt │ │ │ ├── contact_point.html │ │ │ ├── dataservice │ │ │ │ ├── card.html │ │ │ │ ├── display.html │ │ │ │ ├── feed_item.html │ │ │ │ └── list.html │ │ │ ├── dataset-apis.html │ │ │ ├── dataset │ │ │ │ ├── card-lg.html │ │ │ │ ├── card-sm.html │ │ │ │ ├── card-xs.html │ │ │ │ ├── display.html │ │ │ │ ├── feed_item.html │ │ │ │ ├── followers.html │ │ │ │ ├── list.html │ │ │ │ ├── oembed.html │ │ │ │ ├── resource │ │ │ │ │ └── card.html │ │ │ │ └── search-results.html │ │ │ ├── embed-dataset.html │ │ │ ├── errors │ │ │ │ ├── 400.html │ │ │ │ ├── 403.html │ │ │ │ ├── 404.html │ │ │ │ ├── 410.html │ │ │ │ ├── 500.html │ │ │ │ └── base.html │ │ │ ├── follow │ │ │ │ └── follower-card.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── home.html │ │ │ ├── layouts │ │ │ │ ├── 1-column.html │ │ │ │ ├── 2-columns.html │ │ │ │ └── center-panel.html │ │ │ ├── macros │ │ │ │ ├── banner_info.html │ │ │ │ ├── banner_warning.html │ │ │ │ ├── breadcrumb.html │ │ │ │ ├── certified.html │ │ │ │ ├── dataset_information.html │ │ │ │ ├── delete.html │ │ │ │ ├── description_list.html │ │ │ │ ├── follow.html │ │ │ │ ├── forms.html │ │ │ │ ├── integrate.html │ │ │ │ ├── leaflet.html │ │ │ │ ├── metadata.html │ │ │ │ ├── organization_name_with_certificate.html │ │ │ │ ├── paginator.html │ │ │ │ ├── quality_item.html │ │ │ │ ├── quality_item_warning.html │ │ │ │ ├── quality_score.html │ │ │ │ ├── quality_score_inline.html │ │ │ │ ├── quality_score_toggletip.html │ │ │ │ ├── quality_score_with_warning_below.html │ │ │ │ ├── report.html │ │ │ │ ├── search.html │ │ │ │ ├── sort_search.html │ │ │ │ ├── toggletip.html │ │ │ │ ├── tooltip.html │ │ │ │ └── uploader.html │ │ │ ├── mail │ │ │ │ ├── account_deleted.html │ │ │ │ ├── account_deleted.txt │ │ │ │ ├── badge_added_certified.html │ │ │ │ ├── badge_added_certified.txt │ │ │ │ ├── badge_added_public_service.html │ │ │ │ ├── badge_added_public_service.txt │ │ │ │ ├── base.html │ │ │ │ ├── base.txt │ │ │ │ ├── button.html │ │ │ │ ├── discussion_closed.html │ │ │ │ ├── discussion_closed.txt │ │ │ │ ├── frequency_reminder.html │ │ │ │ ├── frequency_reminder.txt │ │ │ │ ├── layouts │ │ │ │ │ ├── 1-column.html │ │ │ │ │ ├── 2-columns.html │ │ │ │ │ └── center-panel.html │ │ │ │ ├── membership_refused.html │ │ │ │ ├── membership_refused.txt │ │ │ │ ├── membership_request.html │ │ │ │ ├── membership_request.txt │ │ │ │ ├── new_discussion.html │ │ │ │ ├── new_discussion.txt │ │ │ │ ├── new_discussion_comment.html │ │ │ │ ├── new_discussion_comment.txt │ │ │ │ ├── new_follower.html │ │ │ │ ├── new_follower.txt │ │ │ │ ├── new_follower_org.html │ │ │ │ ├── new_follower_org.txt │ │ │ │ ├── new_member.html │ │ │ │ ├── new_member.txt │ │ │ │ ├── new_reuse.html │ │ │ │ ├── new_reuse.txt │ │ │ │ ├── security │ │ │ │ │ ├── change_notice.html │ │ │ │ │ ├── change_notice.txt │ │ │ │ │ ├── confirmation_instructions.html │ │ │ │ │ ├── confirmation_instructions.txt │ │ │ │ │ ├── login_instructions.html │ │ │ │ │ ├── login_instructions.txt │ │ │ │ │ ├── reset_instructions.html │ │ │ │ │ ├── reset_instructions.txt │ │ │ │ │ ├── reset_notice.html │ │ │ │ │ ├── reset_notice.txt │ │ │ │ │ ├── welcome.html │ │ │ │ │ └── welcome.txt │ │ │ │ ├── test.html │ │ │ │ └── test.txt │ │ │ ├── metrics.html │ │ │ ├── newsletter.html │ │ │ ├── oembed.html │ │ │ ├── organization │ │ │ │ ├── card.html │ │ │ │ ├── display.html │ │ │ │ ├── list.html │ │ │ │ ├── member-card.html │ │ │ │ ├── oembed.html │ │ │ │ └── producer-name-with-logo.html │ │ │ ├── page.html │ │ │ ├── post │ │ │ │ ├── display.html │ │ │ │ ├── list.html │ │ │ │ ├── search-result.html │ │ │ │ └── subnav.html │ │ │ ├── raw.html │ │ │ ├── reuse │ │ │ │ ├── card.html │ │ │ │ ├── display.html │ │ │ │ ├── feed_item.html │ │ │ │ ├── list.html │ │ │ │ ├── mail_card.html │ │ │ │ └── oembed.html │ │ │ ├── security │ │ │ │ ├── change_email.html │ │ │ │ ├── change_password.html │ │ │ │ ├── forgot_password.html │ │ │ │ ├── login_user.html │ │ │ │ ├── register_user.html │ │ │ │ ├── reset_password.html │ │ │ │ └── send_confirmation.html │ │ │ ├── site │ │ │ │ └── dashboard.html │ │ │ ├── subnav-community.html │ │ │ ├── suivi.html │ │ │ ├── svg │ │ │ │ ├── administration.svg │ │ │ │ ├── arrow-right.svg │ │ │ │ ├── blank_state │ │ │ │ │ ├── discussion.svg │ │ │ │ │ ├── harvester.svg │ │ │ │ │ ├── resource.svg │ │ │ │ │ └── reuse.svg │ │ │ │ ├── burger-menu.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── edit.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── illustrations │ │ │ │ │ ├── dataservice.svg │ │ │ │ │ ├── dataset.svg │ │ │ │ │ ├── draggable.svg │ │ │ │ │ ├── edit.svg │ │ │ │ │ ├── france_with_magnifying_glass.svg │ │ │ │ │ ├── magnifying_glass.svg │ │ │ │ │ ├── newspaper.svg │ │ │ │ │ ├── organization.svg │ │ │ │ │ ├── reuse.svg │ │ │ │ │ ├── schema.svg │ │ │ │ │ ├── search.svg │ │ │ │ │ ├── search2.svg │ │ │ │ │ └── success.svg │ │ │ │ ├── logotype-white.svg │ │ │ │ ├── logotype.svg │ │ │ │ ├── marianne.svg │ │ │ │ ├── preview.svg │ │ │ │ ├── private.svg │ │ │ │ ├── resources │ │ │ │ │ ├── archive.svg │ │ │ │ │ ├── code.svg │ │ │ │ │ ├── documentation.svg │ │ │ │ │ ├── file.svg │ │ │ │ │ ├── globe.svg │ │ │ │ │ ├── link.svg │ │ │ │ │ ├── map.svg │ │ │ │ │ └── table.svg │ │ │ │ ├── search.svg │ │ │ │ ├── search │ │ │ │ │ ├── dataset.svg │ │ │ │ │ ├── empty.svg │ │ │ │ │ ├── organization.svg │ │ │ │ │ └── reuse.svg │ │ │ │ ├── socials │ │ │ │ │ ├── bluesky.svg │ │ │ │ │ ├── github.svg │ │ │ │ │ ├── linkedin.svg │ │ │ │ │ └── twitter.svg │ │ │ │ └── triangle.svg │ │ │ ├── terms.html │ │ │ ├── territories │ │ │ │ ├── commune.html │ │ │ │ ├── departement.html │ │ │ │ ├── home.html │ │ │ │ ├── region.html │ │ │ │ ├── search-result.html │ │ │ │ └── territory.html │ │ │ ├── topic │ │ │ │ ├── browse.html │ │ │ │ ├── datasets.html │ │ │ │ ├── display.html │ │ │ │ └── reuses.html │ │ │ └── user │ │ │ │ ├── activity.html │ │ │ │ ├── base.html │ │ │ │ ├── card.html │ │ │ │ ├── datasets.html │ │ │ │ ├── followers.html │ │ │ │ ├── following.html │ │ │ │ ├── list.html │ │ │ │ ├── mail_card.html │ │ │ │ └── reuses.html │ │ └── translations │ │ │ ├── de │ │ │ └── LC_MESSAGES │ │ │ │ └── gouvfr.po │ │ │ ├── es │ │ │ └── LC_MESSAGES │ │ │ │ └── gouvfr.po │ │ │ ├── fr │ │ │ └── LC_MESSAGES │ │ │ │ └── gouvfr.po │ │ │ ├── gouvfr.pot │ │ │ ├── it │ │ │ └── LC_MESSAGES │ │ │ │ └── gouvfr.po │ │ │ ├── pt │ │ │ └── LC_MESSAGES │ │ │ │ └── gouvfr.po │ │ │ └── sr │ │ │ └── LC_MESSAGES │ │ │ └── gouvfr.po │ └── license.txt └── views │ ├── __init__.py │ ├── base.py │ ├── dataservice.py │ ├── dataset.py │ ├── follower.py │ ├── gouvfr.py │ ├── oembed.py │ ├── organization.py │ ├── post.py │ ├── proconnect.py │ ├── reuse.py │ ├── site.py │ ├── territories.py │ ├── topic.py │ └── user.py ├── vite.config.dev.ts ├── vite.config.ts └── vue-i18n-extract.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | insert_final_newline = true 5 | charset = utf-8 6 | trim_trailing_whitespace = true 7 | end_of_line = lf 8 | 9 | [*.{js,json,ts,vue}] 10 | indent_style = space 11 | indent_size = 2 12 | 13 | [*.less] 14 | indent_style = space 15 | indent_size = 4 16 | -------------------------------------------------------------------------------- /.lighthouseci/front-plugin-udata.cfg: -------------------------------------------------------------------------------- 1 | PLUGINS = ['front'] 2 | THEME = 'gouvfr' 3 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v18.19.0 2 | -------------------------------------------------------------------------------- /.postcssrc: -------------------------------------------------------------------------------- 1 | { 2 | "modules": false, 3 | "plugins": { 4 | "postcss-normalize": {} 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/jazzband/pip-tools 3 | rev: 7.4.1 4 | hooks: 5 | - id: pip-compile 6 | name: pip-compile install.in 7 | args: [requirements/install.in, --output-file=requirements/install.pip] 8 | files: ^requirements/install\.(in|pip)$ 9 | - id: pip-compile 10 | name: pip-compile test.in 11 | args: [requirements/test.in, --output-file=requirements/test.pip] 12 | files: ^requirements/(install|test)\.(in|pip)$ 13 | - id: pip-compile 14 | name: pip-compile develop.in 15 | args: [requirements/develop.in, --output-file=requirements/develop.pip] 16 | files: ^requirements/(install|test|develop)\.(in|pip)$ 17 | -------------------------------------------------------------------------------- /.pyup.yml: -------------------------------------------------------------------------------- 1 | --- 2 | branch: master 3 | pin: False 4 | update: all 5 | label_prs: update 6 | -------------------------------------------------------------------------------- /.storybook/custom-runner.js: -------------------------------------------------------------------------------- 1 | const PlaywrightRunner = 2 | require('jest-playwright-preset/lib/PlaywrightRunner').default 3 | 4 | class SerialRunner extends PlaywrightRunner { 5 | constructor(...args) { 6 | super(...args) 7 | this.isSerial = true 8 | } 9 | } 10 | 11 | module.exports = SerialRunner 12 | -------------------------------------------------------------------------------- /.storybook/load-theme-preview-preset.ts: -------------------------------------------------------------------------------- 1 | import { getTheme } from "../vite.config"; 2 | 3 | export function previewAnnotations(entry = []) { 4 | const theme = getTheme(); 5 | return [...entry, require.resolve(`../udata_front/theme/${theme}/assets/js/.storybook/preview.ts`)]; 6 | } 7 | 8 | export function managerEntries(entry = []) { 9 | const theme = getTheme(); 10 | return [...entry, require.resolve(`../udata_front/theme/${theme}/assets/js/.storybook/manager.js`)]; 11 | } 12 | 13 | export default { managerEntries, previewAnnotations } 14 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE MANIFEST.in README.md CHANGELOG.md 2 | 3 | recursive-include udata_front * 4 | 5 | global-exclude *~ *.egg *.pyc 6 | -------------------------------------------------------------------------------- /babel.cfg: -------------------------------------------------------------------------------- 1 | [ignore: **/static/**] 2 | 3 | [python: **.py] 4 | 5 | [jinja2: **/theme/*/templates/**.html] 6 | encoding = utf-8 7 | silent = false 8 | extensions = flask_caching.jinja2ext.CacheExtension 9 | -------------------------------------------------------------------------------- /bumpr.rc: -------------------------------------------------------------------------------- 1 | [bumpr] 2 | file = udata_front/__init__.py 3 | vcs = git 4 | commit = true 5 | tag = true 6 | tag_format = v{version} 7 | push = true 8 | clean = inv clean 9 | tests = inv test 10 | publish = inv dist 11 | files = 12 | README.md 13 | 14 | [bump] 15 | unsuffix = true 16 | 17 | [prepare] 18 | part = patch 19 | suffix = dev 20 | 21 | [changelog] 22 | file = CHANGELOG.md 23 | bump = ## {version} ({date:%Y-%m-%d}) 24 | prepare = ## Current (in progress) 25 | separator = 26 | -------------------------------------------------------------------------------- /coverage.rc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = udata_front 3 | branch = True 4 | omit = 5 | udata_front/tests.py 6 | 7 | [report] 8 | # Regexes for lines to exclude from consideration 9 | exclude_lines = 10 | # Have to re-enable the standard pragma 11 | pragma: no cover 12 | 13 | # Don't complain about missing debug-only code: 14 | def __repr__ 15 | if self\.debug 16 | 17 | # Don't complain if tests don't hit defensive assertion code: 18 | raise AssertionError 19 | raise NotImplementedError 20 | 21 | # Don't complain if non-runnable code isn't run: 22 | if 0: 23 | if __name__ == .__main__.: 24 | 25 | ignore_errors = True 26 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | files: 2 | - source: /udata_front/theme/gouvfr/translations/gouvfr.pot 3 | translation: /udata_front/theme/gouvfr/translations/%two_letters_code%/LC_MESSAGES/%file_name%.po 4 | - source: /udata_front/theme/gouvfr/assets/js/locales/en.json 5 | translation: /udata_front/theme/gouvfr/assets/js/locales/%two_letters_code%.json 6 | - source: /udata_front/theme/gouvfr/datagouv-components/src/locales/en.json 7 | translation: /udata_front/theme/gouvfr/datagouv-components/src/locales/%two_letters_code%.json 8 | -------------------------------------------------------------------------------- /cypress.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./cypress/cypress.config"); 2 | -------------------------------------------------------------------------------- /cypress/e2e/datasets.cy.js: -------------------------------------------------------------------------------- 1 | describe("Testing datasets page", () => { 2 | beforeEach(() => { 3 | cy.visit("/datasets"); 4 | cy.injectAxe(); 5 | }); 6 | 7 | it("displays the page title", () => { 8 | cy.get("h1").should("be.visible"); 9 | }); 10 | 11 | it("has no detectable critical a11y violations on load", () => { 12 | cy.checkA11y(null, { 13 | includedImpacts: ["critical"], 14 | }); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /cypress/e2e/discussions.cy.js: -------------------------------------------------------------------------------- 1 | import dataset from '../fixtures/dataset.json'; 2 | 3 | describe("Testing discussion links", () => { 4 | it("displays the dataset page without hash", () => { 5 | cy.visit("/datasets/" + dataset.id); 6 | cy.intercept('**/?(_themes)/**').as('script'); 7 | cy.wait(['@script']); 8 | cy.get("h1") 9 | .should("be.visible") 10 | .should("include.text", dataset.title); 11 | cy.get("#resources-panel") 12 | .should("be.visible") 13 | .should("have.class", "fr-tabs__panel--selected") 14 | .should("have.attr", "data-fr-js-tab-panel"); 15 | }); 16 | }); 17 | 18 | -------------------------------------------------------------------------------- /cypress/e2e/home.cy.js: -------------------------------------------------------------------------------- 1 | describe("Testing home page", () => { 2 | beforeEach(() => { 3 | cy.visit("/"); 4 | cy.injectAxe(); 5 | }); 6 | 7 | it("displays the home page title", () => { 8 | cy.get("h1").should("be.visible"); 9 | }); 10 | 11 | it("has no detectable critical a11y violations on load", () => { 12 | cy.checkA11y(null, { 13 | includedImpacts: ["critical"], 14 | }); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /cypress/fixtures/dataset.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "5530fbacc751df5ff937dddb", 3 | "title": "Base Adresse Nationale", 4 | "slug": "base-adresse-nationale", 5 | "discussion_id": "660e7c24b50e8385cd601e8d" 6 | } 7 | -------------------------------------------------------------------------------- /cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } 6 | -------------------------------------------------------------------------------- /cypress/support/component-index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |
2 |
3 |
5 | Udata-front helper for plugins 6 |
7 | 8 | This repository helps you integrate your [udata plugin](https://udata.readthedocs.io/en/stable/extending/) with udata-front when [hooks](https://udata.readthedocs.io/en/stable/extending/#hooks) aren't available. 9 | 10 | It allows you to register your own [Vue](https://vuejs.org/) components and [Vue-i18n](https://vue-i18n.intlify.dev/) translations. 11 | 12 | [udata-tabular-preview](https://github.com/opendatateam/udata-tabular-preview) is an example of a plugin using these helpers. 13 | -------------------------------------------------------------------------------- /udata-front-plugins-helper/postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | "modules": false, 3 | "plugins": {}, 4 | }; 5 | -------------------------------------------------------------------------------- /udata-front-plugins-helper/src/env.d.ts: -------------------------------------------------------------------------------- 1 | import type { UdataFrontNamespace } from "./index"; 2 | 3 | export declare global { 4 | var udata_front: ?UdataFrontNamespace; 5 | } 6 | -------------------------------------------------------------------------------- /udata-front-plugins-helper/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "checkJs": true, 5 | "target": "es2020", 6 | "useDefineForClassFields": true, 7 | "module": "es2020", 8 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 9 | "skipLibCheck": true, 10 | "types": ["vitest/globals", "vite/client"], 11 | 12 | /* Bundler mode */ 13 | "moduleResolution": "bundler", 14 | "allowImportingTsExtensions": true, 15 | "resolveJsonModule": true, 16 | "isolatedModules": true, 17 | "noEmit": true, 18 | "jsx": "preserve", 19 | 20 | /* Linting */ 21 | "strict": true, 22 | "noUnusedLocals": true, 23 | "noUnusedParameters": true, 24 | "noFallthroughCasesInSwitch": true 25 | }, 26 | "include": [ 27 | "src", 28 | ], 29 | } 30 | -------------------------------------------------------------------------------- /udata_front/__init__.py: -------------------------------------------------------------------------------- 1 | ''' 2 | udata customizations for data.gouv.fr 3 | ''' 4 | 5 | __version__ = '6.2.5.dev' 6 | __description__ = 'udata customizations for data.gouv.fr' 7 | -------------------------------------------------------------------------------- /udata_front/frontend/markdown.py: -------------------------------------------------------------------------------- 1 | from udata.frontend.markdown import mistune, UDataMarkdown 2 | 3 | 4 | class UDataFrontMarkdown(UDataMarkdown): 5 | """Consistent with Flask's extensions signature.""" 6 | 7 | def __init__(self, app): 8 | app.jinja_env.filters['markdown'] = self.__call__ 9 | self.markdown = mistune.create_markdown( 10 | escape=False, hard_wrap=True, plugins=["table", "strikethrough"] 11 | ) 12 | 13 | 14 | def init_app(app): 15 | app.extensions['markdown'] = UDataFrontMarkdown(app) 16 | -------------------------------------------------------------------------------- /udata_front/migrations/2015-09-14-dataconnexions-6.js: -------------------------------------------------------------------------------- 1 | // Rename the dataconnexions badges to dataconnexions 5 2 | var result = db.reuse.update( 3 | {'badges.kind': 'dataconnexions-candidate'}, 4 | {$set: {'badges.$.kind': 'dataconnexions-5-candidate'}}, 5 | {multi: true} 6 | ); 7 | print(result.nModified, 'dataconnexions-candidate badges renamed.'); 8 | 9 | result = db.reuse.update( 10 | {'badges.kind': 'dataconnexions-laureate'}, 11 | {$set: {'badges.$.kind': 'dataconnexions-5-laureate'}}, 12 | {multi: true} 13 | ); 14 | print(result.nModified, 'dataconnexions-laureate badges renamed.'); 15 | -------------------------------------------------------------------------------- /udata_front/migrations/2016-04-05-deactivate-datapublica.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Deactivate all datasets linking to data-publica 3 | */ 4 | 5 | var eurostatId = ObjectId('534fff76a3a7292c64a77ded'); 6 | var banqueMondialeId = ObjectId('534fff59a3a7292c64a77cff'); 7 | 8 | var result = db.dataset.update({ 9 | $or: [ 10 | {organization: eurostatId}, 11 | {organization: banqueMondialeId } 12 | ] 13 | }, { 14 | $set: {deleted: new Date()} 15 | }, { 16 | multi: true 17 | }); 18 | 19 | print(result.nModified, 'datasets deleted'); 20 | -------------------------------------------------------------------------------- /udata_front/migrations/2017-01-05-geozones-admin-levels-fr.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Affect admin levels to french levels 3 | */ 4 | 5 | const ADMIN_LEVELS = { 6 | 'fr/region': 40, 7 | 'fr/county': 60, 8 | 'fr/epci': 68, 9 | 'fr/district': 70, 10 | 'fr/town': 80, 11 | 'fr/canton': 98, 12 | 'fr/iris': 98, 13 | }; 14 | 15 | var nb = 0; 16 | 17 | for (var key in ADMIN_LEVELS) { 18 | const result = db.geo_level.update( 19 | {_id: key}, 20 | {$set: {admin_level: ADMIN_LEVELS[key]}} 21 | ); 22 | nb += result.nModified; 23 | } 24 | print(`Affected admin level to ${nb} geospatial level`); 25 | -------------------------------------------------------------------------------- /udata_front/migrations/2018-04-18-migrate-active-users.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Ensure active users have a confirmed_at date set. 3 | */ 4 | 5 | const result = db.user.update( 6 | {active: true, confirmed_at: null}, 7 | {$set: {confirmed_at: new Date()}}, 8 | {multi: true} 9 | ); 10 | print(`${result.nModified} users migrated.`); 11 | -------------------------------------------------------------------------------- /udata_front/static/c3/logo-c3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/c3/logo-c3.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/dataconnexions6-logo-couleur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/dataconnexions6-logo-couleur.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/logo-blanc-rouge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/logo-blanc-rouge.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/logo-blanc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/logo-blanc.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/logo-couleur-rouge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/logo-couleur-rouge.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/logo-couleur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/logo-couleur.png -------------------------------------------------------------------------------- /udata_front/static/dataconnexions/logo-transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/dataconnexions/logo-transparent.png -------------------------------------------------------------------------------- /udata_front/static/faq/integration/exemple-integration-blog-etalab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/integration/exemple-integration-blog-etalab.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-CartePOI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-CartePOI.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-Evolutionbio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-Evolutionbio.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-Inventaire_du_patrimoine_Poitou-Chatrentes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-Inventaire_du_patrimoine_Poitou-Chatrentes.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-Inventaire_du_patrimoine_vecteurs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-Inventaire_du_patrimoine_vecteurs.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-OSM-cadastre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-OSM-cadastre.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/800px-TileMill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/800px-TileMill.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/Alluvial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/Alluvial.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/Dependencies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/Dependencies.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/Heatmap-salons-coiffure-paris-opendatasoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/Heatmap-salons-coiffure-paris-opendatasoft.png -------------------------------------------------------------------------------- /udata_front/static/faq/outils/PAC2012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/faq/outils/PAC2012.jpg -------------------------------------------------------------------------------- /udata_front/static/licences/ETALAB-Licence-Ouverte-v2.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/ETALAB-Licence-Ouverte-v2.0.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/description-contenu.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/description-contenu.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/homologation-licences-2017-05-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/homologation-licences-2017-05-05.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/homologation-licences-2017-09-26.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/homologation-licences-2017-09-26.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/homologation-licences-2017-09-29.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/homologation-licences-2017-09-29.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/homologation-licences-2019-04-17.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/homologation-licences-2019-04-17.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/homologation-licences-2019-05-29.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/homologation-licences-2019-05-29.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/licence-d-utilisation-a-titre-gratuit-de-l-IGN-2017-05-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/licence-d-utilisation-a-titre-gratuit-de-l-IGN-2017-05-05.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-de-PI-2019-04-17.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-de-PI-2019-04-17.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-du-RNCS-2019-04-17.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/licence-de-reutilisation-des-informations-de-l-INPI-pour-les-donnees-du-RNCS-2019-04-17.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2017-05-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2017-05-05.pdf -------------------------------------------------------------------------------- /udata_front/static/licences/licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2019-05-29.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/licences/licence-du-produit-gratuit-issu-de-la-Base-Adresse-Nationale-2019-05-29.pdf -------------------------------------------------------------------------------- /udata_front/static/nec_mergitur/logo_nec_mergitur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/nec_mergitur/logo_nec_mergitur.png -------------------------------------------------------------------------------- /udata_front/static/openfield16/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/static/openfield16/logo.jpg -------------------------------------------------------------------------------- /udata_front/tests/__init__.py: -------------------------------------------------------------------------------- 1 | from udata.settings import Testing 2 | 3 | 4 | class GouvFrSettings(Testing): 5 | TEST_WITH_THEME = True 6 | TEST_WITH_PLUGINS = True 7 | PLUGINS = ['front'] 8 | THEME = 'gouvfr' 9 | WP_ATOM_URL = None # Only activated on specific tests 10 | -------------------------------------------------------------------------------- /udata_front/tests/views/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/tests/views/__init__.py -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/fonts/Marianne-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/fonts/Marianne-ExtraBold.woff -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/fonts/Marianne-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/fonts/Marianne-ExtraBold.woff2 -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/fonts/Spectral-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/fonts/Spectral-Italic.woff -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/fonts/Spectral-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/fonts/Spectral-Italic.woff2 -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/favicon.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/annuaire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/annuaire.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/annuaire@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/annuaire@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/datasets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/datasets.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/datasets@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/datasets@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/datasets@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/datasets@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/dvf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/dvf.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/dvf@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/dvf@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/hero-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/hero-background.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/reuses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/reuses.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/reuses@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/reuses@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/homepage/reuses@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/homepage/reuses@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/logo-social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/logo-social.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/cnil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/cnil.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/cnil@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/cnil@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/cnil@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/cnil@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/googlemaps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/googlemaps.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/googlemaps@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/googlemaps@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/googlemaps@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/googlemaps@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/insee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/insee.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/insee@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/insee@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/insee@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/insee@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/lemonde.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/lemonde.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/lemonde@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/lemonde@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/lemonde@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/lemonde@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/liberation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/liberation.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/liberation@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/liberation@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/liberation@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/liberation@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/minedu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/minedu.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/minedu@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/minedu@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/minedu@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/minedu@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/spf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/spf.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/spf@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/spf@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/spf@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/spf@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/wikimedia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/wikimedia.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/wikimedia@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/wikimedia@2x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/organizations/wikimedia@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/organizations/wikimedia@3x.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/placeholders/author.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/placeholders/author.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/placeholders/dataset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/placeholders/dataset.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/placeholders/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/placeholders/news.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/placeholders/organization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/placeholders/organization.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/img/placeholders/reuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datagouv/udata-front/f00c4c138f3128a7af59039bbd945b7494bf85ef/udata_front/theme/gouvfr/assets/img/placeholders/reuse.png -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/js/api/harvesters.ts: -------------------------------------------------------------------------------- 1 | import { api } from "@datagouv/components/ts"; 2 | import { getLocalizedUrl } from "../i18n"; 3 | 4 | export async function getOrganizationHarvesters(oid: string, page: number, pageSize: number) { 5 | const resp = await api.get(getLocalizedUrl('harvest/sources/'), { 6 | params: { owner: oid, deleted: true, page, page_size: pageSize } 7 | }); 8 | return resp.data; 9 | } 10 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/js/api/licenses.ts: -------------------------------------------------------------------------------- 1 | import type { License } from "@datagouv/components/ts"; 2 | import { getLocalizedUrl } from "../i18n"; 3 | import { api } from "../plugins/api"; 4 | 5 | let licensesRequest: Promise
8 |
{{ email }}
3 | 4 | 9 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/assets/js/components/AdminLoader/AdminLoader.stories.ts: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from "@storybook/vue3"; 2 | import AdminLoader from "./AdminLoader.vue"; 3 | 4 | const meta = { 5 | title: "Admin/AdminLoader", 6 | component: AdminLoader, 7 | } satisfies Meta
3 |
4 | 5 | {{messagePassed}} 6 |
7 |8 | 9 | {{messageFailed}} 10 |
11 |4 | 8 | {{ message }} 9 |
10 |{{ error }}
9 | {% endif %} 10 |11 | 12 | {{ _('Home') }} 13 | 14 |
15 |5 | {{ banner_message|safe }} 6 |
7 |{{ error.message }}
7 | {% if sentry_event_id %} 8 |{{ _('The error identifier is {id}').format(id=sentry_event_id) }}
9 | {% endif %} 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/errors/403.html: -------------------------------------------------------------------------------- 1 | {% extends theme("errors/base.html") %} 2 | 3 | {% set title = _('Forbidden') %} 4 | 5 | {% block details %} 6 |{{ _("You are not allowed to display this page.") }}
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/errors/404.html: -------------------------------------------------------------------------------- 1 | {% extends theme("errors/base.html") %} 2 | 3 | {% set title = _('Page Not Found') %} 4 | 5 | {% block details %} 6 |{{ _("The page you're looking for could not be found.") }}
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/errors/410.html: -------------------------------------------------------------------------------- 1 | {% extends theme("errors/base.html") %} 2 | 3 | {% set title = _('Page Not Found') %} 4 | 5 | {% block details %} 6 |{{ _("The page you're looking has been deleted.") }}
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/errors/500.html: -------------------------------------------------------------------------------- 1 | {% extends theme("errors/base.html") %} 2 | 3 | {% set title = _('Internal server error') %} 4 | 5 | {% block details %} 6 |{{ _("The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.") }}
7 | {% if sentry_event_id %} 8 |{{ _('The error identifier is {id}').format(id=sentry_event_id) }}
9 | {% endif %} 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/errors/base.html: -------------------------------------------------------------------------------- 1 | {% extends theme("base.html") %} 2 | 3 | {% set title = title|default(error.name) %} 4 | 5 | {% block content %} 6 |{{ error.description }}
{% endblock %} 13 |14 | 15 | {{ _('Home') }} 16 | 17 |
18 |{{ _('Following since %(date)s', date=follow.since|dateformat) }}
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /udata_front/theme/gouvfr/templates/layouts/1-column.html: -------------------------------------------------------------------------------- 1 | {% extends theme('base.html') %} 2 | {% from theme('macros/breadcrumb.html') import breadcrumb with context %} 3 | {% set section_class = section_class|default('default') %} 4 | 5 | {% block content %} 6 |5 | 6 | {{ text }} 7 |
8 |