feat(measure): il fuori tolleranza si autorizza, non si chiude
Il punto 5 c'era a meta': la schermata apriva il modale del capoturno e bloccava l'avanzamento automatico, ma il modale si chiudeva con Annulla o con un click sullo sfondo, la misura era gia' salvata, e `pendingAdvance` veniva impostato e non letto da nessuno. Era una conferma, non uno sbarramento. Ora l'autorizzazione finisce sulla misura: due colonne, chi ha autorizzato e quando. Finche' una quota e' fuori tolleranza e nessuno l'ha autorizzata, il server rifiuta la misura della quota successiva e la chiusura del ciclo. Non e' la schermata a impedirlo: la schermata risparmia solo il viaggio. Rimisurare la stessa quota resta possibile — il calibro scivola, il pezzo si riposiziona — e una seconda lettura in tolleranza libera il blocco, perche' conta l'ultima lettura di ogni quota. Quante volte si possa riprovare e' il punto 4, e tutte le letture restano comunque a registro. Un warning non blocca: fuori dai limiti di attenzione ma dentro la tolleranza e' dentro la tolleranza. Ricaricare la pagina era il modo piu' semplice per scavalcare il vecchio gate. Non lo e' piu': la schermata chiede al server, all'apertura, se una quota sta aspettando, e si ritrova davanti lo stesso blocco. Sparisce /validate-supervisor, che verificava le credenziali e buttava via la risposta. Al suo posto un endpoint che le credenziali le usa per scrivere l'approvazione dove serve. Il controllo del capoturno si sposta in auth_service, accanto al resto delle credenziali: fermo linea, chiusura e fuori tolleranza fanno la stessa domanda, e solo una delle tre riguarda la produzione. Il file di statistica guadagna authorised_by e authorised_at: mostrava il fallimento e non la decisione, che e' la meta' che un auditor chiede. Migrazione 010: due colonne nullable sulle misure. Le righe esistenti restano nulle — retrodatare un'autorizzazione mai avvenuta sarebbe inventarsi un record di audit, e quelle produzioni sono chiuse da un pezzo. Test: +18 (309). Coprono il rifiuto della quota successiva, la rimisura ammessa, il rilascio del blocco con una lettura buona, il ciclo che non si chiude, il capoturno registrato sulla misura, le credenziali sbagliate e chi capoturno non e', il file di statistica, e il fatto che una produzione chiusa non blocchi la successiva. Aggiunto uploads/statistics/ al gitignore: i test che chiudono una produzione scrivevano nel repository. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TieMeasureFlow 1.0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2026-07-28 20:16+0000\n"
|
||||
"POT-Creation-Date: 2026-07-28 20:48+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
@@ -37,7 +37,7 @@ msgstr "Please log in to continue"
|
||||
msgid "Inserisci username e password"
|
||||
msgstr "Enter username and password"
|
||||
|
||||
#: blueprints/auth.py:81 blueprints/measure.py:417
|
||||
#: blueprints/auth.py:81
|
||||
msgid "Credenziali non valide"
|
||||
msgstr "Invalid credentials"
|
||||
|
||||
@@ -161,15 +161,11 @@ msgstr "Missing data: subtask_id, version_id and value are required"
|
||||
msgid "Errore nel salvataggio"
|
||||
msgstr "Error saving"
|
||||
|
||||
#: blueprints/measure.py:412 blueprints/measure.py:520
|
||||
#: blueprints/measure.py:437 blueprints/measure.py:542
|
||||
msgid "Username e password richiesti"
|
||||
msgstr "Username and password required"
|
||||
|
||||
#: blueprints/measure.py:422
|
||||
msgid "Utente non autorizzato (richiesto capoturno)"
|
||||
msgstr "User not authorized (shift supervisor required)"
|
||||
|
||||
#: blueprints/measure.py:441 blueprints/measure.py:458
|
||||
#: blueprints/measure.py:463 blueprints/measure.py:480
|
||||
#: templates/errors/station_not_configured.html:2
|
||||
#: templates/errors/station_not_configured.html:16
|
||||
msgid "Stazione non configurata"
|
||||
@@ -376,7 +372,7 @@ msgstr "Optional notes"
|
||||
#: templates/maker/task_editor.html:782 templates/maker/task_editor.html:901
|
||||
#: templates/maker/task_editor.html:966 templates/maker/task_editor.html:1071
|
||||
#: templates/measure/select_recipe.html:405
|
||||
#: templates/measure/task_execute.html:831
|
||||
#: templates/measure/task_execute.html:860
|
||||
msgid "Annulla"
|
||||
msgstr "Cancel"
|
||||
|
||||
@@ -521,7 +517,7 @@ msgstr "New User"
|
||||
#: templates/admin/users.html:48 templates/admin/users.html:173
|
||||
#: templates/admin/users.html:179 templates/auth/login.html:35
|
||||
#: templates/auth/login.html:49 templates/auth/profile.html:36
|
||||
#: templates/measure/task_execute.html:816
|
||||
#: templates/measure/task_execute.html:842
|
||||
msgid "Username"
|
||||
msgstr "Username"
|
||||
|
||||
@@ -573,7 +569,7 @@ msgstr "Username cannot be changed"
|
||||
|
||||
#: templates/admin/users.html:206 templates/admin/users.html:214
|
||||
#: templates/auth/login.html:57 templates/auth/login.html:71
|
||||
#: templates/measure/task_execute.html:821
|
||||
#: templates/measure/task_execute.html:847
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
@@ -835,7 +831,7 @@ msgstr "Next measurement in"
|
||||
#: templates/components/production_clock.html:49
|
||||
#: templates/components/production_clock.html:62
|
||||
#: templates/measure/task_execute.html:463
|
||||
#: templates/measure/task_execute.html:516
|
||||
#: templates/measure/task_execute.html:542
|
||||
msgid "Misurazione in ritardo di"
|
||||
msgstr "Measurement overdue by"
|
||||
|
||||
@@ -844,7 +840,7 @@ msgid "Linea ferma — conto alla rovescia congelato a"
|
||||
msgstr "Line stopped — countdown frozen at"
|
||||
|
||||
#: templates/components/production_clock.html:62
|
||||
#: templates/measure/task_execute.html:510
|
||||
#: templates/measure/task_execute.html:536
|
||||
msgid "Linea ferma"
|
||||
msgstr "Line stopped"
|
||||
|
||||
@@ -854,17 +850,17 @@ msgid "Ciclo"
|
||||
msgstr "Cycle"
|
||||
|
||||
#: templates/components/production_clock.html:92
|
||||
#: templates/measure/task_execute.html:678
|
||||
#: templates/measure/task_execute.html:704
|
||||
msgid "È ora di misurare"
|
||||
msgstr "Time to measure"
|
||||
|
||||
#: templates/components/production_clock.html:95
|
||||
#: templates/measure/task_execute.html:680
|
||||
#: templates/measure/task_execute.html:706
|
||||
msgid "Ritorno alla misurazione tra"
|
||||
msgstr "Returning to the measurement in"
|
||||
|
||||
#: templates/components/production_clock.html:101
|
||||
#: templates/measure/task_execute.html:685
|
||||
#: templates/measure/task_execute.html:711
|
||||
msgid "Vai alla misura"
|
||||
msgstr "Go to the measurement"
|
||||
|
||||
@@ -917,8 +913,8 @@ msgstr "Preview"
|
||||
#: templates/maker/recipe_editor.html:128 templates/maker/recipe_list.html:246
|
||||
#: templates/maker/task_drawing.html:106 templates/maker/task_editor.html:130
|
||||
#: templates/measure/task_complete.html:171
|
||||
#: templates/measure/task_execute.html:589 templates/measure/task_list.html:2
|
||||
#: templates/measure/task_list.html:159
|
||||
#: templates/measure/task_execute.html:615 templates/measure/task_list.html:2
|
||||
#: templates/measure/task_list.html:180
|
||||
msgid "Task"
|
||||
msgstr "Task"
|
||||
|
||||
@@ -1094,8 +1090,8 @@ msgstr "Error during deletion"
|
||||
|
||||
# Recipe Selection Additional
|
||||
#: templates/maker/recipe_list.html:55 templates/measure/select_recipe.html:72
|
||||
#: templates/measure/task_execute.html:1262
|
||||
#: templates/measure/task_execute.html:1558
|
||||
#: templates/measure/task_execute.html:1362
|
||||
#: templates/measure/task_execute.html:1672
|
||||
msgid "Errore di connessione"
|
||||
msgstr "Connection Error"
|
||||
|
||||
@@ -1406,18 +1402,18 @@ msgid "Tipo"
|
||||
msgstr "Type"
|
||||
|
||||
#: templates/maker/task_editor.html:277 templates/maker/task_editor.html:543
|
||||
#: templates/measure/task_list.html:177
|
||||
#: templates/measure/task_list.html:198
|
||||
msgid "Nota"
|
||||
msgstr "Note"
|
||||
|
||||
#: templates/maker/task_editor.html:278 templates/maker/task_editor.html:544
|
||||
#: templates/measure/task_execute.html:309 templates/measure/task_list.html:175
|
||||
#: templates/measure/task_execute.html:309 templates/measure/task_list.html:196
|
||||
msgid "Misura"
|
||||
msgstr "Measure"
|
||||
|
||||
# Maker - Task Editor
|
||||
#: templates/maker/task_editor.html:279 templates/maker/task_editor.html:545
|
||||
#: templates/measure/task_list.html:176
|
||||
#: templates/measure/task_list.html:197
|
||||
msgid "Disegno"
|
||||
msgstr "Drawing"
|
||||
|
||||
@@ -1448,7 +1444,7 @@ msgstr "Drag to reorder"
|
||||
|
||||
#: templates/maker/task_editor.html:390
|
||||
#: templates/maker/version_history.html:188
|
||||
#: templates/measure/task_list.html:192
|
||||
#: templates/measure/task_list.html:213
|
||||
msgid "misurazioni"
|
||||
msgstr "measurements"
|
||||
|
||||
@@ -1714,7 +1710,7 @@ msgid "Misurazione aggiunta"
|
||||
msgstr "Measurement added"
|
||||
|
||||
#: templates/maker/task_editor.html:1685
|
||||
#: templates/measure/task_execute.html:1108
|
||||
#: templates/measure/task_execute.html:1170
|
||||
msgid "Errore nel salvataggio della misurazione"
|
||||
msgstr "Error saving measurement"
|
||||
|
||||
@@ -1782,16 +1778,16 @@ msgid "Seleziona Ricetta"
|
||||
msgstr "Select Recipe"
|
||||
|
||||
# Measure - Task List
|
||||
#: templates/measure/select_recipe.html:30
|
||||
#: templates/measure/select_recipe.html:30 templates/measure/task_list.html:86
|
||||
msgid "lotto"
|
||||
msgstr "lot"
|
||||
|
||||
#: templates/measure/select_recipe.html:31
|
||||
#: templates/measure/select_recipe.html:31 templates/measure/task_list.html:87
|
||||
msgid "seriale"
|
||||
msgstr "serial"
|
||||
|
||||
#: templates/measure/select_recipe.html:64
|
||||
#: templates/measure/select_recipe.html:277
|
||||
#: templates/measure/select_recipe.html:277 templates/measure/task_list.html:97
|
||||
msgid "Compila prima:"
|
||||
msgstr "Fill in first:"
|
||||
|
||||
@@ -1886,25 +1882,26 @@ msgstr "Search"
|
||||
#: templates/measure/task_complete.html:3
|
||||
#: templates/measure/task_complete.html:39
|
||||
#: templates/measure/task_execute.html:113
|
||||
#: templates/measure/task_execute.html:739
|
||||
#: templates/measure/task_execute.html:765
|
||||
#: templates/statistics/dashboard.html:139
|
||||
msgid "Riepilogo"
|
||||
msgstr "Summary"
|
||||
|
||||
#: templates/measure/task_complete.html:47
|
||||
#: templates/measure/task_execute.html:716
|
||||
#: templates/measure/task_execute.html:742
|
||||
msgid "Misurazioni Complete"
|
||||
msgstr "Measurements Complete"
|
||||
|
||||
# Measure - Task List
|
||||
#: templates/measure/task_complete.html:64
|
||||
#: templates/measure/task_complete.html:296 templates/measure/task_list.html:97
|
||||
#: templates/measure/task_complete.html:296
|
||||
#: templates/measure/task_list.html:118
|
||||
msgid "Lotto"
|
||||
msgstr "Lot"
|
||||
|
||||
#: templates/measure/task_complete.html:70
|
||||
#: templates/measure/task_complete.html:297
|
||||
#: templates/measure/task_list.html:109
|
||||
#: templates/measure/task_list.html:130
|
||||
msgid "Seriale"
|
||||
msgstr "Serial"
|
||||
|
||||
@@ -1913,12 +1910,12 @@ msgid "Totale"
|
||||
msgstr "Total"
|
||||
|
||||
#: templates/measure/task_complete.html:106
|
||||
#: templates/measure/task_execute.html:724
|
||||
#: templates/measure/task_execute.html:750
|
||||
msgid "Conformi"
|
||||
msgstr "Pass"
|
||||
|
||||
#: templates/measure/task_complete.html:123
|
||||
#: templates/measure/task_execute.html:728
|
||||
#: templates/measure/task_execute.html:754
|
||||
msgid "Attenzione"
|
||||
msgstr "Warning"
|
||||
|
||||
@@ -2114,153 +2111,172 @@ msgstr "Recorded"
|
||||
msgid "Task di misura senza quote configurate: la ricetta è incompleta"
|
||||
msgstr "Measurement task with no quotes configured: the recipe is incomplete"
|
||||
|
||||
#: templates/measure/task_execute.html:515
|
||||
msgid "Il conto alla rovescia è congelato a"
|
||||
msgstr "The countdown is frozen at"
|
||||
#: templates/measure/task_execute.html:510
|
||||
msgid "Quota fuori tolleranza"
|
||||
msgstr "Measurement out of tolerance"
|
||||
|
||||
#: templates/measure/task_execute.html:518
|
||||
msgid "serve il capoturno per riprendere"
|
||||
msgstr "the supervisor must authorise the restart"
|
||||
#: templates/measure/task_execute.html:513
|
||||
msgid "serve il capoturno, oppure una nuova misura della stessa quota"
|
||||
msgstr "the supervisor must authorise it, or the same quote must be measured again"
|
||||
|
||||
#: templates/measure/task_execute.html:537
|
||||
msgid "Produzione non registrata sul server"
|
||||
msgstr "Production not recorded on the server"
|
||||
|
||||
#: templates/measure/task_execute.html:558
|
||||
#: templates/measure/task_execute.html:767
|
||||
msgid "Avvio Produzione"
|
||||
msgstr "Production Start"
|
||||
|
||||
#: templates/measure/task_execute.html:562
|
||||
msgid "Invia segnale al gestionale per avviare il timer della linea"
|
||||
msgstr "Send a signal to the ERP system to start the line timer"
|
||||
|
||||
#: templates/measure/task_execute.html:573
|
||||
msgid "Produzione avviata"
|
||||
msgstr "Production started"
|
||||
|
||||
#: templates/measure/task_execute.html:618
|
||||
msgid "Fine ciclo misura"
|
||||
msgstr "Measurement cycle complete"
|
||||
|
||||
#: templates/measure/task_execute.html:629
|
||||
msgid "Rimisura"
|
||||
msgstr "Measure again"
|
||||
|
||||
#: templates/measure/task_execute.html:639
|
||||
#: templates/measure/task_execute.html:653
|
||||
msgid "Completato"
|
||||
msgstr "Completed"
|
||||
|
||||
#: templates/measure/task_execute.html:718
|
||||
msgid "Tutte le"
|
||||
msgstr "All"
|
||||
|
||||
#: templates/measure/task_execute.html:718
|
||||
msgid "misurazioni sono state registrate."
|
||||
msgstr "measurements have been recorded."
|
||||
|
||||
#: templates/measure/task_execute.html:732
|
||||
msgid "Non Conf."
|
||||
msgstr "Fail"
|
||||
|
||||
#: templates/measure/task_execute.html:747
|
||||
msgid "Conferma ciclo"
|
||||
msgstr "Confirm cycle"
|
||||
|
||||
#: templates/measure/task_execute.html:757
|
||||
msgid "Task successivo"
|
||||
msgstr "Next task"
|
||||
|
||||
#: templates/measure/task_execute.html:783
|
||||
msgid "Girare il pezzo e rimisurare"
|
||||
msgstr "Turn the piece over and measure again"
|
||||
|
||||
#: templates/measure/task_execute.html:809
|
||||
msgid "Autorizzazione capoturno"
|
||||
msgstr "Shift supervisor authorization"
|
||||
|
||||
#: templates/measure/task_execute.html:818
|
||||
msgid "Username capoturno"
|
||||
msgstr "Supervisor username"
|
||||
|
||||
#: templates/measure/task_execute.html:840
|
||||
#: templates/measure/task_execute.html:517
|
||||
#: templates/measure/task_execute.html:870
|
||||
msgid "Autorizza"
|
||||
msgstr "Authorize"
|
||||
|
||||
#: templates/measure/task_execute.html:1063
|
||||
#: templates/measure/task_execute.html:541
|
||||
msgid "Il conto alla rovescia è congelato a"
|
||||
msgstr "The countdown is frozen at"
|
||||
|
||||
#: templates/measure/task_execute.html:544
|
||||
msgid "serve il capoturno per riprendere"
|
||||
msgstr "the supervisor must authorise the restart"
|
||||
|
||||
#: templates/measure/task_execute.html:563
|
||||
msgid "Produzione non registrata sul server"
|
||||
msgstr "Production not recorded on the server"
|
||||
|
||||
#: templates/measure/task_execute.html:584
|
||||
#: templates/measure/task_execute.html:793
|
||||
msgid "Avvio Produzione"
|
||||
msgstr "Production Start"
|
||||
|
||||
#: templates/measure/task_execute.html:588
|
||||
msgid "Invia segnale al gestionale per avviare il timer della linea"
|
||||
msgstr "Send a signal to the ERP system to start the line timer"
|
||||
|
||||
#: templates/measure/task_execute.html:599
|
||||
msgid "Produzione avviata"
|
||||
msgstr "Production started"
|
||||
|
||||
#: templates/measure/task_execute.html:644
|
||||
msgid "Fine ciclo misura"
|
||||
msgstr "Measurement cycle complete"
|
||||
|
||||
#: templates/measure/task_execute.html:655
|
||||
msgid "Rimisura"
|
||||
msgstr "Measure again"
|
||||
|
||||
#: templates/measure/task_execute.html:665
|
||||
#: templates/measure/task_execute.html:679
|
||||
msgid "Completato"
|
||||
msgstr "Completed"
|
||||
|
||||
#: templates/measure/task_execute.html:744
|
||||
msgid "Tutte le"
|
||||
msgstr "All"
|
||||
|
||||
#: templates/measure/task_execute.html:744
|
||||
msgid "misurazioni sono state registrate."
|
||||
msgstr "measurements have been recorded."
|
||||
|
||||
#: templates/measure/task_execute.html:758
|
||||
msgid "Non Conf."
|
||||
msgstr "Fail"
|
||||
|
||||
#: templates/measure/task_execute.html:773
|
||||
msgid "Conferma ciclo"
|
||||
msgstr "Confirm cycle"
|
||||
|
||||
#: templates/measure/task_execute.html:783
|
||||
msgid "Task successivo"
|
||||
msgstr "Next task"
|
||||
|
||||
#: templates/measure/task_execute.html:809
|
||||
msgid "Girare il pezzo e rimisurare"
|
||||
msgstr "Turn the piece over and measure again"
|
||||
|
||||
#: templates/measure/task_execute.html:835
|
||||
msgid "Autorizzazione capoturno"
|
||||
msgstr "Shift supervisor authorization"
|
||||
|
||||
#: templates/measure/task_execute.html:844
|
||||
msgid "Username capoturno"
|
||||
msgstr "Supervisor username"
|
||||
|
||||
#: templates/measure/task_execute.html:861
|
||||
msgid "Rimisura la quota"
|
||||
msgstr "Measure this quote again"
|
||||
|
||||
#: templates/measure/task_execute.html:1125
|
||||
msgid "Questa ricetta non ammette valori digitati: usare il calibro"
|
||||
msgstr "This recipe does not accept typed values: use the caliper"
|
||||
|
||||
#: templates/measure/task_execute.html:1152
|
||||
#: templates/measure/task_execute.html:1222
|
||||
msgid "Errore di rete. Riprovare."
|
||||
msgstr "Network error. Please retry."
|
||||
|
||||
#: templates/measure/task_execute.html:1257
|
||||
#: templates/measure/task_execute.html:1260
|
||||
msgid ""
|
||||
"Quota fuori tolleranza: serve l'autorizzazione del capoturno, oppure "
|
||||
"misurare di nuovo la quota"
|
||||
msgstr "Out of tolerance: the supervisor must authorise it, or the quote must be measured again"
|
||||
|
||||
#: templates/measure/task_execute.html:1357
|
||||
msgid "Errore di comunicazione con il server"
|
||||
msgstr "Error communicating with the server"
|
||||
|
||||
#: templates/measure/task_execute.html:1505
|
||||
#: templates/measure/task_execute.html:1609
|
||||
msgid "Misurazione fuori tolleranza"
|
||||
msgstr "Measurement out of tolerance"
|
||||
|
||||
#: templates/measure/task_execute.html:1506
|
||||
#: templates/measure/task_execute.html:1610
|
||||
msgid "Fermo linea richiesto"
|
||||
msgstr "Line stop requested"
|
||||
|
||||
#: templates/measure/task_execute.html:1507
|
||||
#: templates/measure/task_execute.html:1611
|
||||
msgid "Ripresa della produzione"
|
||||
msgstr "Resuming production"
|
||||
|
||||
#: templates/measure/task_execute.html:1508
|
||||
#: templates/measure/task_execute.html:1612
|
||||
msgid "Fine produzione richiesta"
|
||||
msgstr "End of production requested"
|
||||
|
||||
#: templates/measure/task_execute.html:1537
|
||||
#: templates/measure/task_execute.html:1656
|
||||
msgid "Credenziali non valide o utente non autorizzato"
|
||||
msgstr "Invalid credentials or unauthorized user"
|
||||
|
||||
#: templates/measure/task_execute.html:1569
|
||||
#: templates/measure/task_execute.html:1683
|
||||
msgid "Nessuna produzione aperta su questa stazione"
|
||||
msgstr "No production open at this station"
|
||||
|
||||
#: templates/measure/task_execute.html:1586
|
||||
#: templates/measure/task_execute.html:1700
|
||||
msgid "Azione non riuscita"
|
||||
msgstr "Action failed"
|
||||
|
||||
#: templates/measure/task_list.html:87
|
||||
#: templates/measure/task_list.html:107
|
||||
msgid "AVVIA"
|
||||
msgstr "START"
|
||||
|
||||
#: templates/measure/task_list.html:124
|
||||
#: templates/measure/task_list.html:145
|
||||
msgid "Task da eseguire"
|
||||
msgstr "Tasks to execute"
|
||||
|
||||
#: templates/measure/task_list.html:136
|
||||
#: templates/measure/task_list.html:157
|
||||
msgid "misurazioni totali"
|
||||
msgstr "total measurements"
|
||||
|
||||
#: templates/measure/task_list.html:178
|
||||
#: templates/measure/task_list.html:199
|
||||
msgid "Confronto profilo"
|
||||
msgstr "Profile comparison"
|
||||
|
||||
#: templates/measure/task_list.html:179
|
||||
#: templates/measure/task_list.html:200
|
||||
msgid "Misura camera"
|
||||
msgstr "Camera measurement"
|
||||
|
||||
#: templates/measure/task_list.html:201
|
||||
#: templates/measure/task_list.html:222
|
||||
msgid "Allegato"
|
||||
msgstr "Attachment"
|
||||
|
||||
#: templates/measure/task_list.html:225
|
||||
#: templates/measure/task_list.html:246
|
||||
msgid "Visualizza Task"
|
||||
msgstr "View Tasks"
|
||||
|
||||
#: templates/measure/task_list.html:248
|
||||
#: templates/measure/task_list.html:269
|
||||
msgid "Nessun task disponibile"
|
||||
msgstr "No tasks available"
|
||||
|
||||
#: templates/measure/task_list.html:251
|
||||
#: templates/measure/task_list.html:272
|
||||
msgid "Questa ricetta non ha ancora task definiti."
|
||||
msgstr "This recipe has no tasks defined yet."
|
||||
|
||||
@@ -2681,3 +2697,6 @@ msgstr "Error generating report"
|
||||
#~ msgid "Inizia Misure"
|
||||
#~ msgstr "Start Measurements"
|
||||
|
||||
#~ msgid "Utente non autorizzato (richiesto capoturno)"
|
||||
#~ msgstr "User not authorized (shift supervisor required)"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user