diff --git a/uniticket/locale/en/LC_MESSAGES/django.mo b/uniticket/locale/en/LC_MESSAGES/django.mo index 26a34a31..c445a952 100644 Binary files a/uniticket/locale/en/LC_MESSAGES/django.mo and b/uniticket/locale/en/LC_MESSAGES/django.mo differ diff --git a/uniticket/locale/en/LC_MESSAGES/django.po b/uniticket/locale/en/LC_MESSAGES/django.po index 2887f9e2..5495107f 100644 --- a/uniticket/locale/en/LC_MESSAGES/django.po +++ b/uniticket/locale/en/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-15 10:23+0200\n" -"PO-Revision-Date: 2024-10-15 11:18+0200\n" +"POT-Creation-Date: 2024-11-28 12:21+0100\n" +"PO-Revision-Date: 2024-11-28 12:21+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: en\n" @@ -68,8 +68,8 @@ msgstr "" msgid "eg: tax payer's identification number" msgstr "" -#: accounts/models.py:27 uni_ticket/forms.py:49 uni_ticket/forms.py:99 -#: uni_ticket/forms.py:251 uni_ticket/forms.py:717 +#: accounts/models.py:27 uni_ticket/forms.py:50 uni_ticket/forms.py:100 +#: uni_ticket/forms.py:252 uni_ticket/forms.py:725 #: uni_ticket_bootstrap_italia_template/templates/manager/category_add_ticket_user.html:43 #: uni_ticket_bootstrap_italia_template/templates/manager/category_input_module_detail.html:79 #: uni_ticket_bootstrap_italia_template/templates/manager/office_add_operator.html:43 @@ -102,19 +102,19 @@ msgstr "" msgid "Utenti" msgstr "Users" -#: accounts/views.py:43 +#: accounts/views.py:39 msgid "Dati salvati con successo" msgstr "Data saved successfully" -#: accounts/views.py:53 +#: accounts/views.py:49 msgid "Conferma la tua email cliccando qui {}" msgstr "Confirm your email address by clicking here {}" -#: accounts/views.py:57 +#: accounts/views.py:52 msgid "Conferma email" msgstr "Email confirmation" -#: accounts/views.py:64 +#: accounts/views.py:59 msgid "" "E' stata inviata un'email all'indirizzo di posta che hai indicato. Clicca " "sul link contenuto nel messaggio per confermare i nuovi dati" @@ -122,28 +122,28 @@ msgstr "" "An email has been sent to the email address you indicated. Click on the link " "in the message to confirm the new data" -#: accounts/views.py:69 +#: accounts/views.py:64 msgid "Dati errati" msgstr "Wrong data" -#: accounts/views.py:72 +#: accounts/views.py:67 #: uni_ticket_bootstrap_italia_template/templates/change_user_data.html:54 msgid "Modifica dati personali" msgstr "Edit personal data" -#: accounts/views.py:81 +#: accounts/views.py:76 msgid "Token mancante" msgstr "Missing token" -#: accounts/views.py:90 +#: accounts/views.py:85 msgid "Token non valido" msgstr "Invalid token" -#: accounts/views.py:107 +#: accounts/views.py:102 msgid "Token scaduto" msgstr "Expired token" -#: accounts/views.py:115 +#: accounts/views.py:110 #, fuzzy #| msgid "Attività aggiornata con successo" msgid "Email aggiornata con successo" @@ -946,7 +946,7 @@ msgstr "The ticket has not been assigned to this facility" msgid "Il ticket deve essere prima preso in carico per poter essere gestito" msgstr "The ticket must first be taken in charge in order to be managed" -#: uni_ticket/forms.py:50 uni_ticket/forms.py:252 uni_ticket/settings.py:92 +#: uni_ticket/forms.py:51 uni_ticket/forms.py:253 uni_ticket/settings.py:92 #: uni_ticket_bootstrap_italia_template/templates/manager/category_detail.html:123 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_detail.html:98 #: uni_ticket_bootstrap_italia_template/templates/manager/office_detail.html:93 @@ -955,82 +955,82 @@ msgstr "The ticket must first be taken in charge in order to be managed" msgid "Descrizione" msgstr "Description" -#: uni_ticket/forms.py:51 +#: uni_ticket/forms.py:52 #: uni_ticket_bootstrap_italia_template/templates/manager/category_detail.html:334 msgid "Solo i seguenti utenti possono effettuare richieste" msgstr "Only the following users can make requests" -#: uni_ticket/forms.py:52 uni_ticket/forms.py:53 +#: uni_ticket/forms.py:53 uni_ticket/forms.py:54 msgid "Accessibile a {}" msgstr "Accessible to {}" -#: uni_ticket/forms.py:64 uni_ticket/forms.py:67 uni_ticket/forms.py:727 -#: uni_ticket/forms.py:730 +#: uni_ticket/forms.py:65 uni_ticket/forms.py:68 uni_ticket/forms.py:735 +#: uni_ticket/forms.py:738 msgid "Formato {}. Lasciare vuoto per non impostare" msgstr "Format {}. Leave empty to not set" -#: uni_ticket/forms.py:70 +#: uni_ticket/forms.py:71 msgid "" "Se questa opzione è attiva sarà possibile accedere al modulo esclusivamente " "tramite URL diretto" msgstr "" -#: uni_ticket/forms.py:79 +#: uni_ticket/forms.py:80 msgid "Assegna competenza ufficio" msgstr "Assign office competence" -#: uni_ticket/forms.py:115 +#: uni_ticket/forms.py:116 #: uni_ticket_bootstrap_italia_template/templates/manager/category_detail.html:95 #: uni_ticket_bootstrap_italia_template/templates/manager/office_detail.html:68 #: uni_ticket_bootstrap_italia_template/templates/manager/user_settings.html:98 msgid "Denominazione" msgstr "Name" -#: uni_ticket/forms.py:116 +#: uni_ticket/forms.py:117 msgid "Tipo di campo" msgstr "Field type" -#: uni_ticket/forms.py:117 +#: uni_ticket/forms.py:118 msgid "Testo statico (Pre-text)" msgstr "Static text (Pre-text)" -#: uni_ticket/forms.py:118 +#: uni_ticket/forms.py:119 msgid "Definizione delle scelte" msgstr "Definition of choices" -#: uni_ticket/forms.py:119 +#: uni_ticket/forms.py:120 #: uni_ticket_bootstrap_italia_template/templates/manager/category_input_module_detail.html:82 msgid "Obbligatorio" msgstr "Required" -#: uni_ticket/forms.py:120 +#: uni_ticket/forms.py:121 #: uni_ticket_bootstrap_italia_template/templates/manager/category_input_module_detail.html:84 msgid "Aiuto" msgstr "Help" -#: uni_ticket/forms.py:121 uni_ticket/forms.py:427 uni_ticket/forms.py:453 -#: uni_ticket/forms.py:531 +#: uni_ticket/forms.py:122 uni_ticket/forms.py:435 uni_ticket/forms.py:461 +#: uni_ticket/forms.py:539 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:126 msgid "Ordinamento" msgstr "Sorting" -#: uni_ticket/forms.py:124 +#: uni_ticket/forms.py:125 msgid "Il nome che comparirà nel form" msgstr "The name that will appear on the form" -#: uni_ticket/forms.py:126 +#: uni_ticket/forms.py:127 msgid "Da visualizzare prima del campo (accetta formattazione Markdown)" msgstr "To be displayed before the field (accepts Markdown formatting)" -#: uni_ticket/forms.py:128 +#: uni_ticket/forms.py:129 msgid "Testo per guidare nella fase di compilazione" msgstr "Text to guide you in the compilation phase" -#: uni_ticket/forms.py:129 +#: uni_ticket/forms.py:130 msgid "Posizione nel form rispetto agli altri campi" msgstr "Position in the form with respect to the other fields" -#: uni_ticket/forms.py:131 +#: uni_ticket/forms.py:132 msgid "" "
  • La compilazione di quest'area di testo non avrà effetti sui campi che " "non accettano una serie di opzioni.
  • Se il campo prevede una serie di " @@ -1076,27 +1076,27 @@ msgstr "" "available here.
  • " -#: uni_ticket/forms.py:184 +#: uni_ticket/forms.py:185 msgid "Email agli uffici" msgstr "Mail to offices" -#: uni_ticket/forms.py:205 uni_ticket/forms.py:236 +#: uni_ticket/forms.py:206 uni_ticket/forms.py:237 msgid "Stato chiusura" msgstr "Closing state" -#: uni_ticket/forms.py:206 uni_ticket/forms.py:217 +#: uni_ticket/forms.py:207 uni_ticket/forms.py:218 msgid "Motivazione" msgstr "Grounds" -#: uni_ticket/forms.py:207 uni_ticket/forms.py:314 uni_ticket/forms.py:425 -#: uni_ticket/forms.py:454 uni_ticket/forms.py:528 +#: uni_ticket/forms.py:208 uni_ticket/forms.py:315 uni_ticket/forms.py:433 +#: uni_ticket/forms.py:462 uni_ticket/forms.py:536 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:103 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_detail.html:104 #: uni_ticket_bootstrap_italia_template/templates/task_detail.html:61 msgid "Allegato" msgstr "Attachment" -#: uni_ticket/forms.py:219 uni_ticket/forms.py:477 +#: uni_ticket/forms.py:220 uni_ticket/forms.py:485 #, python-brace-format msgid "" "Inserisci il tag {user} per inserire automaticamente il nome e cognome " @@ -1105,21 +1105,21 @@ msgstr "" "Enter the {user} tag to automatically insert the name and surname of the " "user who created the request" -#: uni_ticket/forms.py:253 +#: uni_ticket/forms.py:254 #: uni_ticket_bootstrap_italia_template/templates/manager/office_detail.html:101 #: uni_ticket_bootstrap_italia_template/templates/manager/offices_list.html:53 #: uni_ticket_bootstrap_italia_template/templates/operator/offices_list.html:32 msgid "Ad uso interno" msgstr "For internal use" -#: uni_ticket/forms.py:257 +#: uni_ticket/forms.py:258 msgid "" "Visibile esclusivamente all'interno della struttura quando si effettua un " "trasferimento di competenza" msgstr "" -#: uni_ticket/forms.py:281 uni_ticket/forms.py:292 uni_ticket/forms.py:424 -#: uni_ticket/forms.py:527 uni_ticket/forms.py:547 +#: uni_ticket/forms.py:282 uni_ticket/forms.py:293 uni_ticket/forms.py:432 +#: uni_ticket/forms.py:535 uni_ticket/forms.py:555 #: uni_ticket_bootstrap_italia_template/templates/datatables/table_header.html:28 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_detail.html:86 #: uni_ticket_bootstrap_italia_template/templates/task_detail.html:39 @@ -1127,7 +1127,7 @@ msgstr "" msgid "Priorità" msgstr "Priority" -#: uni_ticket/forms.py:312 uni_ticket/forms.py:422 uni_ticket/forms.py:525 +#: uni_ticket/forms.py:313 uni_ticket/forms.py:430 uni_ticket/forms.py:533 #: uni_ticket_bootstrap_italia_template/templates/datatables/table_header.html:19 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_detail.html:94 #: uni_ticket_bootstrap_italia_template/templates/task_detail.html:51 @@ -1135,57 +1135,78 @@ msgstr "Priority" msgid "Oggetto" msgstr "Subject" -#: uni_ticket/forms.py:313 uni_ticket/forms.py:423 uni_ticket/forms.py:452 -#: uni_ticket/forms.py:473 uni_ticket/forms.py:526 uni_ticket/forms.py:718 +#: uni_ticket/forms.py:314 uni_ticket/forms.py:431 uni_ticket/forms.py:460 +#: uni_ticket/forms.py:481 uni_ticket/forms.py:534 uni_ticket/forms.py:726 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:94 msgid "Testo" msgstr "Text" -#: uni_ticket/forms.py:357 +#: uni_ticket/forms.py:358 #: uni_ticket_bootstrap_italia_template/templates/management/add_ticket_competence.html:42 #: uni_ticket_bootstrap_italia_template/templates/management/statistics_content.html:66 #: uni_ticket_bootstrap_italia_template/templates/management/statistics_content.html:151 msgid "Ufficio" msgstr "Office" -#: uni_ticket/forms.py:358 +#: uni_ticket/forms.py:359 msgid "Continua a seguire" msgstr "Keep following" -#: uni_ticket/forms.py:359 +#: uni_ticket/forms.py:360 msgid "Sola lettura" msgstr "Read only" -#: uni_ticket/forms.py:361 +#: uni_ticket/forms.py:362 msgid "Ufficio selezionato" msgstr "Selected office" -#: uni_ticket/forms.py:376 +#: uni_ticket/forms.py:376 uni_ticket/models.py:504 uni_ticket/models.py:505 +#: uni_ticket_bootstrap_italia_template/templates/task_detail.html:47 +msgid "Ticket" +msgstr "" + +#: uni_ticket/forms.py:377 +msgid "Codice univoco identificativo della richiesta" +msgstr "Unique code identifying the request" + +#: uni_ticket/forms.py:379 #: uni_ticket_bootstrap_italia_template/templates/manager/office_add_operator.html:93 #: uni_ticket_bootstrap_italia_template/templates/manager/office_detail.html:247 msgid "Note" msgstr "Notes" -#: uni_ticket/forms.py:426 uni_ticket/forms.py:530 +#: uni_ticket/forms.py:394 +msgid "Non si può rendere un ticket dipendente da sè stesso" +msgstr "You cannot make a ticket dependent on itself" + +#: uni_ticket/forms.py:396 +msgid "Dipendenza già attiva" +msgstr "Already active dependency" + +#: uni_ticket/forms.py:414 +msgid "Ticket non trovato tra quelli gestiti" +msgstr "" + +#: uni_ticket/forms.py:434 uni_ticket/forms.py:538 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_detail.html:74 msgid "Visibile all'utente" msgstr "Visible to users" -#: uni_ticket/forms.py:451 +#: uni_ticket/forms.py:459 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:60 msgid "Titolo" msgstr "Title" -#: uni_ticket/forms.py:455 +#: uni_ticket/forms.py:463 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:114 msgid "Collassabile (in nuova richiesta)" msgstr "Collapsible (in new request)" -#: uni_ticket/forms.py:456 +#: uni_ticket/forms.py:464 msgid "Visibile nel documento di stampa" msgstr "Visible in the print document" -#: uni_ticket/forms.py:457 uni_ticket/forms.py:529 uni_ticket/forms.py:719 +#: uni_ticket/forms.py:465 uni_ticket/forms.py:537 uni_ticket/forms.py:727 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:42 #: uni_ticket_bootstrap_italia_template/templates/manager/category_condition_detail.html:68 #: uni_ticket_bootstrap_italia_template/templates/manager/category_conditions.html:40 @@ -1206,59 +1227,59 @@ msgstr "Visible in the print document" msgid "Attiva" msgstr "Active" -#: uni_ticket/forms.py:491 +#: uni_ticket/forms.py:499 msgid "Assegna tipologia di richiesta" msgstr "Assign type of request" -#: uni_ticket/forms.py:552 +#: uni_ticket/forms.py:560 msgid "Seleziona operatore" msgstr "Select operator" -#: uni_ticket/forms.py:577 +#: uni_ticket/forms.py:585 msgid "Seleziona l'ufficio" msgstr "Select the office" -#: uni_ticket/forms.py:688 uni_ticket/models.py:1625 +#: uni_ticket/forms.py:696 uni_ticket/models.py:1638 msgid "Denominazione configurazione" msgstr "Configuration name" -#: uni_ticket/forms.py:689 +#: uni_ticket/forms.py:697 msgid "Unità Organizzativa" msgstr "" -#: uni_ticket/forms.py:690 +#: uni_ticket/forms.py:698 msgid "RPA Unità Organizzativa" msgstr "" -#: uni_ticket/forms.py:691 +#: uni_ticket/forms.py:699 msgid "Username RPA Unità Organizzativa" msgstr "" -#: uni_ticket/forms.py:692 +#: uni_ticket/forms.py:700 msgid "Matricola RPA Unità Organizzativa" msgstr "RPA Organizational Unit code" -#: uni_ticket/forms.py:693 uni_ticket/models.py:1689 +#: uni_ticket/forms.py:701 uni_ticket/models.py:1702 msgid "Invia e-mail a RPA" msgstr "" -#: uni_ticket/forms.py:694 +#: uni_ticket/forms.py:702 msgid "Email riferimento" msgstr "Reference email" -#: uni_ticket/forms.py:695 +#: uni_ticket/forms.py:703 msgid "Titolario" msgstr "Holder" -#: uni_ticket/forms.py:696 +#: uni_ticket/forms.py:704 msgid "Numero Fascicolo" msgstr "Issue number" -#: uni_ticket/forms.py:697 +#: uni_ticket/forms.py:705 msgid "Anno Fascicolo" msgstr "Issue year" -#: uni_ticket/forms.py:700 +#: uni_ticket/forms.py:708 msgid "A discrezione dell'utente. Es: \"Configurazione anno 2020\"" msgstr "At the user's discretion. Ex: \"Configuration year 2020\"" @@ -1437,16 +1458,11 @@ msgstr "Input forms" msgid "Quando la richiesta è stata protocollata" msgstr "When the request was registered" -#: uni_ticket/models.py:504 uni_ticket/models.py:505 -#: uni_ticket_bootstrap_italia_template/templates/task_detail.html:47 -msgid "Ticket" -msgstr "" - -#: uni_ticket/models.py:705 uni_ticket/models.py:733 uni_ticket/models.py:1476 +#: uni_ticket/models.py:711 uni_ticket/models.py:739 uni_ticket/models.py:1489 msgid "Chiusa" msgstr "Closed" -#: uni_ticket/models.py:709 uni_ticket/models.py:1484 +#: uni_ticket/models.py:715 uni_ticket/models.py:1497 msgid "" "Chiusa {}" @@ -1454,16 +1470,16 @@ msgstr "" "Closed {}" -#: uni_ticket/models.py:722 uni_ticket/models.py:766 uni_ticket/models.py:1477 -#: uni_ticket/models.py:1496 +#: uni_ticket/models.py:728 uni_ticket/models.py:772 uni_ticket/models.py:1490 +#: uni_ticket/models.py:1509 msgid "Aperta" msgstr "Open" -#: uni_ticket/models.py:723 uni_ticket/models.py:767 +#: uni_ticket/models.py:729 uni_ticket/models.py:773 msgid "Assegnata {}" msgstr "Assigned {}" -#: uni_ticket/models.py:741 +#: uni_ticket/models.py:747 msgid "" "Chiusa {}" @@ -1471,124 +1487,124 @@ msgstr "" "Closed {}" -#: uni_ticket/models.py:783 +#: uni_ticket/models.py:789 msgid "{} - richiesta {} aggiornata" msgstr "{} - request {} updated" -#: uni_ticket/models.py:1083 uni_ticket/models.py:1090 +#: uni_ticket/models.py:1089 uni_ticket/models.py:1096 msgid "Da assegnare" msgstr "To assign" -#: uni_ticket/models.py:1156 +#: uni_ticket/models.py:1162 msgid "Risposta predefinita" msgstr "Default response" -#: uni_ticket/models.py:1157 +#: uni_ticket/models.py:1163 #: uni_ticket_bootstrap_italia_template/templates/manager/category_options.html:84 msgid "Risposte predefinite" msgstr "Default replies" -#: uni_ticket/models.py:1190 uni_ticket/models.py:1191 +#: uni_ticket/models.py:1201 uni_ticket/models.py:1202 msgid "Competenza Ticket" msgstr "Ticket Competence" -#: uni_ticket/models.py:1313 uni_ticket/models.py:1314 +#: uni_ticket/models.py:1326 uni_ticket/models.py:1327 msgid "Domande/Risposte Ticket" msgstr "Ticket Questions / Repl" -#: uni_ticket/models.py:1368 +#: uni_ticket/models.py:1381 msgid "Dipendenza Ticket" msgstr "Ticket depencende" -#: uni_ticket/models.py:1369 +#: uni_ticket/models.py:1382 msgid "Dipendenze Ticket" msgstr "Ticket dependencies" -#: uni_ticket/models.py:1449 uni_ticket/models.py:1450 +#: uni_ticket/models.py:1462 uni_ticket/models.py:1463 msgid "Task" msgstr "" -#: uni_ticket/models.py:1517 +#: uni_ticket/models.py:1530 msgid "Dipendenza Ticket da Task" msgstr "Ticket dependency on Task" -#: uni_ticket/models.py:1518 +#: uni_ticket/models.py:1531 msgid "Dipendenze Ticket da Task" msgstr "Ticket dependencies on Task" -#: uni_ticket/models.py:1541 +#: uni_ticket/models.py:1554 msgid "Visibile nella versione stampabile" msgstr "Visible in the printable version" -#: uni_ticket/models.py:1543 +#: uni_ticket/models.py:1556 msgid "Collassabile" msgstr "Collassable" -#: uni_ticket/models.py:1544 +#: uni_ticket/models.py:1557 msgid "Visibile agli utenti" msgstr "Visible to users" -#: uni_ticket/models.py:1548 +#: uni_ticket/models.py:1561 msgid "Clausola tipologia di richiesta ticket" msgstr "Type of ticket request clause" -#: uni_ticket/models.py:1549 +#: uni_ticket/models.py:1562 msgid "Clausole tipologia di richiesta ticket" msgstr "Clause type of ticket request" -#: uni_ticket/models.py:1569 +#: uni_ticket/models.py:1582 msgid "Visibile nei ticket" msgstr "Visible on tickets" -#: uni_ticket/models.py:1573 +#: uni_ticket/models.py:1586 msgid "Task predefinito" msgstr "Default task" -#: uni_ticket/models.py:1574 +#: uni_ticket/models.py:1587 msgid "Task predefiniti" msgstr "Default tasks" -#: uni_ticket/models.py:1642 +#: uni_ticket/models.py:1655 msgid "Configurazione WS Protocollo Struttura" msgstr "Protocol WS structure configuration" -#: uni_ticket/models.py:1643 +#: uni_ticket/models.py:1656 msgid "Configurazioni WS Protocollo Strutture" msgstr "Protocol WS structures configuration" -#: uni_ticket/models.py:1672 +#: uni_ticket/models.py:1685 msgid "Nominativo RPA" msgstr "RPA name" -#: uni_ticket/models.py:1679 +#: uni_ticket/models.py:1692 msgid "Username RPA sul sistema di protocollo" msgstr "RPA username on the protocol system" -#: uni_ticket/models.py:1686 +#: uni_ticket/models.py:1699 msgid "Matricola RPA sul sistema di protocollo" msgstr "RPA code on the protocol system" -#: uni_ticket/models.py:1698 +#: uni_ticket/models.py:1711 msgid "Codice titolario" msgstr "Holder code" -#: uni_ticket/models.py:1701 +#: uni_ticket/models.py:1714 msgid "Fascicolo numero" msgstr "Issue number" -#: uni_ticket/models.py:1704 +#: uni_ticket/models.py:1717 msgid "Fascicolo anno" msgstr "Issue year" -#: uni_ticket/models.py:1709 +#: uni_ticket/models.py:1722 msgid "Configurazione WS Protocollo Categoria" msgstr "Protocol WS category configuration" -#: uni_ticket/models.py:1710 +#: uni_ticket/models.py:1723 msgid "Configurazioni WS Protocollo Categorie" msgstr "Protocol WS categories configuration" -#: uni_ticket/models.py:1735 +#: uni_ticket/models.py:1748 msgid "Alert di struttura agli utenti" msgstr "Structure alert to users" @@ -1989,6 +2005,7 @@ msgid "Nessuna e-mail impostata per l'utente" msgstr "No email set for user" #: uni_ticket/views/generic.py:319 +#: uni_ticket_bootstrap_italia_template/templates/change_user_data.html:28 msgid "Gestione account" msgstr "Account management" @@ -2088,7 +2105,7 @@ msgstr "All requests" msgid "Aggiungi dipendenza da richiesta" msgstr "Add request dependency" -#: uni_ticket/views/management.py:548 +#: uni_ticket/views/management.py:550 msgid "" "La dipendenza non può essere aggiunta. La richiesta {} è dipendente " "da altre richieste" @@ -2096,7 +2113,7 @@ msgstr "" "Dependency cannot be added. The request {} is dependent on other " "requests" -#: uni_ticket/views/management.py:563 +#: uni_ticket/views/management.py:565 msgid "" "La dipendenza non può essere aggiunta. Ci sono richieste che dipendono da " "quella corrente {}" @@ -2104,15 +2121,15 @@ msgstr "" "Dependency cannot be added. There are requests that depend on the current " "one {} " -#: uni_ticket/views/management.py:589 +#: uni_ticket/views/management.py:591 msgid "Aggiunta dipendenza dalla richiesta: {}" msgstr "Request dependency added: {}" -#: uni_ticket/views/management.py:597 +#: uni_ticket/views/management.py:599 msgid "Dipendenza dalla richiesta {} aggiunta con successo" msgstr "Dependency on request {} successfully added" -#: uni_ticket/views/management.py:658 +#: uni_ticket/views/management.py:660 msgid "" "La richiesta {} non è stata assegnata a questa struttura, pertanto " "non puoi gestirla" @@ -2120,27 +2137,27 @@ msgstr "" "The request {} has not been assigned to this facility, therefore you " "cannot handle it" -#: uni_ticket/views/management.py:675 +#: uni_ticket/views/management.py:677 msgid "Rimossa dipendenza dalla richiesta: {}" msgstr "Request dependency removed: {} a" -#: uni_ticket/views/management.py:678 +#: uni_ticket/views/management.py:680 msgid "Dipendenza rimossa correttamente" msgstr "Dependency removed correctly" -#: uni_ticket/views/management.py:752 +#: uni_ticket/views/management.py:754 msgid "Non è possibile chiudere la richiesta, ci sono dipendenze attive!" msgstr "The request cannot be closed, there are active dependencies!" -#: uni_ticket/views/management.py:755 uni_ticket/views/user.py:1410 +#: uni_ticket/views/management.py:757 uni_ticket/views/user.py:1410 msgid "Chiusura della richiesta" msgstr "Closing the request" -#: uni_ticket/views/management.py:793 +#: uni_ticket/views/management.py:795 msgid "Chiusura richiesta ({}): {}" msgstr "Request closure ({}): {}" -#: uni_ticket/views/management.py:807 +#: uni_ticket/views/management.py:809 msgid "" "Richiesta {} chiusa correttamente
    Clicca qui per tornare alle richieste assegnate" @@ -2148,21 +2165,21 @@ msgstr "" "Request {} successfully closed
    Click here to return to the assigned requests " -#: uni_ticket/views/management.py:870 +#: uni_ticket/views/management.py:872 msgid "La richiesta {} non è stata chiusa" msgstr "Request {} has not been closed" -#: uni_ticket/views/management.py:884 +#: uni_ticket/views/management.py:886 msgid "La richiesta {} non può essere riaperta" msgstr "Request {} cannot be reopened" -#: uni_ticket/views/management.py:898 +#: uni_ticket/views/management.py:900 msgid "" "La richiesta {} è stata chiusa dall'utente, pertanto non può essere riaperta" msgstr "" "The request {} has been closed by the user, therefore it cannot be reopened" -#: uni_ticket/views/management.py:912 +#: uni_ticket/views/management.py:914 msgid "" "Nessuno degli uffici assegnati in precedenza può prendere nuovamente in " "carico la richiesta {} e pertanto questa non può essere riaperta" @@ -2170,51 +2187,51 @@ msgstr "" "None of the previously assigned offices can re-process the request {} and " "therefore it cannot be reopened" -#: uni_ticket/views/management.py:920 +#: uni_ticket/views/management.py:922 #: uni_ticket_bootstrap_italia_template/templates/management/ticket_detail.html:274 #: uni_ticket_bootstrap_italia_template/templates/user/ticket_detail.html:93 msgid "Riapertura richiesta" msgstr "Reopening request" -#: uni_ticket/views/management.py:931 uni_ticket/views/user.py:1567 +#: uni_ticket/views/management.py:933 uni_ticket/views/user.py:1567 msgid "Richiesta {} riaperta correttamente" msgstr "Request {} reopened successfully" -#: uni_ticket/views/management.py:1006 uni_ticket/views/management.py:1238 +#: uni_ticket/views/management.py:1008 uni_ticket/views/management.py:1240 msgid "Trasferisci competenza richiesta" msgstr "Transfer request competence" -#: uni_ticket/views/management.py:1102 +#: uni_ticket/views/management.py:1104 msgid "Impossibile assegnare la richiesta all'ufficio selezionato" msgstr "Unable to assign request to selected office" -#: uni_ticket/views/management.py:1120 +#: uni_ticket/views/management.py:1122 msgid "La richiesta è già di competenza dell'ufficio {}" msgstr "The request is already the responsibility of the {} office" -#: uni_ticket/views/management.py:1146 uni_ticket/views/management.py:2339 +#: uni_ticket/views/management.py:1148 uni_ticket/views/management.py:2341 msgid "Competenza abbandonata da Ufficio: {}" msgstr "Competence abandoned by Office: {}" -#: uni_ticket/views/management.py:1162 +#: uni_ticket/views/management.py:1164 msgid "L'ufficio {} non può essere posto in sola lettura" msgstr "The {} office cannot be put in read-only" -#: uni_ticket/views/management.py:1170 +#: uni_ticket/views/management.py:1172 msgid "" "Competenza trasferita da Ufficio: {}. (L'ufficio ha mantenuto accesso in " "sola lettura)" msgstr "Competence transferred from Office: {}. (Office kept read-only access)" -#: uni_ticket/views/management.py:1180 +#: uni_ticket/views/management.py:1182 msgid "Competenza {} aggiunta correttamente" msgstr "Competence {} added successfully" -#: uni_ticket/views/management.py:1187 +#: uni_ticket/views/management.py:1189 msgid "Nuova competenza: {}" msgstr "New competence: {}" -#: uni_ticket/views/management.py:1309 uni_ticket/views/user.py:1254 +#: uni_ticket/views/management.py:1311 uni_ticket/views/user.py:1254 #: uni_ticket_bootstrap_italia_template/templates/management/ticket_detail.html:255 #: uni_ticket_bootstrap_italia_template/templates/manager/counters.html:36 #: uni_ticket_bootstrap_italia_template/templates/manager/counters.html:82 @@ -2232,144 +2249,144 @@ msgstr "New competence: {}" msgid "Messaggi" msgstr "Messages" -#: uni_ticket/views/management.py:1342 +#: uni_ticket/views/management.py:1344 msgid "La richiesta deve essere prima presa in carico" msgstr "The request must first be processed" -#: uni_ticket/views/management.py:1354 uni_ticket/views/user.py:1276 +#: uni_ticket/views/management.py:1356 uni_ticket/views/user.py:1276 msgid "La richiesta non è modificabile" msgstr "The request cannot be modified" -#: uni_ticket/views/management.py:1372 +#: uni_ticket/views/management.py:1374 msgid "Nuovo messaggio (da operatore {}). Oggetto: {} / Testo: {}" msgstr "New message (from operator {}). Subject: {} / Text: {}" -#: uni_ticket/views/management.py:1379 +#: uni_ticket/views/management.py:1381 msgid "ricevuto" msgstr "received" -#: uni_ticket/views/management.py:1391 +#: uni_ticket/views/management.py:1393 msgid "{} - richiesta {} nuovo messaggio" msgstr "{} - request {} new message" -#: uni_ticket/views/management.py:1403 uni_ticket/views/user.py:1354 +#: uni_ticket/views/management.py:1405 uni_ticket/views/user.py:1354 msgid "Messaggio inviato con successo" msgstr "The message has been successfully sent" -#: uni_ticket/views/management.py:1485 +#: uni_ticket/views/management.py:1487 msgid "Aggiungi Attività" msgstr "Add task" -#: uni_ticket/views/management.py:1506 +#: uni_ticket/views/management.py:1508 msgid "Aggiunta attività: {}" msgstr "Task added: {}" -#: uni_ticket/views/management.py:1513 +#: uni_ticket/views/management.py:1515 msgid "Attività {} creata con successo" msgstr "Task {} successfully created" -#: uni_ticket/views/management.py:1575 +#: uni_ticket/views/management.py:1577 msgid "Rimossa attività: {}" msgstr "Removed task: {}" -#: uni_ticket/views/management.py:1579 +#: uni_ticket/views/management.py:1581 msgid "Attività {} rimossa correttamente" msgstr "Task {} successfully removed" -#: uni_ticket/views/management.py:1659 +#: uni_ticket/views/management.py:1661 msgid "Dettaglio attività" msgstr "Task details" -#: uni_ticket/views/management.py:1697 uni_ticket/views/management.py:2100 +#: uni_ticket/views/management.py:1699 uni_ticket/views/management.py:2102 msgid "Impossibile modificare un'attività chiusa" msgstr "Unable to edit a closed task" -#: uni_ticket/views/management.py:1710 +#: uni_ticket/views/management.py:1712 msgid "Task {} - Priorità assegnata: {}" msgstr "Task {} - Priority assigned: {}" -#: uni_ticket/views/management.py:1726 uni_ticket/views/management.py:2136 +#: uni_ticket/views/management.py:1728 uni_ticket/views/management.py:2138 msgid "Attività aggiornata con successo" msgstr "Task updated successfully" -#: uni_ticket/views/management.py:1819 +#: uni_ticket/views/management.py:1821 msgid "Attività già chiusa!" msgstr "Already closed task!" -#: uni_ticket/views/management.py:1824 uni_ticket/views/management.py:1973 +#: uni_ticket/views/management.py:1826 uni_ticket/views/management.py:1975 msgid "La richiesta {} è chiusa" msgstr "Request {} is closed" -#: uni_ticket/views/management.py:1828 +#: uni_ticket/views/management.py:1830 msgid "Chiusura dell'attività" msgstr "Closing task" -#: uni_ticket/views/management.py:1857 +#: uni_ticket/views/management.py:1859 msgid "Chiusura attività ({}): {} - {}" msgstr "Closing task ({}): {} - {}" -#: uni_ticket/views/management.py:1903 +#: uni_ticket/views/management.py:1905 msgid "Attività {} chiusa correttamente" msgstr "Task {} closed successfully" -#: uni_ticket/views/management.py:1960 +#: uni_ticket/views/management.py:1962 msgid "L'attività non è stata chiusa" msgstr "The task has not been closed" -#: uni_ticket/views/management.py:1988 +#: uni_ticket/views/management.py:1990 msgid "Riapertura attività {}" msgstr "Reopening task {}" -#: uni_ticket/views/management.py:2005 +#: uni_ticket/views/management.py:2007 msgid "Attività {} riaperta correttamente" msgstr "Task {} reopened successfully" -#: uni_ticket/views/management.py:2080 uni_ticket/views/manager.py:2880 +#: uni_ticket/views/management.py:2082 uni_ticket/views/manager.py:2880 #: uni_ticket_bootstrap_italia_template/templates/management/task_detail.html:140 #: uni_ticket_bootstrap_italia_template/templates/management/task_edit.html:20 #: uni_ticket_bootstrap_italia_template/templates/manager/category_task_edit.html:20 msgid "Modifica attività" msgstr "Edit task" -#: uni_ticket/views/management.py:2112 +#: uni_ticket/views/management.py:2114 msgid "Modifica attività {}" msgstr "Edit task {}" -#: uni_ticket/views/management.py:2115 +#: uni_ticket/views/management.py:2117 msgid " e Priorità assegnata: {}" msgstr " and Priority assigned: {}" -#: uni_ticket/views/management.py:2202 +#: uni_ticket/views/management.py:2204 msgid "Permessi di modifica dell'attività mancanti" msgstr "Missing task modification permissions" -#: uni_ticket/views/management.py:2212 uni_ticket/views/manager.py:2960 +#: uni_ticket/views/management.py:2214 uni_ticket/views/manager.py:2960 msgid "Allegato attività {} eliminato" msgstr "Task attachment {} deleted" -#: uni_ticket/views/management.py:2214 +#: uni_ticket/views/management.py:2216 msgid "Allegato eliminato" msgstr "Attachment deleted" -#: uni_ticket/views/management.py:2252 +#: uni_ticket/views/management.py:2254 msgid "Ticket {} correttamente assegnato a Ufficio: {} [{}]" msgstr "Ticket {} correctly assigned to Office: {} [{}] " -#: uni_ticket/views/management.py:2302 +#: uni_ticket/views/management.py:2304 msgid "Abbandona competenza richiesta" msgstr "Leave request competence" -#: uni_ticket/views/management.py:2304 +#: uni_ticket/views/management.py:2306 msgid "" "Seleziona l'ufficio che deve abbandonare la competenza sulla richiesta \"{}\"" msgstr "" "Select the office that should abandon competence over the request \"{}\"" -#: uni_ticket/views/management.py:2346 +#: uni_ticket/views/management.py:2348 msgid "Competenza ufficio {} abbandonata con successo" msgstr "Office {} competence successfully abandoned" -#: uni_ticket/views/management.py:2357 +#: uni_ticket/views/management.py:2359 #, fuzzy #| msgid "" #| "Operazione non consentita
    Rimuovendo la competenza di {} Operation not allowed
    By removing the competence of {} , the request would no longer be handled by any office." -#: uni_ticket/views/management.py:2392 uni_ticket/views/management.py:2442 +#: uni_ticket/views/management.py:2394 uni_ticket/views/management.py:2444 msgid "Forbidden" msgstr "" -#: uni_ticket/views/management.py:2441 +#: uni_ticket/views/management.py:2443 msgid "Nessun record da esportare" msgstr "No records" -#: uni_ticket/views/management.py:2469 +#: uni_ticket/views/management.py:2471 msgid "" "La data di inizio non può essere successiva a quella di fine. La data di " "inizio è stata corretta a {} e quella di fine a {}" @@ -2397,7 +2414,7 @@ msgstr "" "The start date cannot be later than the end date. The start date has been " "corrected to {} and the end date to {}" -#: uni_ticket/views/management.py:2482 +#: uni_ticket/views/management.py:2484 msgid "" "La finestra oraria massima per le statistiche è di {} giorni. La data di " "inizio è stata corretta a {}" @@ -2405,12 +2422,12 @@ msgstr "" "The maximum time window for statistics is {} days. The start date has been " "corrected to {}" -#: uni_ticket/views/management.py:2512 +#: uni_ticket/views/management.py:2514 #: uni_ticket_bootstrap_italia_template/templates/manager/main_menu.html:39 msgid "Statistiche" msgstr "" -#: uni_ticket/views/management.py:2513 +#: uni_ticket/views/management.py:2515 msgid "Struttura {} - dal {} al {}" msgstr "" @@ -3242,11 +3259,6 @@ msgstr "I accept" msgid "Dashboard" msgstr "" -#: uni_ticket_bootstrap_italia_template/templates/change_user_data.html:28 -#: uni_ticket_bootstrap_italia_template/templates/user/main_menu.html:42 -msgid "Account" -msgstr "" - #: uni_ticket_bootstrap_italia_template/templates/change_user_data.html:66 msgid "Vuoi confermare i dati immessi?" msgstr "Do you want confirm the entered data?" @@ -5490,6 +5502,10 @@ msgstr "New request" msgid "Inizia nuova chat" msgstr "Start new chat" +#: uni_ticket_bootstrap_italia_template/templates/user/main_menu.html:42 +msgid "Account" +msgstr "" + #: uni_ticket_bootstrap_italia_template/templates/user/new_chat_preload.html:41 msgid "Seleziona la struttura con la quale collegarti in Chat" msgstr "Select the structure with which to connect in Chat" @@ -5616,11 +5632,11 @@ msgstr "Other informations" msgid "E-mail" msgstr "" -#: uni_ticket_project/settingslocal.py:358 +#: uni_ticket_project/settingslocal.py:363 msgid "Italiano" msgstr "Italian" -#: uni_ticket_project/settingslocal.py:359 +#: uni_ticket_project/settingslocal.py:364 msgid "Inglese" msgstr "English" diff --git a/uniticket/uni_ticket/forms.py b/uniticket/uni_ticket/forms.py index bbeb46ca..1cb2495c 100644 --- a/uniticket/uni_ticket/forms.py +++ b/uniticket/uni_ticket/forms.py @@ -1,6 +1,7 @@ from django import forms from django.conf import settings from django.contrib.auth import get_user_model +from django.core.exceptions import ValidationError from django.forms import ModelChoiceField, ModelForm from django.forms.widgets import CheckboxSelectMultiple from django.utils.translation import gettext_lazy as _ @@ -369,43 +370,50 @@ def label_from_instance(self, obj): class TicketDependenceForm(forms.Form): """ """ - ticket = MyDependenceChoiceField( - queryset=None, required=True, widget=BootstrapItaliaSelectWidget - ) + # ticket = MyDependenceChoiceField( + # queryset=None, required=True, widget=BootstrapItaliaSelectWidget + # ) + ticket = forms.CharField(label=_("Ticket"), required=True, + help_text=_("Codice univoco identificativo della richiesta")) note = forms.CharField( label=_("Note"), widget=forms.Textarea(attrs={"rows": 2}), required=True ) def __init__(self, *args, **kwargs): - user = kwargs.pop("user", None) - structure = kwargs.pop("structure", None) - current_ticket_id = kwargs.pop("ticket_id", None) - ticket_dependences_pk_list = kwargs.pop("ticket_dependences", []) - ticket_id_list = [] + self.user = kwargs.pop("user", None) + self.structure = kwargs.pop("structure", None) + self.current_ticket_code = kwargs.pop("ticket_code", None) + self.current_ticket_id = kwargs.pop("ticket_id", None) + self.ticket_dependences_pk_list = kwargs.pop("ticket_dependences", []) + super().__init__(*args, **kwargs) + + def clean_ticket(self): + code = self.cleaned_data["ticket"] + + if code == self.current_ticket_code: + raise ValidationError(_("Non si può rendere un ticket dipendente da sè stesso")) + if code in self.ticket_dependences_pk_list: + raise ValidationError(_("Dipendenza già attiva")) + # if user is manager/default_office operator: - # he views all tickets followed by structure offices - if user_is_manager(user, structure) or user_is_in_default_office( - user, structure - ): - ticket_id_list = TicketAssignment.get_ticket_per_structure( - structure) + # search in structure offices + if user_is_manager(self.user, self.structure) or user_is_in_default_office(self.user, self.structure): + ticket_id_list = TicketAssignment.get_ticket_per_structure(structure=self.structure, + ticket_codes=[code]) # if user is operator: - # he views all tickets followed in his offices + # search in his offices tickets else: - user_offices = user_is_operator(user, structure) + user_offices = user_is_operator(self.user, self.structure) offices_list = user_offices_list(user_offices) ticket_id_list = TicketAssignment.get_ticket_in_office_list( offices_list=offices_list, - taken=True) - ticket_id_list = ticket_id_list.exclude(ticket__pk=current_ticket_id) - cleaned_list = [ - pk for pk in ticket_id_list if pk not in ticket_dependences_pk_list - ] - ticket_list = Ticket.objects.filter( - pk__in=cleaned_list, is_closed=False) - super().__init__(*args, **kwargs) - self.fields["ticket"].queryset = ticket_list - self.fields["ticket"].to_field_name = "code" + taken=True, + ticket_codes=[code]) + + if not ticket_id_list: + raise ValidationError(_("Ticket non trovato tra quelli gestiti")) + + return Ticket.objects.get(code=code) class Media: js = ("js/textarea-autosize.js",) diff --git a/uniticket/uni_ticket/models.py b/uniticket/uni_ticket/models.py index 03e7b03b..a82c2665 100644 --- a/uniticket/uni_ticket/models.py +++ b/uniticket/uni_ticket/models.py @@ -1207,7 +1207,8 @@ def get_ticket_per_structure(structure, closed=None, taken=None, taken_by=None, - priority_first=True): + priority_first=True, + ticket_codes=[]): """ """ q_base = Q(office__organizational_structure=structure, office__is_active=True) @@ -1224,18 +1225,21 @@ def get_ticket_per_structure(structure, if taken_by: q_base &= Q(taken_by=taken_by) + if ticket_codes: + q_base &= Q(ticket__code__in=ticket_codes) + ordering_list = ["ticket__priority", "-ticket__created"] if not priority_first: ordering_list.remove("ticket__priority") - ticket_assignments = TicketAssignment.objects\ + tickets = TicketAssignment.objects\ .filter( q_base ).values_list("ticket__pk", flat=True)\ .order_by(*ordering_list)\ .distinct() - return ticket_assignments + return tickets @staticmethod def get_ticket_in_office_list(offices_list, @@ -1243,37 +1247,37 @@ def get_ticket_in_office_list(offices_list, closed=None, taken=None, taken_by=None, - priority_first=True): + priority_first=True, + ticket_codes=[]): """ """ q_base = Q(office__in=offices_list, office__is_active=True) + if closed is not None: + q_base &= Q(ticket__is_closed=closed) + + if taken is not None: + q_base &= Q(taken_date__isnull=not taken) - q_closed = Q() - if closed == True: q_closed = Q(ticket__is_closed=True) - elif closed == False: q_closed = Q(ticket__is_closed=False) + if follow_check: + q_base &= Q(follow=True) - q_taken = Q() - if taken == True: q_taken = Q(taken_date__isnull=False) - elif taken == False: q_taken = Q(taken_date__isnull=True) + if taken_by: + q_base &= Q(taken_by=taken_by) - q_taken_by = Q(taken_by=taken_by) if taken_by else Q() - q_follow = Q(follow=True) if follow_check else Q() + if ticket_codes: + q_base &= Q(ticket__code__in=ticket_codes) ordering_list = ["ticket__priority", "-ticket__created"] if not priority_first: ordering_list.remove("ticket__priority") - ticket_assignments = TicketAssignment.objects.filter( + tickets = TicketAssignment.objects.filter( q_base, - q_closed, - q_taken, - q_taken_by, - q_follow ).values_list("ticket__pk", flat=True)\ .order_by(*ordering_list)\ .distinct() - return ticket_assignments + return tickets def save(self, *args, **kwargs): super().save(*args, **kwargs) diff --git a/uniticket/uni_ticket/views/management.py b/uniticket/uni_ticket/views/management.py index 45908cae..5f4ca723 100644 --- a/uniticket/uni_ticket/views/management.py +++ b/uniticket/uni_ticket/views/management.py @@ -526,6 +526,7 @@ def ticket_dependence_add_new( form = TicketDependenceForm( user=request.user, structure=structure, + ticket_code=ticket.code, ticket_id=ticket.pk, ticket_dependences=ticket_dependences_code_list, ) @@ -534,6 +535,7 @@ def ticket_dependence_add_new( request.POST, user=request.user, structure=structure, + ticket_code=ticket.code, ticket_id=ticket.pk, ticket_dependences=ticket_dependences_code_list, )