Task #713
apertaRisolvere il problema delle schede F con IMMAGINI MANCANTI sul front end
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/
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:
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:
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]
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.
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 |