- ProjetNode: body Markdown->HTML (strip HTML brut), images + légendes lues
depuis public://drive_shared_leshed/Page{UID}
- ImageResizeImport: nouveau process plugin, redimensionne les images en web HD
(max 1920px) et crée le fichier managé (idempotent)
- field_images: caption via image_field_caption, alt depuis les légendes
- PersonneGenerate: nom dans field_nom (titre auto-généré via auto_entitylabel),
dédup sur field_nom + field_prenom
- title: skip_on_empty (ligne ignorée si "Nom du projet" vide)
- CER: relation curateur sur field_projets_curates (distinct de field_projet_s_lie_s)
- deps: + league/commonmark, image_field_caption, auto_entitylabel ; - migrate_file
143 lines
3.2 KiB
YAML
143 lines
3.2 KiB
YAML
uuid: a3812d6e-7a67-4110-bb47-d1062709f806
|
|
langcode: fr
|
|
status: true
|
|
dependencies:
|
|
- migrate_google_sheets
|
|
- migrate_plus
|
|
id: projet_node
|
|
class: null
|
|
field_plugin_method: null
|
|
cck_plugin_method: null
|
|
migration_tags: null
|
|
migration_group: le_shed
|
|
label: 'Import des projets depuis Google Sheets'
|
|
source:
|
|
plugin: projet_node
|
|
data_fetcher_plugin: http
|
|
data_parser_plugin: google_sheets
|
|
constants:
|
|
images_destination: 'public://projets/'
|
|
urls: 'https://sheets.googleapis.com/v4/spreadsheets/1561Gv1C-IlCTmg64Z8HnznvOeLbvwhA_k1l6aq95zFA/values/Projets'
|
|
fields:
|
|
-
|
|
name: id
|
|
label: 'Unique identifier'
|
|
selector: UID
|
|
-
|
|
name: title
|
|
label: Title
|
|
selector: 'Nom du projet'
|
|
-
|
|
name: date_start
|
|
label: 'Date start'
|
|
selector: 'Date de début de projet'
|
|
-
|
|
name: date_end
|
|
label: 'Date end'
|
|
selector: 'Date de fin de projet'
|
|
-
|
|
name: projet_type
|
|
label: 'Type de projet'
|
|
selector: 'Type de projet'
|
|
-
|
|
name: curator
|
|
label: Commissaria
|
|
selector: 'invité/accompagné/curaté par'
|
|
-
|
|
name: artistes
|
|
label: 'Artistes invité·es'
|
|
selector: 'Artistes invité·es'
|
|
-
|
|
name: partners
|
|
label: 'Partenaires associés'
|
|
selector: 'Partenaires associés'
|
|
ids:
|
|
id:
|
|
type: integer
|
|
process:
|
|
type:
|
|
plugin: default_value
|
|
default_value: projet
|
|
title:
|
|
plugin: skip_on_empty
|
|
method: row
|
|
source: title
|
|
message: 'Projet ignoré : « Nom du projet » vide.'
|
|
body/value: body_html
|
|
body/format:
|
|
plugin: default_value
|
|
default_value: wysiwyg
|
|
field_images:
|
|
plugin: sub_process
|
|
source: images
|
|
process:
|
|
target_id:
|
|
plugin: image_resize_import
|
|
source: uri
|
|
destination: destination
|
|
max_width: 1920
|
|
max_height: 1920
|
|
reuse: true
|
|
skip_on_missing_source: true
|
|
alt: alt
|
|
image_field_caption/value: caption
|
|
image_field_caption/format:
|
|
plugin: default_value
|
|
default_value: wysiwyg
|
|
field_dates/value:
|
|
plugin: leshed_date
|
|
source: date_start
|
|
field_dates/end_value:
|
|
plugin: leshed_date
|
|
source: date_end
|
|
end_of_year: true
|
|
fallback_source: date_start
|
|
field_type_de_projet:
|
|
-
|
|
plugin: skip_on_empty
|
|
method: process
|
|
source: projet_type
|
|
-
|
|
plugin: explode
|
|
delimiter: ','
|
|
-
|
|
plugin: callback
|
|
callable: trim
|
|
-
|
|
plugin: entity_generate
|
|
entity_type: taxonomy_term
|
|
bundle_key: vid
|
|
bundle: type_de_projet
|
|
value_key: name
|
|
field_invite_accompagne_curate_p:
|
|
-
|
|
plugin: skip_on_empty
|
|
method: process
|
|
source: curator
|
|
-
|
|
plugin: personne_generate
|
|
type_de_personne: curateur
|
|
field_artiste_s_invite_s:
|
|
-
|
|
plugin: skip_on_empty
|
|
method: process
|
|
source: artistes
|
|
-
|
|
plugin: personne_generate
|
|
type_de_personne: artiste
|
|
field_partenaire_s:
|
|
-
|
|
plugin: skip_on_empty
|
|
method: process
|
|
source: partners
|
|
-
|
|
plugin: partenaire_generate
|
|
uid:
|
|
plugin: default_value
|
|
default_value: 3
|
|
destination:
|
|
plugin: 'entity:node'
|
|
idMap: { }
|
|
migration_dependencies: { }
|
|
include: null
|