Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit 43bf6f3

Browse files
authored
Merge pull request #30 from entrepreneur-interet-general/sp10
Sp10
2 parents 8cd39f6 + 4ca2223 commit 43bf6f3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+524
-240
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Le site est développé en utilisant le framework [Django](https://www.djangopro
1919

2020
- **[django-francedata](https://github.com/entrepreneur-interet-general/django-francedata/)** : Contient des tables reprenant la structure des collectivités locales françaises (communes, EPCI à fiscalité propre, départements, régions) ainsi que des tables de données associées pour gérer des données concernant ces collectivités, importées depuis [data.gouv.fr](https://www.data.gouv.fr/fr/) et [banatic](https://www.banatic.interieur.gouv.fr/V5/accueil/index.php).
2121
- **aspic** : Contient la structure de la base aspic (Application de la DGCL sur les intercommunalités, destinée aux préfectures), actuellement utilisée pour les données concernant les collectivités locales. Elle est appelée à disparaître à terme.
22+
- **dashboard** : Contient les personnalisations des panneaux d’administration de Django (dans `templates/admin`) et Wagtail (dans `templates/wagtailadmin` et `wagtail_hooks.py`)
2223
- **[django-feed-reader](https://github.com/Ash-Crow/django-feed-reader)** : Un agrégateur de flux RSS permettant de récupérer les métadonnées sur les publications des différents sites des services statistiques des ministères (SSM). Il est prévu de remplacer ce fonctionnement par une application récupérant ces métadonnées sur la future version de la [bibliothèque nationale de la statistique publique](https://www.insee.fr/fr/information/1303569), en s'appuyant sur l'[API de Gallica](https://api.bnf.fr/fr/api-gallica-de-recherche)
2324
- **[django-dsfr](https://github.com/entrepreneur-interet-general/django-dsfr)** : Permet d'utiliser facilement le [système de design de l'État](https://www.systeme-de-design.gouv.fr/) dans des templates Django.
2425
- **pages** : Application basée sur le moteur de CMS [Wagtail](https://wagtail.io/) qui gère les pages dynamiques du site, dont la page d’accueil.

config/settings.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
# Application definition
3737

3838
INSTALLED_APPS = [
39+
"dsfr",
40+
"dashboard",
3941
"django.contrib.admin",
4042
"django.contrib.auth",
4143
"django.contrib.contenttypes",
@@ -45,8 +47,8 @@
4547
"django.contrib.postgres",
4648
"corsheaders",
4749
"wagtail.contrib.forms",
48-
"wagtail.contrib.redirects",
4950
"wagtail.contrib.modeladmin",
51+
"wagtail.contrib.redirects",
5052
"wagtail.contrib.styleguide",
5153
"wagtail.embeds",
5254
"wagtail.sites",
@@ -63,7 +65,6 @@
6365
"taggit",
6466
"analytical",
6567
"feeds",
66-
"dsfr",
6768
"francedata.apps.FrancedataConfig",
6869
"aspic.apps.AspicConfig",
6970
"core",
@@ -170,7 +171,7 @@
170171
MATOMO_SITE_ID = LOCAL_MATOMO_SITE_ID
171172

172173
# Wagtail
173-
WAGTAIL_SITE_NAME = "Open Collectivités - gestion du contenu"
174+
WAGTAIL_SITE_NAME = "Open Collectivités — Gestion des contenus"
174175

175176
# Allow bulk deletions
176177
DATA_UPLOAD_MAX_NUMBER_FIELDS = None

core/context_processors.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ def topics_processor(request: HttpRequest) -> dict:
99
topics = []
1010

1111
for topic in raw_topics:
12+
if "media" in topic.icon_path:
13+
icon_path = f"/media/{topic.icon_path}"
14+
else:
15+
icon_path = f"/static{topic.icon_path}"
1216
topics.append(
1317
{
1418
"title": topic.name,
1519
"url": f"{page_publications}?topic={topic.id}",
16-
"image_path": f"/static{topic.icon_path}",
17-
"svg_icon": True,
20+
"image_path": icon_path,
1821
}
1922
)
2023
return {"context_topics": topics}

core/services/publications.py

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ def list_documents(
1414
before: str = None,
1515
after: str = None,
1616
limit: int = None,
17+
commune: int = None,
18+
epci: int = None,
19+
departement: int = None,
20+
region: int = None,
1721
):
1822
"""
1923
Lists **published** documents, with optional filters
2024
"""
2125
qs = Document.objects.filter(is_published=True)
2226

23-
# Filters
27+
# Generic filters
2428
if topic:
2529
qs = qs.filter(topics__id=topic)
2630
if scope:
@@ -31,6 +35,18 @@ def list_documents(
3135
qs = qs.filter(publication_pages__id=publication_page)
3236
if source_org:
3337
qs = qs.filter(source__editor__id=source_org)
38+
39+
# Specific collectivity filters
40+
if commune:
41+
qs = qs.filter(communes__id=commune)
42+
if epci:
43+
qs = qs.filter(epcis__id=epci)
44+
if departement:
45+
qs = qs.filter(departements__id=departement)
46+
if region:
47+
qs = qs.filter(regions__id=region)
48+
49+
# Date filters
3450
if before:
3551
parsed_date = dateparser.parse(before)
3652
qs = qs.filter(last_update__lte=parsed_date)
@@ -197,3 +213,43 @@ def publication_filters(request):
197213
response["extra_count"] = extra_filters_count
198214

199215
return response
216+
217+
218+
def list_publications_for_collectivity(collectivity_type: str, collectivity_id: int):
219+
if collectivity_type == "commune":
220+
level_title = "Utiles à toutes les communes"
221+
instance_title = "Concernant cette commune"
222+
publication_page_id = 1
223+
publications_for_instance = list_documents(commune=collectivity_id, limit=8)
224+
elif collectivity_type == "epci":
225+
level_title = "Utiles à tous les EPCI"
226+
instance_title = "Concernant cet EPCI"
227+
publication_page_id = 4
228+
publications_for_instance = list_documents(epci=collectivity_id, limit=8)
229+
elif collectivity_type == "departement":
230+
level_title = "Utiles à tous les départements"
231+
instance_title = "Concernant ce département"
232+
publication_page_id = 2
233+
publications_for_instance = list_documents(departement=collectivity_id, limit=8)
234+
elif collectivity_type == "region":
235+
level_title = "Utiles à toutes les régions"
236+
instance_title = "Concernant cette région"
237+
publication_page_id = 3
238+
publications_for_instance = list_documents(region=collectivity_id, limit=8)
239+
240+
publications = {"collectivity_type": collectivity_type}
241+
level = {}
242+
level["title"] = level_title
243+
level["publication_page_id"] = publication_page_id
244+
publications_for_level = list_documents(
245+
publication_page=publication_page_id, limit=8
246+
)
247+
level["cards"] = documents_to_cards(publications_for_level)
248+
publications["level"] = level
249+
250+
instance = {}
251+
instance["title"] = instance_title
252+
instance["id"] = collectivity_id
253+
instance["cards"] = documents_to_cards(publications_for_instance)
254+
publications["instance"] = instance
255+
return publications

core/static/css/main.css

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,6 @@
3030
margin-top: 1em;
3131
}
3232

33-
.oc-padding-bottom-3em {
34-
padding-bottom: 3em;
35-
}
36-
37-
.oc-padding-top-1em {
38-
padding-top: 1em;
39-
}
40-
41-
.oc-padding-top-2em {
42-
padding-top: 2em;
43-
}
44-
4533
.oc-clear {
4634
clear: both;
4735
}
@@ -62,27 +50,32 @@
6250
z-index: 100;
6351
}
6452

53+
54+
/* Actually only stick the header on desktop */
6555
@media (min-width: 768px) {
6656
.oc-sticky-header {
6757
position: sticky;
6858
}
6959

70-
.oc-mobile-only {
71-
display: none;
72-
}
7360
}
7461

75-
@media (max-width: 767px) {
76-
.oc-desktop-only {
77-
display: none;
62+
/* Push the summary bar to the right side on desktop and make it stick */
63+
@media (min-width: 768px) {
64+
#oc-collectivity-main>article {
65+
order: 1;
7866
}
79-
}
8067

81-
.oc-sticky-block {
82-
position: sticky;
83-
top: 20px;
68+
#oc-collectivity-main>aside {
69+
order: 2;
70+
}
71+
72+
#oc-collectivity-main>aside nav {
73+
position: sticky;
74+
top: 20px;
75+
}
8476
}
8577

78+
8679
.oc-tile-row>.fr-tile {
8780
margin-bottom: 2em;
8881
}
@@ -128,12 +121,24 @@
128121
}
129122

130123
/* When using svg icons instead of images in the tiles */
131-
.oc-svg-icon {
124+
.oc-svg-icon,
125+
.oc-svg-icons img {
132126
width: 100%;
133127
}
134128

135129
/* Set the color of svg icons in dark mode */
136-
137-
:root[data-fr-theme="dark"i] .oc-svg-icon {
130+
:root[data-fr-theme="dark"i] .oc-svg-icon,
131+
:root[data-fr-theme="dark"i] .oc-svg-icons img {
138132
filter: brightness(0) saturate(100%) invert(61%) sepia(11%) saturate(2548%) hue-rotate(202deg) brightness(103%) contrast(102%);
133+
}
134+
135+
.oc-privacy-icon {
136+
margin-left: 2rem;
137+
color: var(--g500);
138+
}
139+
140+
.oc-heading-with-sidelink {
141+
display: flex;
142+
justify-content: space-between;
143+
align-items: baseline;
139144
}
-1.63 KB
Binary file not shown.

core/static/img/placeholder.jpg

-5.51 KB
Binary file not shown.

core/templates/core/404.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{% load static %}
33

44
{% block content %}
5-
<div class="fr-container oc-padding-top-2em oc-padding-bottom-3em">
5+
<div class="fr-container fr-mt-4w fr-mb-6w">
66
<div class="fr-grid-row fr-grid-row--gutters ">
77
<div class="fr-col-12 fr-col-md-6">
88
<h1>La page recherchée n’existe plus</h1>

core/templates/core/500.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{% load static %}
33

44
{% block content %}
5-
<div class="fr-container oc-padding-top-2em oc-padding-bottom-3em">
5+
<div class="fr-container fr-mt-4w fr-mb-6w">
66
<div class="fr-grid-row fr-grid-row--gutters ">
77
<div class="fr-col-12 fr-col-md-6">
88
<h1>Page actuellement indisponible</h1>

core/templates/core/50x.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
{% load static %}
33

44
{% block content %}
5-
<div class="fr-container oc-padding-top-2em oc-padding-bottom-3em">
5+
<div class="fr-container fr-mt-4w fr-mb-6w">
66
<div class="fr-grid-row fr-grid-row--gutters ">
77
<div class="fr-col-12 fr-col-md-6">
88
<h1>Le site est actuellement inaccessible</h1>

0 commit comments

Comments
 (0)