territories-dashboard-lib 0.1.39b1__tar.gz → 1.1.1.dev10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {territories_dashboard_lib-0.1.39b1/territories_dashboard_lib.egg-info → territories_dashboard_lib-1.1.1.dev10}/PKG-INFO +2 -2
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/pyproject.toml +3 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/admin.py +2 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/geo_lib/migrations/0003_geofeature_color_column_geofeature_size_column.py +23 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/models.py +12 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/payloads.py +7 -21
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/views.py +58 -53
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/indicators_lib/enums.py +109 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/indicators_lib/migrations/0004_alter_indicator_min_mesh.py +18 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/migrations/0005_auto_20251203_1621.py +2 -2
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/models.py +7 -4
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/payloads.py +14 -1
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/indicators_lib/query/commons.py +181 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/comparison.py +8 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/details.py +8 -13
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/histogram.py +0 -1
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/indicator_card.py +12 -7
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/top_10.py +12 -12
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/query/utils.py +9 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/table.py +15 -12
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/views.py +49 -59
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/logic.py +24 -25
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/superset_lib/migrations/0002_alter_filter_mesh.py +18 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/enums.py +2 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/tracking_lib/migrations/0005_alter_page_cmp_territory_mesh_alter_page_submesh_and_more.py +28 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/tracking_lib/migrations/0006_alter_event_name.py +18 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/payloads.py +4 -2
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/views.py +7 -6
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/conf.py +28 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/context_processors.py +2 -1
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/migrations/0005_mainconf_meshes.py +20 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/models.py +12 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/params.py +34 -22
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/anchor.mjs +43 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/page.mjs +7 -9
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/page.mjs +2 -7
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/dom.mjs +0 -15
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/enums.mjs +13 -10
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/side_panel.mjs +1 -15
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/page.mjs +7 -9
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/track-visible-indicators.mjs +121 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/indicatorMap.bundle.js +2 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.css +12 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/page.html +4 -3
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/anchor.html +14 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/geo_params.html +3 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/indicator-card.html +14 -8
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/select_territory.html +32 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html +53 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/page.html +9 -8
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/methodo/methodo.js +28 -0
- territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/methodo/page.html +40 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/page.html +4 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/sitemap/page.html +9 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templatetags/other_filters.py +6 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/views.py +100 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10/territories_dashboard_lib.egg-info}/PKG-INFO +2 -2
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib.egg-info/SOURCES.txt +12 -3
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib.egg-info/requires.txt +1 -1
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/indicators_lib/enums.py +0 -85
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/indicators_lib/query/commons.py +0 -195
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/conf.py +0 -14
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/indicatorMap.bundle.js +0 -2
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.html +0 -80
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.css +0 -29
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.html +0 -45
- territories_dashboard_lib-0.1.39b1/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_methodo.js +0 -19
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/MANIFEST.in +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/README.md +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/licence.md +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/setup.cfg +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/commons/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/commons/decorators.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/commons/models.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/commons/types.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/enums.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/migrations/0001_initial.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/migrations/0002_geoelement_linked_to_indicator.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/migrations/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/geo_lib/urls.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/admin.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/export.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/format.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/methodo_pdf.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/migrations/0001_initial.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/migrations/0002_filter_color_indicator_min_mesh_and_more.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/migrations/0003_indicator_short_title.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/migrations/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/refresh_filters.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/indicators_lib/urls.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/admin.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/guest_token.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/migrations/0001_initial.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/migrations/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/models.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/payloads.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/serializers.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/urls.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/superset_lib/views.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/geolocalisation/GeoLite2-Country.mmdb +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/geolocalisation/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/geolocalisation/logic.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/logic.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/migrations/0001_initial.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/migrations/0002_alter_event_created_at_alter_page_created_at.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/migrations/0003_cookieinfo.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/migrations/0004_cookieinfo_ip_address.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/migrations/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/models.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/tracking_lib/urls.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/admin.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/forms.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/migrations/0001_initial.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/migrations/0002_mainconf_contact_email_mainconf_newsletter_link_and_more.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/migrations/0003_alter_mainconf_footer_navigation_and_more.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/migrations/0004_mainconf_description_mainconf_social_image_url.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/migrations/__init__.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/navigation.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/serializers.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/chart.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/chartjs-plugin-datalabels.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/html2canvas.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/data.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/history.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/main-values.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/comparaison/territory-chart.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/data.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/histogram.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/map.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/proportions.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/sankey.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/table.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/top10.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/details/utils.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/export-graph.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/export.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/filters.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/format.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/history.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/main-value.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/theme/statistics.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/indicators/utils.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/pages/static/page.mjs +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/patternomaly.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/react18.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/reactdom18.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/js/supersetEmbed.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/sankeyGraph.bundle.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static/territories_dashboard_lib/website/react/vendors.bundle.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/static_content.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/admin/indicators_lib/indicator/change_form.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/404.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/500.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/base.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/footer.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/footer.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/layout/header.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/components/histogram.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/comparaison/[theme]/components/indicateur-card.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/chart-buttons.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/chart-buttons.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/geo_params.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/indicator-card.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/loader.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/side_panel_geo.js +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/themes-list.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/themes-list.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/themes-nav.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/title.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/components/title.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/filters-reminder.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/filters-reminder.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/histogram.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/map.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/no-data.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/proportions.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/sankey.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/table-flows.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/table-values.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/table.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/table.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/components/top10.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/map.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/details/page.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/extremum.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/extremum.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/indicateur-card.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/indicateur-card.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/indicators/themes/components/stats.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/lexique/page.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/lexique/page.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/page.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/static/page.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/static/page.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/superset/page.css +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/pages/superset/page.html +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templates/territories_dashboard_lib/website/svg/delete-back.svg +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib/website_lib/templatetags/htmlparams.py +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib.egg-info/dependency_links.txt +0 -0
- {territories_dashboard_lib-0.1.39b1 → territories_dashboard_lib-1.1.1.dev10}/territories_dashboard_lib.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: territories-dashboard-lib
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.1.1.dev10
|
|
4
4
|
Summary: Librairie pour la visualisation d'indicateurs territoriaux.
|
|
5
5
|
Author-email: Bastien <bastien@prune.sh>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -11,7 +11,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
11
11
|
Requires-Python: <3.14,>=3.13
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: licence.md
|
|
14
|
-
Requires-Dist: django
|
|
14
|
+
Requires-Dist: django<6
|
|
15
15
|
Requires-Dist: django-nested-admin>=4.1.1
|
|
16
16
|
Requires-Dist: geoip2>=5.1.0
|
|
17
17
|
Requires-Dist: gunicorn>=23.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "territories-dashboard-lib"
|
|
3
|
-
version = "
|
|
3
|
+
version = "1.1.1.dev10"
|
|
4
4
|
description = "Librairie pour la visualisation d'indicateurs territoriaux."
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Bastien", email = "bastien@prune.sh" }
|
|
@@ -18,7 +18,7 @@ classifiers = [
|
|
|
18
18
|
]
|
|
19
19
|
|
|
20
20
|
dependencies = [
|
|
21
|
-
"django
|
|
21
|
+
"django<6",
|
|
22
22
|
"django-nested-admin>=4.1.1",
|
|
23
23
|
"geoip2>=5.1.0",
|
|
24
24
|
"gunicorn>=23.0.0",
|
|
@@ -35,7 +35,7 @@ dependencies = [
|
|
|
35
35
|
include-package-data = true
|
|
36
36
|
|
|
37
37
|
[tool.setuptools.packages.find]
|
|
38
|
-
exclude = ["dev"]
|
|
38
|
+
exclude = ["dev", "scripts", "docs"]
|
|
39
39
|
|
|
40
40
|
[build-system]
|
|
41
41
|
requires = ["setuptools", "wheel"]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Generated by Django 5.2.9 on 2026-01-06 16:48
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('geo_lib', '0002_geoelement_linked_to_indicator'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='geofeature',
|
|
15
|
+
name='color_column',
|
|
16
|
+
field=models.TextField(blank=True, help_text="Optionnel. Nom de la colonne qui définit une couleur par point. Les valeurs de la colonne doivent être sous le format #ffffff (hexadecimale). Si renseigné, le champ 'color' ne sera pas utilisé. Seulement pour les points.", null=True, verbose_name='Colonne de la couleur'),
|
|
17
|
+
),
|
|
18
|
+
migrations.AddField(
|
|
19
|
+
model_name='geofeature',
|
|
20
|
+
name='size_column',
|
|
21
|
+
field=models.TextField(blank=True, help_text="Optionnel. Nom de la colonne qui définit une taille par point. Les valeurs de la colonne doivent être 'sm' (small) ou 'md' (medium). Seulement pour les points.", null=True, verbose_name='Colonne de la taille'),
|
|
22
|
+
),
|
|
23
|
+
]
|
|
@@ -40,6 +40,18 @@ class GeoFeature(CommonModel):
|
|
|
40
40
|
verbose_name="Afficher au niveau France entière",
|
|
41
41
|
help_text="Décochez si la quantité de données est trop importante pour le niveau France entière.",
|
|
42
42
|
)
|
|
43
|
+
color_column = models.TextField(
|
|
44
|
+
blank=True,
|
|
45
|
+
null=True,
|
|
46
|
+
verbose_name="Colonne de la couleur",
|
|
47
|
+
help_text="Optionnel. Nom de la colonne qui définit une couleur par point. Les valeurs de la colonne doivent être sous le format #ffffff (hexadecimale). Si renseigné, le champ 'color' ne sera pas utilisé. Seulement pour les points.",
|
|
48
|
+
)
|
|
49
|
+
size_column = models.TextField(
|
|
50
|
+
blank=True,
|
|
51
|
+
null=True,
|
|
52
|
+
verbose_name="Colonne de la taille",
|
|
53
|
+
help_text="Optionnel. Nom de la colonne qui définit une taille par point. Les valeurs de la colonne doivent être 'sm' (small) ou 'md' (medium). Seulement pour les points.",
|
|
54
|
+
)
|
|
43
55
|
|
|
44
56
|
def __str__(self):
|
|
45
57
|
return self.name
|
|
@@ -3,29 +3,18 @@ from typing import List, Optional
|
|
|
3
3
|
from pydantic import BaseModel, field_validator
|
|
4
4
|
|
|
5
5
|
from territories_dashboard_lib.commons.types import TerritoryCode
|
|
6
|
-
from territories_dashboard_lib.indicators_lib.enums import
|
|
7
|
-
|
|
8
|
-
MeshLevel,
|
|
9
|
-
)
|
|
6
|
+
from territories_dashboard_lib.indicators_lib.enums import MeshLevel
|
|
7
|
+
from territories_dashboard_lib.indicators_lib.payloads import SubMeshPayload
|
|
10
8
|
|
|
11
9
|
|
|
12
|
-
class
|
|
13
|
-
mesh: MeshLevel
|
|
14
|
-
geo_level: GeoLevel
|
|
15
|
-
main_territories: List[TerritoryCode]
|
|
10
|
+
class GeoFeaturesPayload(SubMeshPayload):
|
|
16
11
|
last: Optional[int] = None
|
|
17
12
|
limit: Optional[int] = 1000
|
|
18
13
|
feature: int
|
|
19
14
|
|
|
20
|
-
@field_validator("main_territories", mode="before")
|
|
21
|
-
def split_main_territories(cls, v):
|
|
22
|
-
if isinstance(v, str):
|
|
23
|
-
return v.split(",")
|
|
24
|
-
return v
|
|
25
|
-
|
|
26
15
|
|
|
27
16
|
class MainTerritoryParams(BaseModel):
|
|
28
|
-
geo_level:
|
|
17
|
+
geo_level: MeshLevel
|
|
29
18
|
geo_id: List[TerritoryCode]
|
|
30
19
|
|
|
31
20
|
@field_validator("geo_id", mode="before")
|
|
@@ -46,14 +35,11 @@ class TerritoriesParams(BaseModel):
|
|
|
46
35
|
return v
|
|
47
36
|
|
|
48
37
|
|
|
49
|
-
class
|
|
50
|
-
mesh: MeshLevel
|
|
51
|
-
geo_level: GeoLevel | None = None
|
|
52
|
-
main_territories: List[TerritoryCode] | None = None
|
|
38
|
+
class TerritoryFeaturePayload(SubMeshPayload):
|
|
53
39
|
codes: List[TerritoryCode] | None = None
|
|
54
40
|
|
|
55
|
-
@field_validator("
|
|
56
|
-
def
|
|
41
|
+
@field_validator("codes", mode="before")
|
|
42
|
+
def split_codes(cls, v):
|
|
57
43
|
if isinstance(v, str):
|
|
58
44
|
return v.split(",")
|
|
59
45
|
return v
|
|
@@ -7,22 +7,26 @@ from django.http import HttpResponse, JsonResponse
|
|
|
7
7
|
from django.shortcuts import get_object_or_404
|
|
8
8
|
from django.views.decorators.cache import cache_control
|
|
9
9
|
from django.views.decorators.http import require_GET
|
|
10
|
-
from psycopg2.sql import SQL
|
|
10
|
+
from psycopg2.sql import SQL
|
|
11
11
|
|
|
12
12
|
from territories_dashboard_lib.geo_lib.payloads import (
|
|
13
|
-
|
|
13
|
+
GeoFeaturesPayload,
|
|
14
14
|
MainTerritoryParams,
|
|
15
15
|
SearchTerritoriesParams,
|
|
16
16
|
TerritoriesParams,
|
|
17
|
-
|
|
17
|
+
TerritoryFeaturePayload,
|
|
18
18
|
)
|
|
19
19
|
from territories_dashboard_lib.indicators_lib.enums import (
|
|
20
20
|
FRANCE_GEOLEVEL_TITLES,
|
|
21
|
-
MESH_DB,
|
|
22
21
|
MeshLevel,
|
|
23
22
|
)
|
|
24
|
-
from territories_dashboard_lib.indicators_lib.query.commons import
|
|
25
|
-
|
|
23
|
+
from territories_dashboard_lib.indicators_lib.query.commons import (
|
|
24
|
+
get_sub_territories,
|
|
25
|
+
)
|
|
26
|
+
from territories_dashboard_lib.indicators_lib.query.utils import (
|
|
27
|
+
format_sql_codes,
|
|
28
|
+
run_custom_query,
|
|
29
|
+
)
|
|
26
30
|
|
|
27
31
|
from .enums import GeoFeatureType
|
|
28
32
|
from .models import GeoFeature
|
|
@@ -42,14 +46,11 @@ class DateTimeEncoder(json.JSONEncoder):
|
|
|
42
46
|
@require_GET
|
|
43
47
|
@cache_control(max_age=3600)
|
|
44
48
|
def geo_features_view(request):
|
|
45
|
-
|
|
49
|
+
payload = GeoFeaturesPayload(**request.GET.dict())
|
|
46
50
|
|
|
47
|
-
geo_feature = get_object_or_404(GeoFeature, id=
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
main_territory_codes = params.main_territories
|
|
51
|
-
last = params.last
|
|
52
|
-
limit = params.limit
|
|
51
|
+
geo_feature = get_object_or_404(GeoFeature, id=payload.feature)
|
|
52
|
+
last = payload.last
|
|
53
|
+
limit = payload.limit
|
|
53
54
|
|
|
54
55
|
last_year_query = (
|
|
55
56
|
f"SELECT DISTINCT annee FROM {geo_feature.name} ORDER BY annee DESC"
|
|
@@ -57,10 +58,16 @@ def geo_features_view(request):
|
|
|
57
58
|
years = run_custom_query(last_year_query)
|
|
58
59
|
last_year = years[0].get("annee")
|
|
59
60
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
territories = get_sub_territories(
|
|
62
|
+
submesh=payload.submesh, territory=payload.territory
|
|
63
|
+
)
|
|
64
|
+
territories_ids = [t["code"] for t in territories]
|
|
65
|
+
col_id_name = f"code_{payload.submesh}"
|
|
63
66
|
columns = [el.name for el in geo_feature.items.all()]
|
|
67
|
+
if geo_feature.color_column:
|
|
68
|
+
columns.append(geo_feature.color_column)
|
|
69
|
+
if geo_feature.size_column:
|
|
70
|
+
columns.append(geo_feature.size_column)
|
|
64
71
|
|
|
65
72
|
coma = ", " if columns else ""
|
|
66
73
|
select_geo_code = (
|
|
@@ -73,8 +80,8 @@ def geo_features_view(request):
|
|
|
73
80
|
where_clause = f"WHERE geo.{col_id_name} IN ('{"', '".join(territories_ids)}')"
|
|
74
81
|
else:
|
|
75
82
|
where_clause = (
|
|
76
|
-
f"JOIN contours_simplified_{
|
|
77
|
-
f"WHERE contours.code IN
|
|
83
|
+
f"JOIN contours_simplified_{payload.territory.mesh} contours ON ST_intersects(geo.geometry, contours.geometry)\n"
|
|
84
|
+
f"WHERE contours.code IN {payload.territory.sql_codes}"
|
|
78
85
|
)
|
|
79
86
|
where_clause += f" AND annee = {last_year}"
|
|
80
87
|
|
|
@@ -91,16 +98,22 @@ def geo_features_view(request):
|
|
|
91
98
|
results = run_custom_query(query)
|
|
92
99
|
|
|
93
100
|
items = geo_feature.items.all()
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
{
|
|
101
|
+
data = []
|
|
102
|
+
for r in results:
|
|
103
|
+
properties = {el.label: r.get(el.name) for el in items}
|
|
104
|
+
if geo_feature.color_column or geo_feature.size_column:
|
|
105
|
+
properties["display"] = {}
|
|
106
|
+
if geo_feature.color_column:
|
|
107
|
+
properties["display"]["color"] = r.get(geo_feature.color_column)
|
|
108
|
+
if geo_feature.size_column:
|
|
109
|
+
properties["display"]["size"] = r.get(geo_feature.size_column)
|
|
110
|
+
d = {
|
|
97
111
|
"type": "Feature",
|
|
98
112
|
"id": r.get("geo_code"),
|
|
99
|
-
"properties":
|
|
113
|
+
"properties": properties,
|
|
100
114
|
"geometry": json.loads(r.get("geojson")),
|
|
101
115
|
}
|
|
102
|
-
|
|
103
|
-
]
|
|
116
|
+
data.append(d)
|
|
104
117
|
|
|
105
118
|
last_queried_order_id = results[-1]["order_id"] if results else None
|
|
106
119
|
|
|
@@ -146,12 +159,10 @@ def precise_view(request):
|
|
|
146
159
|
if not mesh_level:
|
|
147
160
|
return JsonResponse({"error": "Missing 'mesh' parameter"}, status=400)
|
|
148
161
|
|
|
149
|
-
mapped_mesh_level = "DEPCOM" if mesh_level == "com" else mesh_level.upper()
|
|
150
|
-
|
|
151
162
|
query = f"""
|
|
152
|
-
SELECT
|
|
163
|
+
SELECT code AS id, ST_asgeojson(geometry) AS polygon
|
|
153
164
|
FROM contours_geo_ign_{mesh_level}
|
|
154
|
-
WHERE
|
|
165
|
+
WHERE code IN ('{"', '".join(territories_ids)}')
|
|
155
166
|
"""
|
|
156
167
|
|
|
157
168
|
results = run_custom_query(query)
|
|
@@ -164,20 +175,20 @@ def precise_view(request):
|
|
|
164
175
|
@require_GET
|
|
165
176
|
@cache_control(max_age=3600)
|
|
166
177
|
def territories_view(request):
|
|
167
|
-
|
|
168
|
-
geo_level = params.geo_level
|
|
169
|
-
mesh = params.mesh
|
|
178
|
+
payload = TerritoryFeaturePayload(**request.GET.dict())
|
|
170
179
|
|
|
171
|
-
if
|
|
172
|
-
territories_ids =
|
|
180
|
+
if payload.codes:
|
|
181
|
+
territories_ids = payload.codes
|
|
173
182
|
else:
|
|
174
|
-
|
|
175
|
-
|
|
183
|
+
territories = get_sub_territories(
|
|
184
|
+
submesh=payload.submesh, territory=payload.territory
|
|
185
|
+
)
|
|
186
|
+
territories_ids = [t["code"] for t in territories]
|
|
176
187
|
|
|
177
188
|
query = f"""
|
|
178
189
|
SELECT code AS id, ST_asgeojson(geometry) AS polygon
|
|
179
|
-
FROM contours_simplified_{
|
|
180
|
-
WHERE code IN
|
|
190
|
+
FROM contours_simplified_{payload.submesh}
|
|
191
|
+
WHERE code IN {format_sql_codes(territories_ids)}
|
|
181
192
|
"""
|
|
182
193
|
|
|
183
194
|
results = run_custom_query(query)
|
|
@@ -190,7 +201,7 @@ def territories_view(request):
|
|
|
190
201
|
|
|
191
202
|
|
|
192
203
|
def _fill_territory_li(code, name, mesh):
|
|
193
|
-
label = name if mesh == MeshLevel.
|
|
204
|
+
label = name if mesh == MeshLevel.fr else f"{name} - {code}"
|
|
194
205
|
return f"""<li data-code="{code}" data-name="{name}" onclick="chooseTerritory(this)"><button aria-label="Choisir {label}">{label}</button></li>"""
|
|
195
206
|
|
|
196
207
|
|
|
@@ -201,27 +212,21 @@ def search_territories_view(request):
|
|
|
201
212
|
mesh = params.mesh
|
|
202
213
|
search = params.search
|
|
203
214
|
offset = params.offset
|
|
204
|
-
if mesh == MeshLevel.
|
|
215
|
+
if mesh == MeshLevel.fr:
|
|
205
216
|
lis = []
|
|
206
217
|
for code, name in FRANCE_GEOLEVEL_TITLES.items():
|
|
207
218
|
li = _fill_territory_li(code, name, mesh)
|
|
208
219
|
lis.append(li)
|
|
209
220
|
return HttpResponse("\n".join(lis))
|
|
210
|
-
|
|
221
|
+
table_name = f"arbo_{mesh}"
|
|
211
222
|
pagination = 20
|
|
212
|
-
query = SQL("""
|
|
213
|
-
SELECT DISTINCT
|
|
214
|
-
WHERE unaccent(
|
|
215
|
-
AND
|
|
216
|
-
ORDER BY
|
|
217
|
-
LIMIT {
|
|
218
|
-
|
|
219
|
-
""").format(
|
|
220
|
-
code=Identifier(mesh_db),
|
|
221
|
-
name=Identifier(f"NOM_{mesh_db}"),
|
|
222
|
-
offset=Literal(offset * pagination),
|
|
223
|
-
limit=Literal(pagination),
|
|
224
|
-
)
|
|
223
|
+
query = SQL(f"""
|
|
224
|
+
SELECT DISTINCT code, name FROM {table_name}
|
|
225
|
+
WHERE unaccent(name) || code ILIKE unaccent(%s)
|
|
226
|
+
AND code !~ '^[A-Z]{{3}}$'
|
|
227
|
+
ORDER BY name, code
|
|
228
|
+
LIMIT {pagination} OFFSET {offset * pagination};
|
|
229
|
+
""")
|
|
225
230
|
territories = run_custom_query(query, [f"%{search}%"])
|
|
226
231
|
lis = []
|
|
227
232
|
for territory in territories:
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
from django.db import models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AggregationFunctions(models.TextChoices):
|
|
8
|
+
DISCRETE_COMPONENT_2 = "discrete"
|
|
9
|
+
REPEATED_COMPONENT_2 = "repeated"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MeshLevel(models.TextChoices):
|
|
13
|
+
fr = "fr"
|
|
14
|
+
reg = "reg"
|
|
15
|
+
dep = "dep"
|
|
16
|
+
epci = "epci"
|
|
17
|
+
com = "com"
|
|
18
|
+
aom = "aom"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
STANDARD_MESHES = [
|
|
22
|
+
MeshLevel.fr,
|
|
23
|
+
MeshLevel.reg,
|
|
24
|
+
MeshLevel.dep,
|
|
25
|
+
MeshLevel.epci,
|
|
26
|
+
MeshLevel.com,
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
ALL_MESHES_ABSOLUTE = [
|
|
30
|
+
MeshLevel.fr,
|
|
31
|
+
MeshLevel.reg,
|
|
32
|
+
MeshLevel.dep,
|
|
33
|
+
MeshLevel.aom,
|
|
34
|
+
MeshLevel.epci,
|
|
35
|
+
MeshLevel.com,
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
MESHES_ORDERED_FOR_PRESENTATION = [
|
|
40
|
+
MeshLevel.fr,
|
|
41
|
+
MeshLevel.reg,
|
|
42
|
+
MeshLevel.dep,
|
|
43
|
+
MeshLevel.epci,
|
|
44
|
+
MeshLevel.com,
|
|
45
|
+
MeshLevel.aom,
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def order_meshes_for_presentation(meshes: List[MeshLevel]) -> List[MeshLevel]:
|
|
50
|
+
"""
|
|
51
|
+
Orders a list of MeshLevel values according to MESHES_ORDERED_FOR_PRESENTATION.
|
|
52
|
+
"""
|
|
53
|
+
order_index = {mesh: i for i, mesh in enumerate(MESHES_ORDERED_FOR_PRESENTATION)}
|
|
54
|
+
return sorted(meshes, key=lambda mesh: order_index[mesh])
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class FranceGeoLevel(models.TextChoices):
|
|
58
|
+
All = "FR0,FR1,FR2"
|
|
59
|
+
METRO = "FR0,FR1"
|
|
60
|
+
METRO_HORS_IDF = "FR0"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
FRANCE_GEOLEVEL_TITLES = {
|
|
64
|
+
FranceGeoLevel.All: "France entière",
|
|
65
|
+
FranceGeoLevel.METRO: "France métropolitaine",
|
|
66
|
+
FranceGeoLevel.METRO_HORS_IDF: "France métropolitaine hors IDF",
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
FRANCE_DB_VALUES = {
|
|
70
|
+
FranceGeoLevel.All: "FR_TOT",
|
|
71
|
+
FranceGeoLevel.METRO: "FR_METRO",
|
|
72
|
+
FranceGeoLevel.METRO_HORS_IDF: "FR_METRO_HORS_IDF",
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
DEFAULT_MESH = MeshLevel.reg
|
|
77
|
+
|
|
78
|
+
MESHES_SHORT_TITLES = {
|
|
79
|
+
MeshLevel.fr: "France",
|
|
80
|
+
MeshLevel.reg: "Région",
|
|
81
|
+
MeshLevel.dep: "Département",
|
|
82
|
+
MeshLevel.epci: "Intercommunalité",
|
|
83
|
+
MeshLevel.com: "Commune",
|
|
84
|
+
MeshLevel.aom: "AOM",
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
MESHES_LONG_TITLES = {
|
|
88
|
+
MeshLevel.fr: "France",
|
|
89
|
+
MeshLevel.reg: "Région",
|
|
90
|
+
MeshLevel.dep: "Département",
|
|
91
|
+
MeshLevel.epci: "Intercommunalité",
|
|
92
|
+
MeshLevel.com: "Commune",
|
|
93
|
+
MeshLevel.aom: "Autorité Organisatrice de la Mobilité",
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def get_miminum_mesh():
|
|
98
|
+
try:
|
|
99
|
+
town_mesh_is_disabled = settings.DISABLE_TOWN_MESH
|
|
100
|
+
return MeshLevel.epci if town_mesh_is_disabled else MeshLevel.com
|
|
101
|
+
except AttributeError:
|
|
102
|
+
return MeshLevel.com
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def get_allow_same_mesh():
|
|
106
|
+
try:
|
|
107
|
+
return bool(settings.ALLOW_SAME_MESH)
|
|
108
|
+
except AttributeError:
|
|
109
|
+
return False
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.2.8 on 2025-12-03 13:30
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('indicators_lib', '0003_indicator_short_title'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name='indicator',
|
|
15
|
+
name='min_mesh',
|
|
16
|
+
field=models.TextField(choices=[('fr', 'Fr'), ('reg', 'Reg'), ('dep', 'Dep'), ('epci', 'Epci'), ('com', 'Com'), ('aom', 'Aom')], default='com'),
|
|
17
|
+
),
|
|
18
|
+
]
|
|
@@ -115,8 +115,8 @@ def reset_indicators_methodo_pdf(apps, schema_editor):
|
|
|
115
115
|
|
|
116
116
|
class Migration(migrations.Migration):
|
|
117
117
|
dependencies = [
|
|
118
|
-
("indicators_lib", "
|
|
119
|
-
("website_lib", "
|
|
118
|
+
("indicators_lib", "0004_alter_indicator_min_mesh"),
|
|
119
|
+
("website_lib", "0005_mainconf_meshes"),
|
|
120
120
|
]
|
|
121
121
|
|
|
122
122
|
operations = [
|
|
@@ -10,9 +10,6 @@ from territories_dashboard_lib.indicators_lib.refresh_filters import refresh_fil
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class Theme(CommonModel):
|
|
13
|
-
# TODO: make it primary key
|
|
14
|
-
# django.db.utils.OperationalError: foreign key mismatch -
|
|
15
|
-
# "tdbmd_indicators_indicatorsubtheme" referencing "tdbmd_indicators_indicatortheme"
|
|
16
13
|
ordering = models.IntegerField(default=0)
|
|
17
14
|
ordering.verbose_name = "Ordre dans la sidebar"
|
|
18
15
|
name = models.CharField(max_length=64, unique=True)
|
|
@@ -106,7 +103,7 @@ class Indicator(CommonModel):
|
|
|
106
103
|
# Indicator's DB attributes
|
|
107
104
|
db_table_prefix = models.CharField(max_length=128)
|
|
108
105
|
db_table_prefix.verbose_name = "Préfixe dans la DB"
|
|
109
|
-
min_mesh = models.TextField(choices=MeshLevel.choices, default=MeshLevel.
|
|
106
|
+
min_mesh = models.TextField(choices=MeshLevel.choices, default=MeshLevel.com)
|
|
110
107
|
is_composite = models.BooleanField(default=False)
|
|
111
108
|
is_composite.verbose_name = "Indicateur composite"
|
|
112
109
|
show_alternative = models.BooleanField(
|
|
@@ -180,6 +177,12 @@ class Indicator(CommonModel):
|
|
|
180
177
|
|
|
181
178
|
get_theme_title.short_description = "Thème"
|
|
182
179
|
|
|
180
|
+
def table_name(indicator, mesh: MeshLevel, *, flows: bool = False):
|
|
181
|
+
table_prefix = (
|
|
182
|
+
indicator.flows_db_table_prefix if flows else indicator.db_table_prefix
|
|
183
|
+
)
|
|
184
|
+
return f"{table_prefix}_{mesh}"
|
|
185
|
+
|
|
183
186
|
class Meta:
|
|
184
187
|
ordering = ("sub_theme", "index_in_theme")
|
|
185
188
|
verbose_name = "3 - Indicateur"
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from typing import Annotated, Optional
|
|
2
2
|
|
|
3
|
-
from pydantic import BaseModel, BeforeValidator, Field
|
|
3
|
+
from pydantic import BaseModel, BeforeValidator, Field, model_validator
|
|
4
4
|
|
|
5
5
|
from territories_dashboard_lib.commons.types import MutualisedTerritoryCode, SQlName
|
|
6
|
+
from territories_dashboard_lib.indicators_lib.query.utils import format_sql_codes
|
|
6
7
|
|
|
7
8
|
from .enums import MeshLevel
|
|
8
9
|
|
|
@@ -11,6 +12,10 @@ class Territory(BaseModel):
|
|
|
11
12
|
id: MutualisedTerritoryCode
|
|
12
13
|
mesh: MeshLevel
|
|
13
14
|
|
|
15
|
+
@property
|
|
16
|
+
def sql_codes(territory) -> str:
|
|
17
|
+
return format_sql_codes(territory.id.split(","))
|
|
18
|
+
|
|
14
19
|
|
|
15
20
|
def validate_territory(value):
|
|
16
21
|
if value and "-" in value:
|
|
@@ -25,6 +30,14 @@ class SubMeshPayload(BasePayload):
|
|
|
25
30
|
submesh: MeshLevel
|
|
26
31
|
|
|
27
32
|
|
|
33
|
+
class SubMeshOnlyPayload(SubMeshPayload):
|
|
34
|
+
@model_validator(mode="after")
|
|
35
|
+
def check_not_same_mesh(self):
|
|
36
|
+
if self.submesh == self.territory.mesh:
|
|
37
|
+
raise ValueError("submesh and territory mesh should not be equal")
|
|
38
|
+
return self
|
|
39
|
+
|
|
40
|
+
|
|
28
41
|
class FlowsPayload(SubMeshPayload):
|
|
29
42
|
prefix: SQlName
|
|
30
43
|
dimension: SQlName | None = None
|