You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »

Per poter effettuare una migrazione di dati organizzati come in questo esempio che si tratti di un CT Bandi dal d7 di uniss al nuovo d9 di uniss, abbiamo bisogno di trovare un modo sia su come esporre questi dati lato d7 (anche come strutturarli etc) sia come riceverli lato d9.

Esposizione dei dati lato d7

Abbiamo deciso di esporre un service REST utilizzando views dal sito di uniss per migrare i bandi al nuovo sito unissd9

Per lo scopo bisogna abilitare i moduli :

Attivazione moduli
drush en services
drush en rest_server
drush en services_views

Abbiamo creato due viste che espongono dei services,

bandi_rest_api:

  • lista dei bandi
  • totale dei bandi (da il numero totale dei bandi)
  • lista dei File nei paragrafi nei bandi
  • totale dei File nei paragrafi nei bandi

bandi_rest_terms:

  • lista dei termini di tassonomia usati nei bandi
  • totale dei termini di tassonomia usati nei bandi

Questi services generano un Rest che verrà consumato dalla migrare in unissd9. Tutti i services se interrogati mostrano soltanto 5 risultati, al netto di quelle con i totali e i risultati sono filtrati su data di scadenza maggiore di 5 anni fa.

Di seguito la configurazione di services, views, e la lista degli url generati

Services configuration
$endpoint = new stdClass();
$endpoint->disabled = FALSE; /* Edit this to true to make a default endpoint disabled initially */
$endpoint->api_version = 3;
$endpoint->name = 'bandoapi';
$endpoint->server = 'rest_server';
$endpoint->path = 'api/v1';
$endpoint->authentication = array();
$endpoint->server_settings = array(
  'formatters' => array(
    'json' => TRUE,
    'bencode' => FALSE,
    'jsonp' => FALSE,
    'php' => FALSE,
    'xml' => FALSE,
  ),
  'parsers' => array(
    'application/json' => TRUE,
    'application/vnd.php.serialized' => FALSE,
    'application/x-www-form-urlencoded' => FALSE,
    'application/xml' => FALSE,
    'multipart/form-data' => FALSE,
    'text/xml' => FALSE,
  ),
);
$endpoint->resources = array(
  'bandi-file-bando-counter' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'bandi-file-bando-list' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'bandi-list' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'bandi-paragraph-files-counter' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'bandi-paragraph-files-list' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'count-bandi' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'file' => array(
    'operations' => array(
      'retrieve' => array(
        'enabled' => '1',
      ),
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'node' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'system' => array(
    'actions' => array(
      'connect' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'tax-terms' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'tax-terms-counter' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'taxonomy_term' => array(
    'operations' => array(
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'taxonomy_vocabulary' => array(
    'operations' => array(
      'retrieve' => array(
        'enabled' => '1',
      ),
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'user' => array(
    'operations' => array(
      'retrieve' => array(
        'enabled' => '1',
      ),
      'index' => array(
        'enabled' => '1',
      ),
    ),
  ),
  'views' => array(
    'operations' => array(
      'retrieve' => array(
        'enabled' => '1',
      ),
    ),
  ),
);
$endpoint->debug = 0;
     
views configuration
$view = new view();
$view->name = 'bandi_rest_api';
$view->description = 'Esposizione dei bandi degli ultimi 5 anni in rest per migrazione in Drupal 9';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Bandi rest api';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Bandi rest api';
$handler->display->display_options['use_ajax'] = TRUE;
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'none';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Ripristina';
$handler->display->display_options['exposed_form']['options']['autosubmit'] = TRUE;
$handler->display->display_options['pager']['type'] = 'some';
$handler->display->display_options['pager']['options']['items_per_page'] = '5';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
  'title' => 'title',
  'field_data_pubblicazione' => 'field_data_pubblicazione',
);
$handler->display->display_options['row_options']['default_field_elements'] = FALSE;
/* Relationship: Contenuto: File del bando (field_file_del_bando:fid) */
$handler->display->display_options['relationships']['field_file_del_bando_fid']['id'] = 'field_file_del_bando_fid';
$handler->display->display_options['relationships']['field_file_del_bando_fid']['table'] = 'field_data_field_file_del_bando';
$handler->display->display_options['relationships']['field_file_del_bando_fid']['field'] = 'field_file_del_bando_fid';
/* Campo: Contenuto: Data pubblicazione */
$handler->display->display_options['fields']['field_data_pubblicazione']['id'] = 'field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['table'] = 'field_data_field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['field'] = 'field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['label'] = 'pubblication_date';
$handler->display->display_options['fields']['field_data_pubblicazione']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['type'] = 'date_plain';
$handler->display->display_options['fields']['field_data_pubblicazione']['settings'] = array(
  'format_type' => 'long',
  'fromto' => '',
  'multiple_number' => '',
  'multiple_from' => '',
  'multiple_to' => '',
);
/* Campo: Contenuto: Titolo */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = 'titolo';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['title']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['title']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['title']['link_to_node'] = FALSE;
/* Campo: Contenuto: Data scadenza */
$handler->display->display_options['fields']['field_data_scadenza']['id'] = 'field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['table'] = 'field_data_field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['field'] = 'field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['label'] = 'end_publication_date';
$handler->display->display_options['fields']['field_data_scadenza']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_data_scadenza']['settings'] = array(
  'format_type' => 'long',
  'fromto' => 'both',
  'multiple_number' => '',
  'multiple_from' => '',
  'multiple_to' => '',
  'show_repeat_rule' => 'show',
);
/* Campo: Contenuto: Orario */
$handler->display->display_options['fields']['field_orario']['id'] = 'field_orario';
$handler->display->display_options['fields']['field_orario']['table'] = 'field_data_field_orario';
$handler->display->display_options['fields']['field_orario']['field'] = 'field_orario';
$handler->display->display_options['fields']['field_orario']['element_label_colon'] = FALSE;
/* Campo: Contenuto: Bando espletato? */
$handler->display->display_options['fields']['field_bando_archiviato']['id'] = 'field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['table'] = 'field_data_field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['field'] = 'field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['label'] = 'Bando_espletato';
$handler->display->display_options['fields']['field_bando_archiviato']['alter']['text'] = 'if ([field_bando_archiviato-value]  == 1) \'\'';
$handler->display->display_options['fields']['field_bando_archiviato']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_bando_archiviato']['type'] = 'list_key';
/* Campo: Contenuto: Body */
$handler->display->display_options['fields']['body']['id'] = 'body';
$handler->display->display_options['fields']['body']['table'] = 'field_data_body';
$handler->display->display_options['fields']['body']['field'] = 'body';
$handler->display->display_options['fields']['body']['label'] = 'descrizione';
$handler->display->display_options['fields']['body']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['body']['element_default_classes'] = FALSE;
/* Campo: Contenuto: Pubblicato */
$handler->display->display_options['fields']['status']['id'] = 'status';
$handler->display->display_options['fields']['status']['table'] = 'node';
$handler->display->display_options['fields']['status']['field'] = 'status';
$handler->display->display_options['fields']['status']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['status']['not'] = 0;
/* Campo: Contenuto: Percorso */
$handler->display->display_options['fields']['path_1']['id'] = 'path_1';
$handler->display->display_options['fields']['path_1']['table'] = 'node';
$handler->display->display_options['fields']['path_1']['field'] = 'path';
$handler->display->display_options['fields']['path_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['path_1']['element_default_classes'] = FALSE;
/* Campo: File: ID file */
$handler->display->display_options['fields']['fid']['id'] = 'fid';
$handler->display->display_options['fields']['fid']['table'] = 'file_managed';
$handler->display->display_options['fields']['fid']['field'] = 'fid';
/* Campo: File: Nome */
$handler->display->display_options['fields']['filename']['id'] = 'filename';
$handler->display->display_options['fields']['filename']['table'] = 'file_managed';
$handler->display->display_options['fields']['filename']['field'] = 'filename';
/* Campo: File: Percorso */
$handler->display->display_options['fields']['uri']['id'] = 'uri';
$handler->display->display_options['fields']['uri']['table'] = 'file_managed';
$handler->display->display_options['fields']['uri']['field'] = 'uri';
/* Campo: File: Etichetta file */
$handler->display->display_options['fields']['field_etichetta_file']['id'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['table'] = 'field_data_field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['field'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['relationship'] = 'field_file_del_bando_fid';
$handler->display->display_options['fields']['field_etichetta_file']['element_label_colon'] = FALSE;
/* Campo: Global: Visualizza */
$handler->display->display_options['fields']['view']['id'] = 'view';
$handler->display->display_options['fields']['view']['table'] = 'views';
$handler->display->display_options['fields']['view']['field'] = 'view';
/* Filter criterion: Contenuto: Tipo */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
  'bando' => 'bando',
);
/* Filter criterion: Contenuto: Data scadenza (field_data_scadenza) */
$handler->display->display_options['filters']['field_data_scadenza_value']['id'] = 'field_data_scadenza_value';
$handler->display->display_options['filters']['field_data_scadenza_value']['table'] = 'field_data_field_data_scadenza';
$handler->display->display_options['filters']['field_data_scadenza_value']['field'] = 'field_data_scadenza_value';
$handler->display->display_options['filters']['field_data_scadenza_value']['operator'] = '>';
$handler->display->display_options['filters']['field_data_scadenza_value']['default_date'] = 'now -5 year';

/* Display: Bandi */
$handler = $view->new_display('services', 'Bandi', 'bandi');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'views_json';
$handler->display->display_options['style_options']['root_object'] = 'Bandi';
$handler->display->display_options['style_options']['top_child_object'] = 'Bando';
$handler->display->display_options['style_options']['plaintext_output'] = 1;
$handler->display->display_options['style_options']['remove_newlines'] = 0;
$handler->display->display_options['style_options']['jsonp_prefix'] = '';
$handler->display->display_options['style_options']['using_views_api_mode'] = 1;
$handler->display->display_options['style_options']['translate_labels'] = 0;
$handler->display->display_options['style_options']['object_arrays'] = 0;
$handler->display->display_options['style_options']['numeric_strings'] = 0;
$handler->display->display_options['style_options']['bigint_string'] = 0;
$handler->display->display_options['style_options']['pretty_print'] = 0;
$handler->display->display_options['style_options']['unescaped_slashes'] = 1;
$handler->display->display_options['style_options']['unescaped_unicode'] = 1;
$handler->display->display_options['style_options']['char_encoding'] = array();
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['relationships'] = FALSE;
/* Relationship: Contenuto: File del bando (field_file_del_bando:fid) */
$handler->display->display_options['relationships']['field_file_del_bando_fid']['id'] = 'field_file_del_bando_fid';
$handler->display->display_options['relationships']['field_file_del_bando_fid']['table'] = 'field_data_field_file_del_bando';
$handler->display->display_options['relationships']['field_file_del_bando_fid']['field'] = 'field_file_del_bando_fid';
/* Relationship: Contenuto: Taxonomy terms on node */
$handler->display->display_options['relationships']['term_node_tid']['id'] = 'term_node_tid';
$handler->display->display_options['relationships']['term_node_tid']['table'] = 'node';
$handler->display->display_options['relationships']['term_node_tid']['field'] = 'term_node_tid';
$handler->display->display_options['relationships']['term_node_tid']['vocabularies'] = array(
  'categoria_bando' => 'categoria_bando',
  'bandi_per_docenti_e_ricercatori' => 'bandi_per_docenti_e_ricercatori',
  'bandi_per_personale_tecnico_amministrativo' => 'bandi_per_personale_tecnico_amministrativo',
  'bandi_per_studenti' => 'bandi_per_studenti',
  'bandi_di_gara' => 'bandi_di_gara',
  'altri_bandi' => 'altri_bandi',
  'base_area' => 0,
  'area_corsi' => 0,
  'pagina_di_target' => 0,
  'categoria_documentazione' => 0,
  'campus_sardegna' => 0,
  'categoria_evento' => 0,
  'docenti' => 0,
  'personale' => 0,
  'sba_biblioteche' => 0,
  'studenti' => 0,
  'media_folders' => 0,
  'offerta_formativa_scuole' => 0,
);
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Campo: Contenuto: Titolo */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = 'titolo';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['title']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['title']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['title']['link_to_node'] = FALSE;
/* Campo: Contenuto: Dipartimento bando */
$handler->display->display_options['fields']['field_dipartimento_bando']['id'] = 'field_dipartimento_bando';
$handler->display->display_options['fields']['field_dipartimento_bando']['table'] = 'field_data_field_dipartimento_bando';
$handler->display->display_options['fields']['field_dipartimento_bando']['field'] = 'field_dipartimento_bando';
$handler->display->display_options['fields']['field_dipartimento_bando']['label'] = 'dipartimento_bando';
$handler->display->display_options['fields']['field_dipartimento_bando']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_dipartimento_bando']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_dipartimento_bando']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['field_dipartimento_bando']['type'] = 'list_key';
$handler->display->display_options['fields']['field_dipartimento_bando']['delta_offset'] = '0';
/* Campo: Contenuto: Body */
$handler->display->display_options['fields']['body']['id'] = 'body';
$handler->display->display_options['fields']['body']['table'] = 'field_data_body';
$handler->display->display_options['fields']['body']['field'] = 'body';
$handler->display->display_options['fields']['body']['label'] = 'descrizione';
$handler->display->display_options['fields']['body']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['body']['element_default_classes'] = FALSE;
/* Campo: Contenuto: Data pubblicazione */
$handler->display->display_options['fields']['field_data_pubblicazione']['id'] = 'field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['table'] = 'field_data_field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['field'] = 'field_data_pubblicazione';
$handler->display->display_options['fields']['field_data_pubblicazione']['label'] = 'pubblication_date';
$handler->display->display_options['fields']['field_data_pubblicazione']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['field_data_pubblicazione']['type'] = 'date_plain';
$handler->display->display_options['fields']['field_data_pubblicazione']['settings'] = array(
  'format_type' => 'services',
  'fromto' => '',
  'multiple_number' => '',
  'multiple_from' => '',
  'multiple_to' => '',
);
/* Campo: Contenuto: Data scadenza */
$handler->display->display_options['fields']['field_data_scadenza']['id'] = 'field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['table'] = 'field_data_field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['field'] = 'field_data_scadenza';
$handler->display->display_options['fields']['field_data_scadenza']['label'] = 'end_publication_date';
$handler->display->display_options['fields']['field_data_scadenza']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_data_scadenza']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_data_scadenza']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['field_data_scadenza']['type'] = 'date_plain';
$handler->display->display_options['fields']['field_data_scadenza']['settings'] = array(
  'format_type' => 'services',
  'fromto' => 'both',
  'multiple_number' => '',
  'multiple_from' => '',
  'multiple_to' => '',
);
/* Campo: Contenuto: Orario */
$handler->display->display_options['fields']['field_orario']['id'] = 'field_orario';
$handler->display->display_options['fields']['field_orario']['table'] = 'field_data_field_orario';
$handler->display->display_options['fields']['field_orario']['field'] = 'field_orario';
$handler->display->display_options['fields']['field_orario']['element_label_colon'] = FALSE;
/* Campo: Contenuto: Bando espletato? */
$handler->display->display_options['fields']['field_bando_archiviato']['id'] = 'field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['table'] = 'field_data_field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['field'] = 'field_bando_archiviato';
$handler->display->display_options['fields']['field_bando_archiviato']['label'] = 'Bando_espletato';
$handler->display->display_options['fields']['field_bando_archiviato']['alter']['text'] = 'if ([field_bando_archiviato-value]  == 1) \'\'';
$handler->display->display_options['fields']['field_bando_archiviato']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_bando_archiviato']['type'] = 'list_key';
/* Campo: Contenuto: Pubblicato */
$handler->display->display_options['fields']['status']['id'] = 'status';
$handler->display->display_options['fields']['status']['table'] = 'node';
$handler->display->display_options['fields']['status']['field'] = 'status';
$handler->display->display_options['fields']['status']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['status']['not'] = 0;
/* Campo: Contenuto: Percorso */
$handler->display->display_options['fields']['path_1']['id'] = 'path_1';
$handler->display->display_options['fields']['path_1']['table'] = 'node';
$handler->display->display_options['fields']['path_1']['field'] = 'path';
$handler->display->display_options['fields']['path_1']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['path_1']['element_default_classes'] = FALSE;
/* Campo: Contenuto: Categoria Bando */
$handler->display->display_options['fields']['field_tr_bando_per_target']['id'] = 'field_tr_bando_per_target';
$handler->display->display_options['fields']['field_tr_bando_per_target']['table'] = 'field_data_field_tr_bando_per_target';
$handler->display->display_options['fields']['field_tr_bando_per_target']['field'] = 'field_tr_bando_per_target';
$handler->display->display_options['fields']['field_tr_bando_per_target']['label'] = 'tax_categoria_bando_term';
$handler->display->display_options['fields']['field_tr_bando_per_target']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_bando_per_target']['alter']['text'] = '[field_tr_bando_per_target-tid]';
$handler->display->display_options['fields']['field_tr_bando_per_target']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_tr_bando_per_target']['type'] = 'taxonomy_term_reference_plain';
/* Campo: Contenuto: Bandi per docenti e ricercatori */
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['id'] = 'field_tr_bandi_per_docenti';
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['table'] = 'field_data_field_tr_bandi_per_docenti';
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['field'] = 'field_tr_bandi_per_docenti';
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['label'] = 'tax_doc_e_ricerc_term';
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['alter']['text'] = '[field_tr_bandi_per_docenti-tid]';
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_tr_bandi_per_docenti']['type'] = 'taxonomy_term_reference_plain';
/* Campo: Contenuto: Bandi per personale tecnico amministrativo */
$handler->display->display_options['fields']['field_tr_bandi_personale']['id'] = 'field_tr_bandi_personale';
$handler->display->display_options['fields']['field_tr_bandi_personale']['table'] = 'field_data_field_tr_bandi_personale';
$handler->display->display_options['fields']['field_tr_bandi_personale']['field'] = 'field_tr_bandi_personale';
$handler->display->display_options['fields']['field_tr_bandi_personale']['label'] = 'tax_bandi_pta_term';
$handler->display->display_options['fields']['field_tr_bandi_personale']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_bandi_personale']['alter']['text'] = '[field_tr_bandi_personale-tid]';
$handler->display->display_options['fields']['field_tr_bandi_personale']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_tr_bandi_personale']['type'] = 'taxonomy_term_reference_plain';
/* Campo: Contenuto: Bandi di gara */
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['id'] = 'field_tr_bandi_di_gara';
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['table'] = 'field_data_field_tr_bandi_di_gara';
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['field'] = 'field_tr_bandi_di_gara';
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['label'] = 'tax_bandi_di_gara_term';
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['alter']['text'] = '[field_tr_bandi_di_gara-tid]';
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_tr_bandi_di_gara']['type'] = 'taxonomy_term_reference_plain';
/* Campo: Contenuto: Bandi per studenti */
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['id'] = 'field_tr_bandi_per_studenti';
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['table'] = 'field_data_field_tr_bandi_per_studenti';
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['field'] = 'field_tr_bandi_per_studenti';
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['label'] = 'tax_bandi_per_studenti_term';
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['alter']['text'] = '[field_tr_bandi_per_studenti-tid]';
$handler->display->display_options['fields']['field_tr_bandi_per_studenti']['type'] = 'taxonomy_term_reference_plain';
/* Campo: Contenuto: Altri bandi */
$handler->display->display_options['fields']['field_tr_altri_bandi']['id'] = 'field_tr_altri_bandi';
$handler->display->display_options['fields']['field_tr_altri_bandi']['table'] = 'field_data_field_tr_altri_bandi';
$handler->display->display_options['fields']['field_tr_altri_bandi']['field'] = 'field_tr_altri_bandi';
$handler->display->display_options['fields']['field_tr_altri_bandi']['label'] = 'tax_altri_bandi_term';
$handler->display->display_options['fields']['field_tr_altri_bandi']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['field_tr_altri_bandi']['alter']['text'] = '[field_tr_altri_bandi-tid]';
$handler->display->display_options['fields']['field_tr_altri_bandi']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_tr_altri_bandi']['type'] = 'taxonomy_term_reference_plain';
/* Campo: File: ID file */
$handler->display->display_options['fields']['fid']['id'] = 'fid';
$handler->display->display_options['fields']['fid']['table'] = 'file_managed';
$handler->display->display_options['fields']['fid']['field'] = 'fid';
$handler->display->display_options['fields']['fid']['relationship'] = 'field_file_del_bando_fid';
$handler->display->display_options['fields']['fid']['label'] = 'file_id';
$handler->display->display_options['fields']['fid']['element_label_colon'] = FALSE;
/* Campo: File: Nome */
$handler->display->display_options['fields']['filename']['id'] = 'filename';
$handler->display->display_options['fields']['filename']['table'] = 'file_managed';
$handler->display->display_options['fields']['filename']['field'] = 'filename';
$handler->display->display_options['fields']['filename']['relationship'] = 'field_file_del_bando_fid';
$handler->display->display_options['fields']['filename']['label'] = 'fileName';
$handler->display->display_options['fields']['filename']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['filename']['link_to_file'] = FALSE;
/* Campo: File: Percorso */
$handler->display->display_options['fields']['uri']['id'] = 'uri';
$handler->display->display_options['fields']['uri']['table'] = 'file_managed';
$handler->display->display_options['fields']['uri']['field'] = 'uri';
$handler->display->display_options['fields']['uri']['relationship'] = 'field_file_del_bando_fid';
$handler->display->display_options['fields']['uri']['label'] = 'filePath';
$handler->display->display_options['fields']['uri']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['uri']['file_download_path'] = TRUE;
/* Campo: File: Etichetta file */
$handler->display->display_options['fields']['field_etichetta_file']['id'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['table'] = 'field_data_field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['field'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['relationship'] = 'field_file_del_bando_fid';
$handler->display->display_options['fields']['field_etichetta_file']['label'] = 'fileLabel';
$handler->display->display_options['fields']['field_etichetta_file']['element_label_colon'] = FALSE;
/* Campo: Contenuto: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
/* Campo: Campo: Elenco dei paragrafi */
$handler->display->display_options['fields']['field_paragrafi']['id'] = 'field_paragrafi';
$handler->display->display_options['fields']['field_paragrafi']['table'] = 'field_data_field_paragrafi';
$handler->display->display_options['fields']['field_paragrafi']['field'] = 'field_paragrafi';
$handler->display->display_options['fields']['field_paragrafi']['label'] = 'paragrph';
$handler->display->display_options['fields']['field_paragrafi']['alter']['trim_whitespace'] = TRUE;
$handler->display->display_options['fields']['field_paragrafi']['alter']['nl2br'] = TRUE;
$handler->display->display_options['fields']['field_paragrafi']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['field_paragrafi']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['field_paragrafi']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['field_paragrafi']['settings'] = array(
  'view_mode' => 'full',
);
$handler->display->display_options['fields']['field_paragrafi']['delta_offset'] = '0';
$handler->display->display_options['fields']['field_paragrafi']['multi_type'] = 'ul';
$handler->display->display_options['path'] = 'bandi-list';

/* Display: BandiCounter */
$handler = $view->new_display('services', 'BandiCounter', 'count_bandi');
$handler->display->display_options['defaults']['group_by'] = FALSE;
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['relationships'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Campo: Contenuto: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['group_type'] = 'count_distinct';
$handler->display->display_options['fields']['nid']['label'] = 'total';
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['nid']['element_default_classes'] = FALSE;
$handler->display->display_options['fields']['nid']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['nid']['separator'] = '';
$handler->display->display_options['path'] = 'count-bandi';

/* Display: BandiParagraphFiles */
$handler = $view->new_display('services', 'BandiParagraphFiles', 'paragraph_files');
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['style_options']['default_row_class'] = FALSE;
$handler->display->display_options['style_options']['row_class_special'] = FALSE;
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
  'title' => 'title',
  'field_data_pubblicazione' => 'field_data_pubblicazione',
);
$handler->display->display_options['row_options']['default_field_elements'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['relationships'] = FALSE;
/* Relationship: Campo: Elenco dei paragrafi (field_paragrafi) */
$handler->display->display_options['relationships']['field_paragrafi_value']['id'] = 'field_paragrafi_value';
$handler->display->display_options['relationships']['field_paragrafi_value']['table'] = 'field_data_field_paragrafi';
$handler->display->display_options['relationships']['field_paragrafi_value']['field'] = 'field_paragrafi_value';
$handler->display->display_options['relationships']['field_paragrafi_value']['delta'] = '-1';
/* Relationship: Campo: Manifesto degli studi (field_documento:fid) */
$handler->display->display_options['relationships']['field_documento_fid']['id'] = 'field_documento_fid';
$handler->display->display_options['relationships']['field_documento_fid']['table'] = 'field_data_field_documento';
$handler->display->display_options['relationships']['field_documento_fid']['field'] = 'field_documento_fid';
$handler->display->display_options['relationships']['field_documento_fid']['relationship'] = 'field_paragrafi_value';
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Campo: Contenuto: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['label'] = '';
$handler->display->display_options['fields']['nid']['exclude'] = TRUE;
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
/* Campo: File: ID file */
$handler->display->display_options['fields']['fid']['id'] = 'fid';
$handler->display->display_options['fields']['fid']['table'] = 'file_managed';
$handler->display->display_options['fields']['fid']['field'] = 'fid';
$handler->display->display_options['fields']['fid']['relationship'] = 'field_documento_fid';
$handler->display->display_options['fields']['fid']['label'] = 'fileID';
$handler->display->display_options['fields']['fid']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['fid']['alter']['text'] = '[nid]_[fid]';
$handler->display->display_options['fields']['fid']['element_label_colon'] = FALSE;
/* Campo: File: Etichetta file */
$handler->display->display_options['fields']['field_etichetta_file']['id'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['table'] = 'field_data_field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['field'] = 'field_etichetta_file';
$handler->display->display_options['fields']['field_etichetta_file']['relationship'] = 'field_documento_fid';
$handler->display->display_options['fields']['field_etichetta_file']['label'] = 'fileLabel';
/* Campo: File: Nome */
$handler->display->display_options['fields']['filename']['id'] = 'filename';
$handler->display->display_options['fields']['filename']['table'] = 'file_managed';
$handler->display->display_options['fields']['filename']['field'] = 'filename';
$handler->display->display_options['fields']['filename']['relationship'] = 'field_documento_fid';
$handler->display->display_options['fields']['filename']['label'] = 'filename';
$handler->display->display_options['fields']['filename']['link_to_file'] = FALSE;
/* Campo: File: Percorso */
$handler->display->display_options['fields']['uri']['id'] = 'uri';
$handler->display->display_options['fields']['uri']['table'] = 'file_managed';
$handler->display->display_options['fields']['uri']['field'] = 'uri';
$handler->display->display_options['fields']['uri']['relationship'] = 'field_documento_fid';
$handler->display->display_options['fields']['uri']['label'] = 'filePath';
$handler->display->display_options['defaults']['filter_groups'] = FALSE;
$handler->display->display_options['defaults']['filters'] = FALSE;
/* Filter criterion: Contenuto: Tipo */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
  'bando' => 'bando',
);
/* Filter criterion: Contenuto: Data scadenza (field_data_scadenza) */
$handler->display->display_options['filters']['field_data_scadenza_value']['id'] = 'field_data_scadenza_value';
$handler->display->display_options['filters']['field_data_scadenza_value']['table'] = 'field_data_field_data_scadenza';
$handler->display->display_options['filters']['field_data_scadenza_value']['field'] = 'field_data_scadenza_value';
$handler->display->display_options['filters']['field_data_scadenza_value']['operator'] = '>';
$handler->display->display_options['filters']['field_data_scadenza_value']['default_date'] = 'now -5 year';
/* Filter criterion: File: ID file */
$handler->display->display_options['filters']['fid']['id'] = 'fid';
$handler->display->display_options['filters']['fid']['table'] = 'file_managed';
$handler->display->display_options['filters']['fid']['field'] = 'fid';
$handler->display->display_options['filters']['fid']['relationship'] = 'field_documento_fid';
$handler->display->display_options['filters']['fid']['operator'] = 'not empty';
$handler->display->display_options['path'] = 'bandi-paragraph-files-list';

/* Display: BandiParagraphFilesCounter */
$handler = $view->new_display('services', 'BandiParagraphFilesCounter', 'paragraph_files_counter');
$handler->display->display_options['defaults']['group_by'] = FALSE;
$handler->display->display_options['group_by'] = TRUE;
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['style_options']['default_row_class'] = FALSE;
$handler->display->display_options['style_options']['row_class_special'] = FALSE;
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['row_options']['inline'] = array(
  'title' => 'title',
  'field_data_pubblicazione' => 'field_data_pubblicazione',
);
$handler->display->display_options['row_options']['default_field_elements'] = FALSE;
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['relationships'] = FALSE;
/* Relationship: Campo: Elenco dei paragrafi (field_paragrafi) */
$handler->display->display_options['relationships']['field_paragrafi_value']['id'] = 'field_paragrafi_value';
$handler->display->display_options['relationships']['field_paragrafi_value']['table'] = 'field_data_field_paragrafi';
$handler->display->display_options['relationships']['field_paragrafi_value']['field'] = 'field_paragrafi_value';
$handler->display->display_options['relationships']['field_paragrafi_value']['delta'] = '-1';
/* Relationship: Campo: Manifesto degli studi (field_documento:fid) */
$handler->display->display_options['relationships']['field_documento_fid']['id'] = 'field_documento_fid';
$handler->display->display_options['relationships']['field_documento_fid']['table'] = 'field_data_field_documento';
$handler->display->display_options['relationships']['field_documento_fid']['field'] = 'field_documento_fid';
$handler->display->display_options['relationships']['field_documento_fid']['relationship'] = 'field_paragrafi_value';
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Campo: File: ID file */
$handler->display->display_options['fields']['fid']['id'] = 'fid';
$handler->display->display_options['fields']['fid']['table'] = 'file_managed';
$handler->display->display_options['fields']['fid']['field'] = 'fid';
$handler->display->display_options['fields']['fid']['relationship'] = 'field_documento_fid';
$handler->display->display_options['fields']['fid']['group_type'] = 'count_distinct';
$handler->display->display_options['fields']['fid']['label'] = 'total';
$handler->display->display_options['fields']['fid']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['fid']['separator'] = '';
$handler->display->display_options['path'] = 'bandi-paragraph-files-counter';
$translatables['bandi_rest_api'] = array(
  t('Master'),
  t('Bandi rest api'),
  t('more'),
  t('Apply'),
  t('Ripristina'),
  t('Sort by'),
  t('Asc'),
  t('Desc'),
  t('file from field_file_del_bando'),
  t('pubblication_date'),
  t('titolo'),
  t('end_publication_date'),
  t('Orario'),
  t('Bando_espletato'),
  t('if ([field_bando_archiviato-value]  == 1) \'\''),
  t('descrizione'),
  t('Pubblicato'),
  t('Percorso'),
  t('ID file'),
  t('Nome'),
  t('Etichetta file'),
  t('Visualizza'),
  t('Bandi'),
  t('term'),
  t('dipartimento_bando'),
  t('tax_categoria_bando_term'),
  t('[field_tr_bando_per_target-tid]'),
  t('tax_doc_e_ricerc_term'),
  t('[field_tr_bandi_per_docenti-tid]'),
  t('tax_bandi_pta_term'),
  t('[field_tr_bandi_personale-tid]'),
  t('tax_bandi_di_gara_term'),
  t('[field_tr_bandi_di_gara-tid]'),
  t('tax_bandi_per_studenti_term'),
  t('[field_tr_bandi_per_studenti-tid]'),
  t('tax_altri_bandi_term'),
  t('[field_tr_altri_bandi-tid]'),
  t('file_id'),
  t('fileName'),
  t('filePath'),
  t('fileLabel'),
  t('Nid'),
  t('paragrph'),
  t('BandiCounter'),
  t('total'),
  t('BandiParagraphFiles'),
  t('Paragraph item from field_paragrafi'),
  t('file from field_documento'),
  t('fileID'),
  t('[nid]_[fid]'),
  t('filename'),
  t('BandiParagraphFilesCounter'),
);
       
views taxonomy terms configuration
$view = new view();
$view->name = 'bandi_rest_terms';
$view->description = 'Termini di tassonomia usati nei bandi in rest per migrazione in Drupal 9';
$view->tag = 'default';
$view->base_table = 'taxonomy_term_data';
$view->human_name = 'bandi rest terms';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Ripristina';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['tags']['first'] = '« prima';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ precedente';
$handler->display->display_options['pager']['options']['tags']['next'] = 'seguente ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'ultima »';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'fields';
/* Campo: Termine della tassonomia: ID Termine */
$handler->display->display_options['fields']['tid']['id'] = 'tid';
$handler->display->display_options['fields']['tid']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['tid']['field'] = 'tid';
$handler->display->display_options['fields']['tid']['label'] = 'term_id';
$handler->display->display_options['fields']['tid']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['tid']['separator'] = '';
/* Campo: Termine della tassonomia: Nome */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'taxonomy_term_data';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['label'] = 'name';
$handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
$handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
/* Campo: Vocabolario della tassonomia: Nome ad uso interno */
$handler->display->display_options['fields']['machine_name']['id'] = 'machine_name';
$handler->display->display_options['fields']['machine_name']['table'] = 'taxonomy_vocabulary';
$handler->display->display_options['fields']['machine_name']['field'] = 'machine_name';
$handler->display->display_options['fields']['machine_name']['label'] = 'vocabulary';
$handler->display->display_options['fields']['machine_name']['element_label_colon'] = FALSE;
/* Filter criterion: Termine della tassonomia: Vocabolario */
$handler->display->display_options['filters']['vid']['id'] = 'vid';
$handler->display->display_options['filters']['vid']['table'] = 'taxonomy_term_data';
$handler->display->display_options['filters']['vid']['field'] = 'vid';
$handler->display->display_options['filters']['vid']['value'] = array(
  10 => '10',
  11 => '11',
  12 => '12',
  13 => '13',
  14 => '14',
  15 => '15',
);

/* Display: TaxonomyTerms */
$handler = $view->new_display('services', 'TaxonomyTerms', 'tax_terms');
$handler->display->display_options['defaults']['pager'] = FALSE;
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['path'] = 'tax-terms';
$translatables['bandi_rest_terms'] = array(
  t('Master'),
  t('more'),
  t('Apply'),
  t('Ripristina'),
  t('Sort by'),
  t('Asc'),
  t('Desc'),
  t('Items per page'),
  t('- All -'),
  t('Offset'),
  t('« prima'),
  t('‹ precedente'),
  t('seguente ›'),
  t('ultima »'),
  t('term_id'),
  t('.'),
  t('name'),
  t('vocabulary'),
  t('TaxonomyTerms'),
);
   


Indirizzi url :

cineca_migrate_announcements:

cineca_migrate_taxonomies:


NB: Basic http authorizzation = in pp usiamo auth per lo shield attivato, in produzione bisogna attivare a services http basic authorizzation, e in auth del modulo dare le credenziali di un utente nel sito.


Ricezione dei dati lato d9

Per poter effettuare una migrazione di dati organizzati come in questo esempio che si tratti di un CT Bandi dal d7 di uniss al nuovo d9 di uniss, abbiamo bisogno di trovare un modo sia su come esporre questi dati lato d7 (anche come strutturarli etc) sia come riceverli lato d9.

Una particolarità nei bandi è una specie di campo dipendente di tassonomia, creato in questo modo. Un primo campo select che attinge valori dai termini della tassonomia "Categoria Bando", che una volta selezionato mostra un secondo campo select che viene selezionato dal valore del primo per indicare la tassonomia da mostrare (questo viene effettuato con conditional fields
e altri 5 campi). La particolarità di questo caso impone che per lo meno le tassonomie siano già esistenti prima di importare ulteriori bandi dal d7.

Grazie a questa necessità, sono stati pensati 2 moduli custom di migrazione per il d9.

  • cineca_migrate_taxonomies
  • cineca_migrate_announcements


cineca_migrate_taxonomies

Il primo deve essere installato ed eseguite le migrazioni prima della costruzione del CT Bando.

Bastano i seguenti comandi

Importazione delle tassonomie
drush en cineca_migrate_taxonomies
drush mim tax_categoria_bando_term --execute-dependencies


Descrizione di cineca_migrate_taxonomies

Il modulo in installazione crea un file json con i campi necessari per la migrazione. Serve perché le migrazioni danno errore se non trovano il file o anche le singole voci da importare.

Di seguito, tramite  l'evento MigrateEvents::PRE_IMPORT , viene importato il file json contenente i dati necessari per la migrazione.

Questo modulo utilizza i file yml di tipo taxonomy.vocabulary.vid per la creazione del vocabolario della tassonomia e i file yml di tipo migrate_plus.migration.migrationID per la migrazione vera e propria.

Al termine delle migrazioni del modulo, il file json, viene svuotato dei dati e riportato al array iniziale (chiavi senza valori), per una questione di sicurezza.



Dopo  di che è possibile proseguire con la costruzione del CT Bandi e l'installazione di cineca_migrate_announcements per migrare i bandi.

cineca_migrate_taxonomies.zip

cineca_migrate_announcements

Il modulo (cineca_migrate_announcements ) è basato su migrate_plus.

Moduli da attivare oltre al modulo custom menzionato qui sopra

d9 abilitazione moduli
drush en migrate_skip_on_404

scopo di migrate_skip_on_404 = non controlla se la riga della sorgente contiene l'url verso il file o meno, ma controlla se effettivamente il file esista per essere importato o meno.

Descrizione di cineca_migrate_announcements

Il modulo in installazione crea un file json con i campi necessari per la migrazione. Serve perché le migrazioni danno errore se non trovano il file o anche le singole voci da importare.

Di seguito, tramite  l'evento MigrateEvents::PRE_IMPORT , viene importato il file json contenente i dati necessari per la migrazione.


Pezzo della risposta json di Bandi
	
 $jayParsedAry = [
   "Bandi" => [
         [
            "titolo" => "Avviso pubblico per la formazione di un elenco di soggetti idonei per il conferimento di incarichi professionali per servizi di ingegneria e architettura di importo inferiore a 100.000,00 EURO", 
            "dipartimento_bando" => "", 
            "descrizione" => "<p>L’elenco di soggetti idonei <strong>è attivo e risulta costantemente aperto a nuove candidature di soggetti interessati a farne parte</strong>, come riportato nella <a href="https://www.uniss.it/sites/default/files/bando/elprof_avviso_08-07-2019.pdf">nota relativa all’avviso pubblico emanata in data 8 luglio 2019</a>.</p>
", 
            "pubblication_date" => "2019-07-08 00:00:00", 
            "end_publication_date" => "2019-08-08 00:00:00", 
            "orario" => null, 
            "id termine" => "54", 
            "name" => "Altri bandi", 
            "vocabulary" => "categoria_bando", 
            "bando_espletato" => "0", 
            "pubblicato" => "Sì", 
            "percorso" => "/bandi/avviso-pubblico-la-formazione-di-un-elenco-di-soggetti-idonei-il-conferimento-di-incarichi-professionali-servizi-di-ingegneria-e-architettura-di", 
            "file_id" => "27152", 
            "filename" => "elprof_avviso_08-07-2019.pdf", 
            "filepath" => "http://default.uniss.d7cl2.pp.private.cineca.it/sites/default/files/bando/elprof_avviso_08-07-2019.pdf", 
            "filelabel" => "Avviso pubblico 2019", 
            "nid" => "3372", 
            "paragrph" => "<div class="item-list"><ul><li class="first"><div  about="" class="ds-1col entity entity-paragraphs-item paragraphs-item-documento  view-mode-full clearfix"><br />
<br />
  <br />
  <div id="paragraphs-item-documento-full-group-innercontent" class="inner-content"><ul><li class="odd first last"><span class="icon_file"><a href="http://default.uniss.d7cl2.pp.private.cineca.it/sites/default/files/bando/002-avviso_pubblico.pdf" type="application/pdf; length=1513700" class="application-pdf" onclick="window.open(this.href, 'a');return false" title="002-avviso_pubblico.pdf (1478.22kb) - Il documento si apre in una nuova finestra">Avviso pubblico 2016</a></span></li></ul></div></div></li><li><div  about="" class="ds-1col entity entity-paragraphs-item paragraphs-item-documento  view-mode-full clearfix"><br />
<br />
  <br />
  <h3 class="titolo-par uppercase bottom20">Allegati</h3><div id="paragraphs-item-documento-full-group-innercontent--2" class="inner-content"><ul><li class="odd first"><span class="icon_file"><a href="http://default.uniss.d7cl2.pp.private.cineca.it/sites/default/files/bando/allegato_a_3.doc" type="application/msword; length=47104" class="x-office-document" onclick="window.open(this.href, 'a');return false" title="allegato_a.doc (46kb) - Il documento si apre in una nuova finestra">Allegato A</a></span></li><li class="even last"><span class="icon_file"><a href="http://default.uniss.d7cl2.pp.private.cineca.it/sites/default/files/bando/allegato_b.xlsx" type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; length=11586" class="x-office-spreadsheet" onclick="window.open(this.href, 'a');return false" title="allegato_b.xlsx (11.31kb) - Il documento si apre in una nuova finestra">Allegato B</a></span></li></ul></div></div></li><li class="last"><div  about="" class="ds-1col entity entity-paragraphs-item paragraphs-item-correlazioni  view-mode-full  clearfix"><br />
<br />
  <br />
  <h3 class="titolo-par uppercase bottom20">Elenco di soggetti idonei per il conferimento di incarichi professionali per servizi di ingegneria e architettura di importo inferiore a 100.000,00 euro</h3><div id="paragraphs-item-correlazioni-full-group-innercontent" class="group-innercontent field-group-div"><ul class="link-list"><li class="odd first last"><a href="https://www.uniss.it/ateneo/amministrazione-trasparente/opere-pubbliche-2/atti-di-programmazione-delle-opere-pubbliche#elencoprofessionisti">Elenco di soggetti idonei</a></li></ul></div></div></li></ul></div>" 
         ] 
      ] 
]; 
 


Analisi dei singoli file di migrazione

bandi_file
# id deve essere identico all'ultima parte del nome del file (migrate_plus.migration.bandi_file.yml)
# Per la migrazione dei file sono necessari 3 campi 
# - filename che serve per poterlo manipolare insieme ad un path di nostra scelta (l'ho messo nelle costanti) per salvarlo nel nostro file system
# - filepath (url preferibilmente absolute) della posizione del file fisico che vogliamo importare
# - file_id (occorre averlo sempre, perché migration lo mappa insieme al nuovo id che li darà una volta importato)
# utile per poterlo usare in altre migrazioni con il plugin migration_lookup, per i rollback, etc.
id: bandi_file
label: "Bando (File) from d7, json source"
migration_group: bandi_group
# La migrazione viene divisa in 3 parti (source, process, destination)
# ognuna di queste ha delle particolarità
source:
  # possono essere usate delle costanti, qui il modo per poterle dichiarare
  constants:
    DRUPAL_FILE_DIRECTORY: 'public://bandi/'
  plugin: url
  data_fetcher_plugin: file
  data_parser_plugin: json
  urls:
    - sites/default/files/migrations/bandi.json
  # serve per distinguere i livelli
  item_selector: '/Bandi'
  # in fields viene definita la mappatura del campo trovato in sorgente, con come lo si voglia usare qui
  # selector la chiave trovata nel file json
  # name il nome con il quale intendiamo usarlo qui.
  fields:
    - 
      name: src_file_id
      label: 'Photo ID'
      selector: file_id
    - 
      name: src_filename
      label: 'filename'
      selector: filename
    - 
      name: src_filepath
      label: 'File path'
      selector: filepath
  ids:
	# obbligatorio, questo il modulo migration lo utilizza per la tabella che crea (migration_map_bandi_file) per popolare la colonna sourceId1
    src_file_id:
      type: string
process:
  # pseudo field, qui creiamo il filepath completo (vogliamo che finisca nel nostro file system es. public://bandi/filename.pdf)
  psf_destination_full_path:
    - 
      plugin: concat
      source:
        - constants/DRUPAL_FILE_DIRECTORY
        - src_filename
    - 
      plugin: urlencode
  # la vera copia
  uri:
	# questo plugin fa si che non venga interotta la migrazione se filepath del file sorgente è vuota
    - 
      plugin: skip_on_empty
      source: src_filepath
      method: row
      message: 'Cannot import empty document.'
	# questo plugin controlla se il filepath dato corrisponde veramente ad un file, altrimenti non blocca la migrazione, salta solo questo file
    - 
      plugin: skip_on_404
      source: src_filepath
      method: row
	# infine la vera copia dal url della sorgente al nostro file system grazie al pseudo campo (psf_destination_full_path [nome arbitrario]) 
    - 
      plugin: file_copy
      source:
        - src_filepath
        - '@psf_destination_full_path'
      file_exists: 'replace'
# la destinazione è la entity:file, viene salvato nel file system, registrato in DB nel table file_managed, mostrato in backend in content > files
destination:
  plugin: 'entity:file'
migration_dependencies: {}
dependencies:
  enforced:
    module:
      - cineca_migrate_announcements

bandi_file_media
#
# psf_destination_filename
#   plugin: basename di src_filepath (public://filename.pdf  diventa filename.pdf)
# psf_destination_full_path
#   plugin: concat di psf_destination_filename con DRUPAL_FILE_DIRECTORY (diventa public://bandi/filename.pdf)
#   plugin: urlencode (ritorna una stringa dove tutti i caratteri non alfanumerici sono sostituiti con (%) ) 
#   plugin: skip_on_empty salta l'importazione se non trova il file nel file system locale (public://bandi/filename.pdf)
# field_media_document/target_id
#   plugin: migration_lookup [cerca in migration_map di bandi_file  source_id = src_file_id] ed associa la ID di DB:file_managed
# field_media_document/description:
#   plugin: migration_lookup [cerca in migration_map di bandi_file  source_id = src_file_id] ed associa la ID di DB:file_managed
#
# Per importare l'ordine sarebbe :
#   - bandi_file
#   - bandi_file_media
#
# Per rollback l'ordine è inverso:
#   - bandi_file_media
#   - bandi_file
#
#
id: bandi_file_media
label: "Bando (Media) from d7, json source"
migration_group: bandi_group
source:
  constants:
    DRUPAL_FILE_DIRECTORY: 'public://bandi/'
    USER: '1'
  plugin: url
  data_fetcher_plugin: file
  data_parser_plugin: json
  urls:
    - sites/default/files/migrations/bandi.json
  item_selector: '/Bandi'
  fields:
    - 
      name: src_file_id
      label: 'Photo ID'
      selector: file_id
    - 
      name: src_filename
      label: 'filename'
      selector: filename
    - 
      name: src_filelabel
      label: 'File label'
      selector: filelabel
  ids:
    src_file_id:
      type: string
process:
  # in questo caso, visto che il file l'ho già importato nel nostro file system con bandi_file migration, controllo che sia presente nel nostro file system
  # quindi qui creo un pseudo campo con l'uri completo per il file nel nostro file system
  _document:
    - 
      plugin: concat
      source:
        - constants/DRUPAL_FILE_DIRECTORY
        - src_filename
    - 
      plugin: urlencode
  # importo il name
  name: src_filename
  # imposto il target_id del media document in base a quello assegnato al file (fid:file_managed) 
  field_media_document/target_id:
    -
      plugin: skip_on_404
      method: row
      source: '@_document'
    -
      plugin: migration_lookup
      migration: bandi_file
      source: src_file_id
      no_stub: true
  # importo la descri
  field_media_document/description: src_filelabel
  uid: constants/USER
destination:
  plugin: 'entity:media'
  default_bundle: document
migration_dependencies:
  required:
    - bandi_file
dependencies:
  enforced:
    module:
      - cineca_migrate_announcements
bandi
#
# Il file di migrazione principale, migrazione di Bandi (CT) da Json.
# Questa migrazione ha una serie di sottoprocessi che vanno eseguiti prima
# che venga eseguita questa. 
# - bandi_file
# - bandi_file_media
# - 
#
#
#
id: bandi
label: "Bandi d7, json source"
migration_group: bandi_group
source:
  constants:
    DRUPAL_FILE_DIRECTORY: 'public://bandi/'
  plugin: url
  data_fetcher_plugin: file
  data_parser_plugin: json
  urls:
    - sites/default/files/migrations/bandi.json
  item_selector: '/Bandi'
  fields:
    - 
      name: src_nid
      label: 'Node Id'
      selector: nid
    -
      name: src_title
      label: 'Titolo'
      selector: titolo
    -
      name: src_body
      label: 'Body'
      selector: descrizione
    -
      name: src_alias
      label: 'Path alias'
      selector: percorso
    - 
      name: src_status
      label: 'Pubblicato'
      selector: pubblicato
    -
      name: src_pub_date
      label: 'Data di pubblicazione'
      selector: pubblication_date
    - 
      name: src_end_pub_date
      label: 'Data di scadenza'
      selector: end_publication_date
    - 
      name: src_orario
      label: 'Orario'
      selector: orario
    -
      name: src_espletato
      label: 'Bando espletato'
      selector: bando_espletato
    -
      name: src_paragraph_txt
      label: 'Paragrafi in testo'
      selector: paragrph
    - 
      name: src_dipartimento_bando
      label: 'dipartimento bando'
      selector: dipartimento_bando
    -
      name : src_tax_categoria_bando_term
      selector: tax_categoria_bando_term
    -
      name : src_tax_doc_e_ricerc_term
      selector: tax_doc_e_ricerc_term
    -
      name: src_tax_bandi_pta_term
      selector: tax_bandi_pta_term
    -
      name: src_tax_bandi_di_gara_term
      selector: tax_bandi_di_gara_term
    -
      name: src_tax_bandi_per_studenti_term
      selector: tax_bandi_per_studenti_term
    -
      name: src_tax_altri_bandi_term
      selector: tax_altri_bandi_term
    - 
      name: src_fid
      label: 'File ID'
      selector: file_id
    - 
      name: src_filename
      label: 'File name'
      selector: filename
    - 
      name: src_fileparh
      label: 'File path'
      selector: filepath
    - 
      name: src_filelabel
      label: 'File label'
      selector: filelabel
    -
      name: src_paragraphs_text
      selector: paragrph
  ids:
    src_nid:
      type: string
destination:
  plugin: 'entity:node'
  default_bundle: bando
process:
  title: src_title
  # in questo caso la migrazione porta la stringa html con links assoluti, quindi utilizzo i plugin dom, dom_str_replace per renderli relativi
  body/value:
    -
      plugin: dom
      method: import
      source: src_body
    - 
      plugin: dom_str_replace
      mode: attribute
      xpath: '//a'
      attribute_options:
        name: href
      search: 'http://default.uniss.d7cl2.pp.private.cineca.it/'
      replace: '/'
    - 
      plugin: dom_str_replace
      mode: attribute
      xpath: '//a'
      attribute_options:
        name: href
      search: 'https://www.uniss.it/'
      replace: '/'
    -
      plugin: dom
      method: export
  body/format:
    plugin: default_value
    default_value: full_html
  # nonnostante la data sorgente e solo data, ma services quando espone il Json lo espone sempre con tempo 00:00:00, occhio all'attributo from_format
  field_publish_date/value:
    plugin: format_date
    source: src_pub_date
    from_format: 'Y-m-d H:i:s'
    to_format: 'Y-m-d'
  field_deadline_date/value:
    plugin: format_date
    source: src_end_pub_date
    from_format: 'Y-m-d H:i:s'
    to_format: 'Y-m-d'
  field_orario: src_orario
  # campo list(integer), cardinalità multipla. Il dato lo ricevo come stringa (A,B,C). Qui prima uso i plugin explode,single_value,multiple_values per importare correttamente.
  field_dipartimento_bando:
    - 
      plugin: explode
      source: src_dipartimento_bando
      delimiter: ','
    - plugin: single_value
    - plugin: multiple_values
  # Per le tassonomie, fa leva alla migrazione di queste grazie al modulo cineca_migrate_taxonomies, così le importa correttamente
  field_tr_altri_bandi:
    plugin: migration_lookup
    migration: tax_altri_bandi_term
    source: src_tax_altri_bandi_term
  field_bandi_di_gara:
    plugin: migration_lookup
    migration: tax_bandi_di_gara_term
    source: src_tax_bandi_di_gara_term
  field_tr_bandi_per_docenti:
    plugin: migration_lookup
    migration: tax_doc_e_ricerc_term
    source: src_tax_doc_e_ricerc_term
  field_tr_bandi_personale:
    plugin: migration_lookup
    migration: tax_bandi_pta_term
    source: src_tax_bandi_pta_term
  field_tr_bandi_per_studenti:
    plugin: migration_lookup
    migration: tax_bandi_per_studenti_term
    source: src_tax_bandi_per_studenti_term
  field_categoria_bando:
    plugin: migration_lookup
    migration: tax_categoria_bando_term
    source: src_tax_categoria_bando_term
  field_bando_archiviato: src_espletato
  _document:
    - 
      plugin: concat
      source:
        - constants/DRUPAL_FILE_DIRECTORY
        - src_filename
    - 
      plugin: urlencode
  field_file_bando/target_id:
    -
      plugin: skip_on_404
      method: row
      source: '@_document'
    -
      plugin: migration_lookup
      migration: bandi_file_media
      source: src_fid
      no_stub: true
  field_paragrafi_importati/value:
    -
      plugin: dom
      method: import
      source: src_paragraphs_text
    - 
      plugin: dom_str_replace
      mode: attribute
      xpath: '//a'
      attribute_options:
        name: href
      search: 'http://default.uniss.d7cl2.pp.private.cineca.it/'
      replace: '/'
    - 
      plugin: dom_str_replace
      mode: attribute
      xpath: '//a'
      attribute_options:
        name: href
      search: 'https://www.uniss.it/'
      replace: '/'
    -
      plugin: dom
      method: export
  field_paragrafi_importati/format:
    plugin: default_value
    default_value: full_html
  status:
    plugin: str_replace
    search: 'Sì'
    replace: '1'
    source: src_status
  path/alias: src_alias
  path/pathauto:
    plugin: default_value
    default_value: false
migration_dependencies:
  required:
    - bandi_file_media
dependencies:
  enforced:
    module:
      - cineca_migrate_announcements



cineca_migrate_announcements.zip


Tips & Tricks

  • Inanzitutto, non c'è una scapatoia, non è possibile evitare di creare la migrazione dei file prima di quella dei media, prima di quella di collegamento (riferimento) al nodo. Ogni cosa va creata a posta; sempre.
  • Finchè possiamo modelare  le fonti  a nostro piacimento (tipo un nostro sito da migrare, non fonte IRIS etc) meglio preparare il dato il più vicino possibile a quello che ci serve, così ci fa risparmiare lavoro al modulo di migrazione lato d9.
  • Quando cominciamo a lavorare su un modulo di migrazione, bisogna fare passo per passo e testare, quindi per esempio non creare la migrazione di tutti i campi dei bandi, ma uno alla volta, così risolviamo passo passo problematiche con i plugin che vogliamo usare.




  • No labels