Progetto

Generale

Profilo

Actions

Task #713

aperta

Risolvere il problema delle schede F con IMMAGINI MANCANTI sul front end

Aggiunto da Redmine Admin 2 mesi fa. Aggiornato 1 giorno fa.

Stato:
Resolved
Priorità:
Normale
Assegnato a:
Inizio:
28-04-2025
Scadenza:
% Completato:

100%

Tempo stimato:
2.00 h
Tempo impiegato:

Descrizione

Dopo la reindicizzazione del software fatta da Merlitti in data 4 dicembre 2025, va fatta una
verifica che non ci siano più schede senza immagini sul front end e, in caso contrario,
correggere le eventuali incongruenze ancora presenti.
Da un primo controllo a campione abbozzato da Spada, ci sono ancora errori, come in questo
caso:https://fototeca.insr.it/scheda-soggetto-fotografico/62b9e663b001da29fb55b21d/

Actions #1

Aggiornato da Redmine Admin 2 mesi fa

  • Tracker modificata da Bug a Task
Actions #2

Aggiornato da Redmine Admin 3 giorni fa

  • Stato modificata da New a Resolved
  • % Completato modificata da 0 a 100

https://dev.informaticaumanistica.com/redmine/issues/713

Analisi del problema [inizio ore 18:00]

Cercando "busto di cristo" nel campo Soggetto della ricerca Soggetti fotografici:

https://fototeca.insr.it/risultati-ricerca/?doc_type=SoggettoFotografico&sgt=busto%20di%20cristo&page_num=1

si ottengono 22 risultati ed il 5° risultato non ha l'immagine di anteprima.

Se si va a visualizzare la scheda del soggetto fotografico si ottiene l'indicazione di un errore:

https://fototeca.insr.it/scheda-soggetto-fotografico/62b9e663b001da29fb55b21d/

Unable to open [object Object]: Error loading image at https://...v1.1/files//content?key=605...d1d

Il problema è che dopo /files/ dovrebbe esserci l'id del file da visualizzare come in questo caso:

https://fototeca.insr.it/insr-rest-api/v1.1/files/62d963ae98283b33dc0a19a2/content?key=605e818818b871ac3e51a56f3030fd1d

Il plugin iu-insr, quando si tratta di visualizzare l'immagine di anteprima per una scheda di un soggetto fotografico X va a recuperare i documenti fotografici che hanno X nel campo soggetti. Itera quindi su tutti i documenti fotografici (schede F) e legge tutte le occorrenze del campo DO>FTA per tirare fuori il campo "file" che è quello che contiene l'id del file da visualizzare.

Facciamo le query in mongosh:

insr> db.soggetti_fotografici.find({_id:ObjectId('62b9e663b001da29fb55b21d')})
[
  {
    _id: ObjectId("62b9e663b001da29fb55b21d"),
    bene: DBRef("beni_oa", '62b9e663b001da29fb55b21c'),
    descrizione: null,
    note: '',
    status: 'publish',
    user: ObjectId("620a9060027b00001e0063f6"),
    createdAt: ISODate("2022-06-27T17:18:27.000Z"),
    updatedAt: ISODate("2024-11-24T18:16:14.259Z")
  }
]

insr> db.beni_oa.find({_id:ObjectId('62b9e663b001da29fb55b21c')})
[
  {
    _id: ObjectId("62b9e663b001da29fb55b21c"),
    CD: {
      TSK: 'OA',
      LIR: 'I',
      NCT: { NCTR: '09', NCTN: '1005503', NCTS: '' },
      ESC: 'INSR',
      ECP: 'INSR',
      EPR: 'INSR'
    },
    RV: { RVE: { RVEL: null, RVER: null, RVES: [] }, RSE: [], ROZ: [] },
    OG: {
      OGT: {
        xOGTC: null,
        OGTD: null,
        OGTT: 'Scultura',
        OGTV: null,
        OGTN: null,
        OGTP: null
      },
      QNT: null,
      SGT: {
        SGTI: [ 'Busto di Cristo' ],
        SGTT: [ 'Crocifisso (particolare)' ]
      }
    },
    LC: {
      PVC: {
        PVCS: 'ITALIA',
        PVCR: 'Toscana',
        PVCP: 'FI',
        PVCC: 'Firenze',
        PVCL: null,
        PVCE: null
      },
      PVL: null,
      PVE: null,
      LDC: {
        LDCT: null,
        LDCQ: null,
        LDCN: 'Chiesa di Santa Croce',
        LDCC: null,
        LDCU: null,
        LDCM: null,
        LDCS: null
      }
    },
    LA: [],
    DT: [
      {
        DTS: { DTSI: '1435', DTSV: 'ca', DTSF: '1435', DTSL: '' },
        DTZ: { DTZG: 'XV', DTZS: '' },
        DTM: [ '' ],
        ADT: [],
        xDTT: ''
      }
    ],
    AU: {
      AUT: [
        {
          AUTS: null,
          AUTR: null,
          AUTM: [],
          NCUN: null,
          AUTN: 'Donato Bardi',
          AUTA: 'XIV-XV (Firenze 1386/ Firenze 1466)',
          AUTH: null,
          AUTB: null
        }
      ],
      ATB: [],
      AAT: [],
      EDT: null,
      CMM: null
    },
    MT: { MTC: [ 'Legno' ], MIS: [], FIL: null, FRM: null },
    CO: { STC: { STCC: null, STCS: null } },
    DA: {
      DES: { DESO: null, DESI: [], DESS: [] },
      ISR: null,
      STM: null,
      NSC: null
    },
    TU: {
      ACQ: { ACQT: null, ACQN: null, ACQD: null, ACQL: null },
      CDG: { CDGG: null, CDGS: [], CDGI: null }
    },
    DO: {
      FTA: [
        {
          FTAX: 'documentazione allegata',
          FTAP: 'fotografia digitale (file)',
          FTAA: null,
          FTAD: null,
          FTAE: null,
          FTAC: null,
          FTAN: 'INSR18774',
          FTAT: null,
          FTAF: null
        }
      ]
    },
    AD: { ADS: { ADSP: null, ADSM: null, ADSD: null } },
    CM: {
      CMP: { CMPD: '2005', CMPN: [ 'Cialdai, Susanna' ] },
      RSR: null,
      FUR: [],
      RVM: null,
      AGG: [],
      ISP: null
    },
    AN: {
      OSS: "Per la foto d'insieme cfr. n. inv. 18773, 20763, 21144\n" +
        'NOTE IMPORTAZIONE:\n' +
        'AAT: ^fNanni di Banco (attribuito)^sXIV-XV (Firenze 1384ca/ Firenze 1421)^rScultore'
    },
    status: 'draft',
    user: ObjectId("620a9060027b00001e0063f6"),
    createdAt: ISODate("2022-06-27T17:18:27.000Z"),
    updatedAt: ISODate("2024-11-24T18:16:10.103Z")
  }
]

Si vede che il documento fotografico che ha questo bene OA come soggetto fotografico ha una istanza di DO>FTA con FTAN INSR18774 ma senza il campo file.

Cercando nella collezione files il file con name "18774" si trova un risultato:

insr> db.files.find{name:"18774"}
{
  "_id": {
    "$oid": "62d963ac98283b33dc0a17b0" 
  },
  "path": "master/18774.jpg",
  "name": "18774",
  "ext": "jpg",
  "user": {
    "$oid": "620a9060027b00001e0063f6" 
  },
  "createdAt": {
    "$date": "2022-07-21T14:33:16.559Z" 
  },
  "updatedAt": {
    "$date": "2022-07-21T14:33:16.559Z" 
  },
  "tags": [
    "master" 
  ]
}

Abbiamo già un documento fotografico che ha questo file in qualche DO>FTA?

Sì, questo:

{
  "_id": {
    "$oid": "62b9e663b001da29fb55b21b" 
  },
  "soggetti": [
    {
      "$oid": "62b9e663b001da29fb55b21a" 
    }
  ],
  [...]
  "CD": {
    "TSK": "F",
    "LIR": "I",
    "NCT": {
      "NCTR": "09",
      "NCTN": "005502",
      "NCTS": null
    },
    "ESC": "INSR",
    "ECP": "INSR" 
  },
  [...]
  "DO": {
    "FTA": [
      {
        "FTAN": "INSR18774",
        "FTAX": "documentazione allegata",
        "FTAP": "positivo b/n",
        "FTAF": null,
        "FTAM": null,
        "FTAA": null,
        "FTAD": null,
        "FTAE": null,
        "FTAC": null,
        "FTAR": null,
        "FTAK": null,
        "FTAW": null,
        "FTAY": null,
        "FTAT": null,
        "FTAS": null,
        "file": {
          "$oid": "62d963ac98283b33dc0a17b0" 
        }
      }
    ],
    "DRA": null,
    "VDC": null,
    "REG": null,
    "FNT": null,
    "BIB": null
  },
  [...]
}

che ha come soggetti il soggetto fotografico 62b9e663b001da29fb55b21a:

{
  "_id": {
    "$oid": "62b9e663b001da29fb55b21a" 
  },
  "bene": {
    "$ref": "beni_oa",
    "$id": {
      "$oid": "62b9e663b001da29fb55b219" 
    }
  },
  "status": "publish",
  "user": {
    "$oid": "620a9060027b00001e0063f6" 
  },
  "createdAt": {
    "$date": "2022-06-27T17:18:27.387Z" 
  },
  "updatedAt": {
    "$date": "2022-06-27T17:18:27.387Z" 
  }
}

che è un bene OA con id 62b9e663b001da29fb55b219:

{
  "_id": {
    "$oid": "62b9e663b001da29fb55b219" 
  },
  "CD": {
    "TSK": "OA",
    "LIR": "I",
    "NCT": {
      "NCTR": "09",
      "NCTN": "1005502" 
    },
    "ESC": "INSR",
    "ECP": "INSR",
    "EPR": "INSR" 
  },
  "OG": {
    "OGT": {
      "OGTT": "Scultura" 
    },
    "SGT": {
      "SGTI": [
        "Insieme" 
      ],
      "SGTT": [
        "Crocifisso" 
      ]
    }
  },
  "MT": {
    "MTC": [
      "Legno" 
    ]
  },
  "LC": {
    "PVC": {
      "PVCS": "ITALIA",
      "PVCR": "Toscana",
      "PVCP": "FI",
      "PVCC": "Firenze" 
    },
    "LDC": {
      "LDCN": "Chiesa di Santa Croce" 
    }
  },
  "DT": [
    {
      "DTS": {
        "DTSI": "1435",
        "DTSV": "ca",
        "DTSF": "1435" 
      },
      "DTZ": {
        "DTZG": "XV" 
      },
      "DTM": [
        "" 
      ]
    }
  ],
  "AU": {
    "AUT": [
      {
        "AUTN": "Donato Bardi",
        "AUTA": "XIV-XV (Firenze 1386/ Firenze 1466)" 
      }
    ]
  },
  "CM": {
    "CMP": {
      "CMPD": "2005",
      "CMPN": [
        "Cialdai, Susanna" 
      ]
    }
  },
  "AN": {
    "OSS": "Per la foto d'insieme cfr. n. inv. 18773, 20763, 21144\nNOTE IMPORTAZIONE:\nAAT: ^fNanni di Banco (attribuito)^sXIV-XV (Firenze 1384ca/ Firenze 1421)^rScultore" 
  },
  "status": "draft",
  "user": {
    "$oid": "620a9060027b00001e0063f6" 
  },
  "createdAt": {
    "$date": "2022-06-27T17:18:27.380Z" 
  },
  "updatedAt": {
    "$date": "2022-06-27T17:18:27.380Z" 
  }
}

Che è in status draft.

[fine ore 20:30]

Actions #3

Aggiornato da Redmine Admin 2 giorni fa

Sono stati aggiunti due controlli nel plugin iu-insr-plugin per evitare di generare il codice html che visualizza l'immagine nel caso in cui il campo file sia vuoto. I controlli sono stati inseriti nelle funzioni display_documenti_fotografici, che viene richiamata dalla display_soggetto_fotografico, e display_immagini, che viene richiamata dalla funzione display_documento_fotografico.

Actions #4

Aggiornato da Redmine Admin 1 giorno fa

Obiettivo: recuperare tutti i beni OA che sono soggetti fotografici di documenti fotografici che non hanno la proprietà file e che quindi non hanno una immagine da visualizzare. E' necessario scrivere questa aggregate per MongoDB:

[
  {
    $match:
      /**
       * query: The query in MQL.
       */
      {
        "DO.FTA.file": null
      }
  },
  {
    $unwind:
      /**
       * path: Path to the array field.
       * includeArrayIndex: Optional name for index.
       * preserveNullAndEmptyArrays: Optional
       *   toggle to unwind null and empty values.
       */
      {
        path: "$soggetti" 
      }
  },
  {
    $lookup:
      /**
       * query: The query in MQL.
       */
      {
        from: "soggetti_fotografici",
        localField: "soggetti",
        foreignField: "_id",
        as: "soggetto_info" 
      }
  },
  {
    $unwind:
      /**
       * path: Path to the array field.
       * includeArrayIndex: Optional name for index.
       * preserveNullAndEmptyArrays: Optional
       *   toggle to unwind null and empty values.
       */
      {
        path: "$soggetto_info" 
      }
  },
  {
    $match:
      /**
       * query: The query in MQL.
       */
      {
        "soggetto_info.bene.$ref": "beni_oa" 
      }
  },
  {
    $lookup:
      /**
       * from: The target collection.
       * localField: The local join field.
       * foreignField: The target join field.
       * as: The name for the results.
       * pipeline: Optional pipeline to run on the foreign collection.
       * let: Optional variables to use in the pipeline field stages.
       */
      {
        from: "beni_oa",
        localField: "soggetto_info.bene.$id",
        foreignField: "_id",
        as: "bene_oa_info" 
      }
  },
  {
    $unwind:
      /**
       * path: Path to the array field.
       * includeArrayIndex: Optional name for index.
       * preserveNullAndEmptyArrays: Optional
       *   toggle to unwind null and empty values.
       */
      {
        path: "$bene_oa_info" 
      }
  },
  {
    $group:
      /**
       * _id: The id of the group.
       * fieldN: The first field name.
       */
      {
        _id: "$bene_oa_info._id",
        bene_completo: {
          $first: "$bene_oa_info" 
        }
      }
  },
  {
    $replaceRoot:
      /**
       * replacementDocument: A document or string.
       */
      {
        newRoot: "$bene_completo" 
      }
  },
  {
    $project:
      /**
       * specifications: The fields to
       *   include or exclude.
       */
      {
        _id: 0,
        id_bene: "$_id",
        TSK: "$CD.TSK",
        NCTN: "$CD.NCT.NCTN",
        OGTT: "$OG.OGT.OGTT",
        SGTT: {
          $reduce: {
            input: "$OG.SGT.SGTT",
            // L'array su cui iterare
            initialValue: "",
            // Il valore iniziale (una stringa vuota)
            in: {
              $concat: [
                "$$value",
                // Il valore accumulato finora
                {
                  $cond: [
                    {
                      $eq: ["$$value", ""]
                    },
                    "",
                    ", " 
                  ]
                },
                // Aggiungi la virgola solo se non è il primo elemento
                "$$this" // L'elemento corrente dell'array
              ]
            }
          }
        },
        MTC: {
          $reduce: {
            input: "$MT.MTC",
            initialValue: "",
            in: {
              $concat: [
                "$$value",
                {
                  $cond: [
                    {
                      $eq: ["$$value", ""]
                    },
                    "",
                    ", " 
                  ]
                },
                "$$this" 
              ]
            }
          }
        }
      }
  }
]

La aggregate produce 39 risultati:

id_bene TSK NCTN OGTT SGTT MTC
62b9e5efb001da29fb557e41 OA 1001078 Pittura Crocifisso adorato da San Domenico Dipinto su muro
62b9e656b001da29fb55ac67 OA 1005016 Pittura ^cGiudizio finale; Giudizio universale (particolare) Affresco
62b9e62fb001da29fb559aeb OA 1003524 Architettura
62b9e658b001da29fb55ad21 OA 1005078 Pittura ^cGiudizio finale; Giudizio universale (particolare) Affresco
62b9e665b001da29fb55b2f1 OA 1005574 Scultura Pulpito della Resurrezione (particolare) Bronzo
62b9e626b001da29fb5596ad OA 1003162
62b9e650b001da29fb55a9b8 OA 1004787 Scultura Bacco (particolare) Marmo
62b9e626b001da29fb5596ce OA 1003173
62b9e62fb001da29fb559ae2 OA 1003521 Architettura
62b9e5ffb001da29fb558543 OA 1001676 Scultura Crocifisso Statua in sughero (tutto tondo)
62b9e62fb001da29fb559ae8 OA 1003523 Architettura
62b9e62fb001da29fb559b03 OA 1003532 Architettura Palazzo Strozzi (particolare)
62b9e60cb001da29fb558b52 OA 1002193 Disegno Testa femminile Matita nera e gessetto bianco su carta bianca
62b9e665b001da29fb55b2f4 OA 1005575 Scultura Pulpito della Resurrezione (particolare) Bronzo
62b9e5edb001da29fb557d3c OA 1000991 Scultura Creazione di Eva Rilievo
62b9e626b001da29fb5596b6 OA 1003165 Mosaico San Sebastiano Mosaico
62b9e60bb001da29fb558acb OA 1002148 Disegno Santo visto da dietro, genuflesso, con volume poggiato sul ginocchio sinistro (San Giovanni Evangelista ?) Matita nera e gessetto bianco su carta preparata in grigio
62b9e626b001da29fb5596b3 OA 1003164 Pittura San Sebastiano fra "Policamus" e "Qurinus" Dipinto murale
62b9e62fb001da29fb559adf OA 1003520 Architettura
62b9e626b001da29fb5596bf OA 1003168 Mosaico Mosaico
62b9e62fb001da29fb559afa OA 1003529 Architettura
62b9e626b001da29fb5596cb OA 1003172
62b9e5dab001da29fb55749f OA 1000256 Architettura Santo Sepolcro Rucellai, particolare con un rosone Commesso marmoreo
62b9e626b001da29fb5596bc OA 1003167 Mosaico Mosaico
62b9e626b001da29fb5596b9 OA 1003166 Mosaico Gruppo di Santi Martiri Mosaico
62b9e62fb001da29fb559af4 OA 1003527 Architettura
62b9e5dbb001da29fb5574c6 OA 1000269 Architettura Santo Sepolcro Rucellai, particolare con un rosone Commesso marmoreo
62b9e5f0b001da29fb557ebc OA 1001119 Pittura Madonna col bambino tra i Santi Domenico, Giovanni Battista, Pietro martire, Tommaso d'Aquino; nelle cuspidi: l'Annunciazione e l'Eterno; nella centina: Miracolo del cielo annuvolato durante una predica di San Pietro martire e Martirio del Santo^cTrittico di San Pietro martire Dipinto su tavola (polittico)
62b9e62fb001da29fb559af7 OA 1003528 Architettura
62b9e665b001da29fb55b2ee OA 1005573 Scultura Pulpito della Resurrezione (particolare) Bronzo
62b9e666b001da29fb55b37b OA 1005620 Scultura Porta dei Martiri (particolare) Bronzo
62b9e62fb001da29fb559ae5 OA 1003522 Architettura
62b9e626b001da29fb5596c2 OA 1003169 Dipinto murale Dipinto murale
62b9e626b001da29fb5596b0 OA 1003163 Pittura San Sebastiano fra "Policamus" e "Qurinus" Dipinto murale
62b9e62fb001da29fb559aee OA 1003525 Architettura
62b9e62fb001da29fb559af1 OA 1003526 Architettura
62b9e62fb001da29fb559b00 OA 1003531 Architettura
62b9e62fb001da29fb559afd OA 1003530 Architettura
Actions

Esporta su Atom PDF