# Application Core

Configuration site, carousel, statistiques, partenaires et pages legales.

## Modeles

| Modele | Description |
|--------|-------------|
| `CarouselSlide` | Slides du carousel hero |
| `Statistic` | Statistiques affichees sur le site |
| `Partner` | Partenaires (logos, liens) |
| `LegalPage` | Pages legales (RGPD, EACEA) |

## Pages Legales et Conformite RGPD

### Modele LegalPage

Le modele `LegalPage` gere les pages legales requises par l'EACEA et le RGPD.

### Types de pages disponibles

| Type | Description |
|------|-------------|
| `privacy` | Politique de confidentialite |
| `eacea_disclaimer` | Disclaimer EACEA (donnees personnelles) |
| `fraud_warning` | Avertissement fraude |
| `terms` | Conditions d'utilisation |
| `cookies` | Politique des cookies |
| `accessibility` | Accessibilite |

### Champs du modele

| Champ | Description |
|-------|-------------|
| `type` | Type de page (unique) |
| `title` | Titre de la page |
| `slug` | Slug URL (auto-genere) |
| `content` | Contenu HTML |
| `summary` | Resume pour popup/modal |
| `show_in_footer` | Afficher dans le footer |
| `show_in_modal` | Disponible en popup |
| `meta_title` | Titre meta SEO |
| `meta_description` | Description meta SEO |

### Utilisation

```python
from apps.core.models import LegalPage

# Recuperer une page par type
privacy = LegalPage.get_by_type('privacy')
fraud = LegalPage.get_fraud_warning()
eacea = LegalPage.get_eacea_disclaimer()

# Pages actives pour le footer
footer_pages = LegalPage.get_footer_pages()
```

```django
{# Dans les templates - disponible via context processor #}
{% for page in legal_pages %}
    <a href="{% url 'core:legal_page' slug=page.slug %}">{{ page.title }}</a>
{% endfor %}
```

## Context Processors

Le fichier `apps/core/context_processors.py` fournit les donnees globales:

| Variable | Description |
|----------|-------------|
| `settings` | Proxy vers les Settings CMS |
| `social_links` | Liens reseaux sociaux |
| `legal_pages` | Pages legales pour le footer |

## CMSPageMixin

Pour les pages avec un slug CMS fixe:

```python
from apps.core.views import CMSPageMixin

class MyView(CMSPageMixin, TemplateView):
    template_name = 'fallback.html'
    cms_page_slug = 'my-page'
```

## CMSObjectMixin

Pour les vues detail avec page CMS:

```python
from apps.core.views import CMSObjectMixin
from django.views.generic import DetailView

class MyDetailView(CMSObjectMixin, DetailView):
    model = MyModel
    template_name = 'fallback.html'
    cms_auto_create_page = False
    cms_default_template_slug = 'master'
```

## Commandes

```bash
# Seeder les pages legales (RGPD, EACEA)
python manage.py seed_legal_pages
python manage.py seed_legal_pages --with-translations
python manage.py seed_legal_pages --force
```

## Sections CMS

| Fichier | Description | Variables |
|---------|-------------|-----------|
| `hero.html` / `slider.html` / `alaune.html` | Carousel hero | `sliders`, `carousel_slides` |
| `stat.html` / `statistics.html` | Statistiques | `program_stats` |
| `partenaire.html` | Partenaires | `partners`, `main_partner` |

## Fixtures

```bash
python manage.py dumpdata core --natural-foreign --natural-primary --indent 2 -o fixtures/05_core.json
python manage.py loaddata fixtures/05_core.json
```
