diff --git a/helpdesk/fixtures/initial_data.json b/helpdesk/fixtures/initial_data.json index a8bbffe5..18a97d24 100644 --- a/helpdesk/fixtures/initial_data.json +++ b/helpdesk/fixtures/initial_data.json @@ -766,5 +766,197 @@ "subject": "(Mis \u00e0 jour)", "template_name": "updated_submitter" } + }, + { + "pk": 65, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "assigned_cc", + "plain_text": "Salve,\r\n\r\nTi \u00e8 stata inviata questa email per informarti che il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }} {% if ticket.assigned_to %}\u00e8 stato assegnato a {{ ticket.assigned_to }}{% else %}non \u00e8 pi\u00f9 assegnato{% endif %}.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione del ticket era:\r\n\r\n{{ ticket.description }}", + "html": "
Salve,
\r\n\r\nTi \u00e8 stata inviata questa email per informarti che il ticket {{ ticket.ticket }} ({{ ticket.title }}) per {{ ticket.submitter_email }} {% if ticket.assigned_to %}\u00e8 stato assegnato a {{ ticket.assigned_to }}{% else %}non \u00e8 pi\u00f9 assegnato{% endif %}.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione del ticket era:
\r\n\r\n{{ ticket.description }}", + "heading": "Ticket Assegnato", + "subject": "(Assegnato)" + } + }, + { + "pk": 66, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "assigned_owner", + "plain_text": "Salve,\r\n\r\nTi \u00e8 stata inviata questa email per informarti che ti \u00e8 stato assegnato il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }}.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione del ticket \u00e8:\r\n\r\n{{ ticket.description }}", + "html": "
Salve,
\r\n\r\nTi \u00e8 stata inviata questa email per informarti che ti \u00e8 stato assegnato il ticket {{ ticket.ticket }} ({{ ticket.title }}) per {{ ticket.submitter_email }}.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
La descrizione del ticket \u00e8:
\r\n\r\n{{ ticket.description }}", + "heading": "Ticket Assegnato A Te", + "subject": "(Assegnato a Te)" + } + }, + { + "pk": 67, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "closed_cc", + "plain_text": "Salve,\r\n\r\nIl ticket {{ ticket.title }} (\"{{ ticket.title }}\"){% if ticket.assigned_to %}, assegnato a {{ ticket.assigned_to }}{% endif %} \u00e8 stato chiuso.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione del ticket \u00e8:\r\n\r\n{{ ticket.description }}\r\n\r\nLa risoluzione fornita \u00e8:\r\n\r\n{{ resolution }}", + "html": "
Salve,
\r\n\r\nIl ticket {{ ticket.title }} ('{{ ticket.title }}'){% if ticket.assigned_to %}, assegnato a {{ ticket.get_assigned_to }}{% endif %} \u00e8 stato chiuso.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
La descrizione del ticket \u00e8:
\r\n\r\n{{ ticket.description }}\r\n\r\n
La risoluzione fornita \u00e8:
\r\n\r\n{{ resolution }}\r\n\r\n
Se vuoi vedere questo ticket online, puoi visitare l'indirizzo {{ ticket.staff_url }}.
", + "heading": "Ticket Chiuso", + "subject": "(Closed)" + } + }, + { + "pk": 68, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "closed_owner", + "plain_text": "Salve,\r\n\r\nIl ticket seguente, correntemente a te assegnato, \u00e8 stato chiuso.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nSe vuoi vedere il ticket online, puoi visitare l'indirizzo {{ ticket.staff_url }}.", + "html": "Salve,
\r\n\r\nIl ticket seguente, correntemente a te assegnato, \u00e8 stato chiuso.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
La descrizione del ticket \u00e8:
\r\n\r\n{{ ticket.description }}\r\n\r\n
La risoluzione fornita \u00e8:
\r\n\r\n{{ ticket.resolution }}", + "heading": "Ticket Chiuso", + "subject": "(Chiuso)" + } + }, + { + "pk": 69, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "closed_submitter", + "plain_text": "Salve,\r\n\r\nHai recentemente inserito un ticket dall'oggetto \"{{ ticket.title }}\". Questa email ti \u00e8 inviata come conferma della chiusura del ticket.\r\n\r\nSe credi che ci sia bisogno di ulteriore lavoro per questo ticket, per cortesia faccelo sapere rispondendo a questa email mantenendone invariato l'oggetto.\r\n\r\nSe vuoi vedere il ticket online, puoi visitare l'indirizzo {{ ticket.ticket_url }}.\r\n\r\nLa risoluzione fornita \u00e8:\r\n\r\n{{ ticket.resolution }}", + "html": "
Salve,
\r\n\r\nHai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email ti \u00e8 inviata come conferma della chiusura del ticket..
\r\n\r\nLa risoluzione fornita \u00e8:
\r\n\r\n{{ ticket.resolution }}\r\n\r\n
Se vuoi vedere il ticket online, puoi visitare l'indirizzo {{ ticket.ticket_url }}. Se credi che ci sia bisogno di ulteriore lavoro per questo ticket, per cortesia faccelo sapere rispondendo a questa email mantenendone invariato l'oggetto.\r\n
", + "heading": "Ticket Chiuso", + "subject": "(Closed)" + } + }, + { + "pk": 70, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "escalated_cc", + "plain_text": "Salve,\r\n\r\nTi \u00e8 stata inviata questa email per informarti che la priorit\u00e0 del ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") \u00e8 stata aumentata automaticamente.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione originale del ticket era:\r\n\r\n{{ ticket.description }}", + "html": "Salve,
\r\n\r\nTi \u00e8 stata inviata questa email per informarti che la priorit\u00e0 del ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") \u00e8 stata aumentata automaticamente.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione originale del ticket era:
\r\n\r\n{{ ticket.description }}", + "heading": "Priorit\u00e0 Aumentata", + "subject": "(Priorit\u00e0)" + } + }, + { + "pk": 71, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "escalated_owner", + "plain_text": "Salve,\r\n\r\nLa priorit\u00e0 di un ticket a te assegnato \u00e8 stata automaticamente aumentata in quanto questo \u00e8 stato aperto pi\u00f9 del previsto.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione originale del ticket era:\r\n\r\n{{ ticket.description }}\r\n\r\nEsamina questo ticket e cerca di fornire una soluzione al pi\u00f9 presto.", + "html": "
Salve,
\r\n\r\nLa priorit\u00e0 di un ticket a te assegnato \u00e8 stata automaticamente aumentata in quanto questo \u00e8 stato aperto pi\u00f9 del previsto.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione originale del ticket era:
\r\n\r\n{{ ticket.description }}", + "heading": "La Priorit\u00e0 Di Un Ticket A Te Assegnato \u00e8 Stata Aumentata", + "subject": "(Priorit\u00e0)" + } + }, + { + "pk": 72, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "escalated_submitter", + "plain_text": "Salve,\r\n\r\nHai recentemente inserito un ticket dall'oggetto \"{{ ticket.title }}\". Questa email ti \u00e8 inviata per informarti che la priorit\u00e0 del ticket \u00e8 stata automaticamente alzata in quanto questo \u00e8 stato aperto pi\u00f9 a lungo del previsto.\r\n\r\nEsamineremo a breve il ticket e cercheremo di fornire una risoluzione quanto prima.\r\n\r\nSe vuoi visitare il ticket online, puoi visitare l'indirizzo {{ ticket.ticket_url }}.", + "html": "
Salve,
\r\n\r\nHai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email ti \u00e8 inviata per informarti che la priorit\u00e0 del ticket \u00e8 stata automaticamente alzata in quanto questo \u00e8 stato aperto pi\u00f9 a lungo del previsto.
\r\n\r\nEsamineremo a breve il ticket e cercheremo di fornire una risoluzione quanto prima.
\r\n\r\nSe vuoi visitare il ticket online, puoi visitare l'indirizzo {{ ticket.ticket_url }}.
", + "heading": "La Priorit\u00e0 Del Tuo Ticket \u00e8 Stata Aumentata", + "subject": "(Priorit\u00e0)" + } + }, + { + "pk": 73, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "newticket_cc", + "plain_text": "Salve,\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che un nuovo ticket \u00e8 stato aperto.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nDescrizione:\r\n{{ ticket.description }}", + "html": "Salve,
\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che un nuovo ticket \u00e8 stato aperto.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Descrizione:
\r\n\r\n{{ ticket.description }}", + "heading": "Nuovo Ticket Aperto", + "subject": "(Aperto)" + } + }, + { + "pk": 74, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "newticket_submitter", + "plain_text": "Salve,\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che abbiamo ricevuto la tua richiesta di helpdesk dall'oggetto \"{{ ticket.title }}\". \r\n\r\nNon \u00e8 necessario fare altro al momento. Al tuo ticket \u00e8 stato assegnato l'identificativo {{ ticket.ticket }} e verr\u00e0 presto esaminato.\r\n\r\nSe vuoi aggiungere ulteriori dettagli o hai domande sul ticket, rispondi a questa email includendo l'id \"{{ ticket.ticket }}\" del ticket nell'oggetto. Il modo pi\u00f9 semplice per farlo \u00e8 di premere il pulsante \"rispondi\" del tuo client di posta.\r\n\r\nSe vuoi vedere questo ticket online per aggiungere ulteriori informazioni, allegare file o vedere gli aggiornamenti, puoi visitare l'indirizzo {{ ticket.ticket_url }}.\r\n\r\nAnalizzeremo la tua richiesta e cercheremo di risolverla quanto prima. Riceverai successivi aggiornamenti e la notifica di risoluzione a questo indirizzo email.", + "html": "
Salve,
\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che abbiamo ricevuto la tua richiesta di helpdesk dall'oggetto {{ ticket.title }}.
\r\n\r\nNon \u00e8 necessario fare altro al momento. Al tuo ticket \u00e8 stato assegnato l'identificativo {{ ticket.ticket }} e verr\u00e0 presto esaminato.
\r\n\r\nSe vuoi aggiungere ulteriori dettagli o hai domande sul ticket, rispondi a questa email includendo l'id {{ ticket.ticket}} del ticket nell'oggetto. Il modo pi\u00f9 semplice per farlo \u00e8 di premere il pulsante \"rispondi\" del tuo client di posta.
\r\n\r\nSe vuoi vedere questo ticket online per aggiungere ulteriori informazioni, allegare file o vedere gli aggiornamenti, puoi visitare l'indirizzo {{ ticket.ticket_url }}.
\r\n\r\nAnalizzeremo la tua richiesta e cercheremo di risolverla quanto prima. Riceverai successivi aggiornamenti e la notifica di risoluzione a questo indirizzo email.
", + "heading": "Il Tuo Ticket \u00e8 Stato Aperto", + "subject": "(Aperto)" + } + }, + { + "pk": 75, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "resolved_cc", + "plain_text": "Salve,\r\n\r\nIl seguente ticket \u00e8 stato risolto:\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione del ticket \u00e8:\r\n\r\n{{ ticket.description }}\r\n\r\nLa risoluzione fornita \u00e8:\r\n\r\n{{ ticket.resolution }}\r\n\r\nLa risoluzione \u00e8 stata inviata al proprietario del ticket, che dovr\u00e0 verificarla prima che il ticket possa essere chiuso.", + "html": "Salve,
\r\n\r\nIl seguente ticket \u00e8 stato risolto:
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione originale del ticket era:
\r\n\r\n{{ ticket.description }}\r\n\r\n
La risoluzione aggiunta era:
\r\n\r\n{{ ticket.resolution }}\r\n\r\n
La risoluzione \u00e8 stata inviata al proprietario del ticket, che dovr\u00e0 verificarla prima che il ticket possa essere chiuso.
", + "heading": "Ticket Risolto", + "subject": "(Risolto)" + } + }, + { + "pk": 76, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "resolved_owner", + "plain_text": "Salve,\r\n\r\nun ticket a te assegnato \u00e8 stato risolto.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nLa descrizione del ticket \u00e8:\r\n\r\n{{ ticket.description }}\r\n\r\nLa risoluzione fornita \u00e8:\r\n\r\n{{ ticket.resolution }}\r\n\r\nLa risoluzione \u00e8 stata inviata al proprietario del ticket, che dovr\u00e0 verificarla prima che il ticket possa essere chiuso.", + "html": "Salve,
\r\n\r\nUn ticket a te assegnato \u00e8 stato risolto.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
La descrizione del ticket \u00e8:
\r\n\r\n{{ ticket.description }}\r\n\r\n
La risoluzione fornita \u00e8:
\r\n\r\n{{ ticket.resolution }}\r\n\r\n
La risoluzione \u00e8 stata inviata al proprietario del ticket, che dovr\u00e0 verificarla prima che il ticket possa essere chiuso.
", + "heading": "Ticket Risolto", + "subject": "(Risolto)" + } + }, + { + "pk": 77, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "resolved_submitter", + "plain_text": "Salve,\r\n\r\nHai recentemente inserito un ticket dall'oggetto \"{{ ticket.title }}\". Questa email vi \u00e8 stata inviata per informarvi della risoluzione del ticket.\r\n\r\nLa seguente risoluzione \u00e8 stata inserita al ticket {{ ticket.ticket }}:\r\n\r\n{{ resolution }}\r\n\r\nPu\u00f2 per cortesia confermare che questa risoluzione risolve i vostri problemi in modo tale da poter chiudere il ticket? Se ha ulteriori domande, o non crede che la risoluzione adottata \u00e8 adeguata, risponda a questa email mantenendo invariato l'oggetto.\r\n\r\nSe vuole vedere il ticket online, pu\u00f2 visitare l'indirizzo {{ ticket.ticket_url }}", + "html": "Hello,
\r\n\r\nHai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email vi \u00e8 stata inviata per informarvi della risoluzione del ticket.
\r\n\r\nLa seguente risoluzione \u00e8 stata inserita al ticket {{ ticket.ticket }}:
\r\n\r\n{{ resolution }}\r\n\r\n
Pu\u00f2 per cortesia confermare che questa risoluzione risolve i vostri problemi in modo tale da poter chiudere il ticket? Se ha ulteriori domande, o non crede che la risoluzione adottata \u00e8 adeguata, risponda a questa email mantenendo invariato l'oggetto.
\r\n\r\nSe vuole vedere il ticket online, pu\u00f2 visitare l'indirizzo {{ ticket.ticket_url }}.
", + "heading": "Il Tuo Ticket \u00e8 Stato Risolto", + "subject": "(Risolto)" + } + }, + { + "pk": 78, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "updated_cc", + "plain_text": "Salve,\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }} \u00e8 stato aggiornato.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nDescrizione originale:\r\n\r\n{{ ticket.description }}\r\n\r\nIl seguente commento \u00e8 stato aggiunto:\r\n\r\n{{ comment }}\r\n\r\nQuesta informazione{% if private %} non{% endif %} \u00e8 stata inviata al proprietario del ticket.\r\n\r\nSe vuoi vedere il ticket online, puoi visitare l'indirizzo {{ ticket.staff_url }}.", + "html": "Salve,
\r\n\r\nQuesta email ti \u00e8 stata inviata per informarti che il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }} \u00e8 stato aggiornato.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione originale era:
\r\n\r\n{{ ticket.description }}\r\n\r\n
Il seguente commento \u00e8 stato aggiunto:
\r\n\r\n{{ comment }}\r\n\r\n
Questa informazione{% if private %} non{% endif %} \u00e8 stata inviata al proprietario del ticket.
", + "heading": "Ticket Aggiornato", + "subject": "(Aggiornato)" + } + }, + { + "pk": 79, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "updated_owner", + "plain_text": "Salve,\r\n\r\nTi \u00e8 stata inviata questa email per informavi che il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }}, a te assegnato, \u00e8 stato aggiornato.\r\n\r\nID Ticket: {{ ticket.ticket }}\r\nCoda: {{ queue.title }}\r\nTitolo: {{ ticket.title }}\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}\r\nPriorit\u00e0: {{ ticket.get_priority_display }}\r\nStato: {{ ticket.get_status }}\r\nAssegnato a: {{ ticket.get_assigned_to }}\r\nVedi Online: {{ ticket.staff_url }} (richiesto login)\r\n\r\nDescrizione originale:\r\n\r\n{{ ticket.description }}\r\n\r\nIl seguente commento \u00e8 stato aggiunto:\r\n\r\n{{ comment }}\r\n\r\nQuesta informazione{% if private %} non{% endif %} \u00e8 stata inviata al proprietario del ticket.\r\n\r\nSe vuoi vedere il ticket online, puoi visitare l'indirizzo {{ ticket.staff_url }}.", + "html": "Salve,
\r\n\r\nTi \u00e8 stata inviata questa email per informavi che il ticket {{ ticket.ticket }} (\"{{ ticket.title }}\") per {{ ticket.submitter_email }}, a te assegnato, \u00e8 stato aggiornato.
\r\n\r\n\r\nTicket ID: {{ ticket.ticket }}
\r\nCoda: {{ queue.title }}
\r\nTitolo: {{ ticket.title }}
\r\nAperto: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\nInserito da: {{ ticket.submitter_email|default:\"Sconosciuto\" }}
\r\nPriorit\u00e0: {{ ticket.get_priority_display }}
\r\nStato: {{ ticket.get_status }}
\r\nAssegnato a: {{ ticket.get_assigned_to }}
\r\nVedi Online per aggiornare questo ticket (richiesto login)
Per riferimento, la descrizione originale del ticket era:
\r\n\r\n{{ ticket.description }}\r\n\r\n
Il seguente commento \u00e8 stato aggiunto:
\r\n\r\n{{ comment }}\r\n\r\n
Questa informazione{% if private %} non{% endif %} \u00e8 stata inviata al proprietario del ticket.
", + "heading": "Ticket Aggiornato", + "subject": "(Updated)" + } + }, + { + "pk": 80, + "model": "helpdesk.emailtemplate", + "fields": { + "locale": "it", + "template_name": "updated_submitter", + "plain_text": "Salve,\r\n\r\nHai recentemente inserito un ticket dall'oggetto \"{{ ticket.title }}\". Questa email ti \u00e8 stata inviata per informarti di un aggiornamento riguardo il ticket suddetto.\r\n\r\nIl seguente commento \u00e8 stato aggiunto al ticket {{ ticket.ticket }}:\r\n\r\n{{ comment }}\r\n\r\nSe c'\u00e8 bisogno di fornire informazioni aggiuntive, risponda a questa email mantenendone l'oggetto invariato. In alternativa, \u00e8 possibile vedere ed aggiornare il ticket online visitando l'indirizzo {{ ticket.ticket_url }}\r\n", + "html": "Salve,
\r\n\r\nHai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email ti \u00e8 stata inviata per informarti di un aggiornamento riguardo il ticket suddetto.
\r\n\r\nIl seguente commento \u00e8 stato aggiunto al ticket {{ ticket.ticket }}:
\r\n\r\n{{ comment }}\r\n\r\n
Se c'\u00e8 bisogno di fornire informazioni aggiuntive, risponda a questa email mantenendone l'oggetto invariato. In alternativa, \u00e8 possibile vedere ed aggiornare il ticket online visitando l'indirizzo {{ ticket.ticket_url }}.
", + "heading": "Il Tuo Ticket \u00e8 Stato Aggiornato", + "subject": "(Aggiornato)" + } } -] + ] diff --git a/helpdesk/forms.py b/helpdesk/forms.py index 7ec805c2..9951a6fd 100644 --- a/helpdesk/forms.py +++ b/helpdesk/forms.py @@ -19,6 +19,7 @@ from django.utils.translation import ugettext as _ from helpdesk.lib import send_templated_mail, safe_template_context from helpdesk.models import Ticket, Queue, FollowUp, Attachment, IgnoreEmail, TicketCC, CustomField, TicketCustomFieldValue, TicketDependency from helpdesk.settings import HAS_TAG_SUPPORT +from helpdesk import settings as helpdesk_settings class EditTicketForm(forms.ModelForm): class Meta: @@ -58,8 +59,8 @@ class EditTicketForm(forms.ModelForm): instanceargs['max_digits'] = field.max_length elif field.data_type == 'list': fieldclass = forms.ChoiceField + choices = field.choices_as_array if field.empty_selection_list: - choices = field.choices_as_array choices.insert(0, ('','---------' ) ) instanceargs['choices'] = choices elif field.data_type == 'boolean': @@ -152,6 +153,19 @@ class TicketForm(forms.Form): 'as \'3\'.'), ) + due_date = forms.DateTimeField( + widget=extras.SelectDateWidget, + required=False, + label=_('Due on'), + ) + + def clean_due_date(self): + data = self.cleaned_data['due_date'] + #TODO: add Google calendar update hook + #if not hasattr(self, 'instance') or self.instance.due_date != new_data: + # print "you changed!" + return data + attachment = forms.FileField( required=False, label=_('Attach File'), @@ -195,8 +209,8 @@ class TicketForm(forms.Form): instanceargs['max_digits'] = field.max_length elif field.data_type == 'list': fieldclass = forms.ChoiceField + choices = field.choices_as_array if field.empty_selection_list: - choices = field.choices_as_array choices.insert(0, ('','---------' ) ) instanceargs['choices'] = choices elif field.data_type == 'boolean': @@ -234,6 +248,7 @@ class TicketForm(forms.Form): queue = q, description = self.cleaned_data['body'], priority = self.cleaned_data['priority'], + due_date = self.cleaned_data['due_date'], ) if HAS_TAG_SUPPORT: @@ -376,6 +391,12 @@ class PublicTicketForm(forms.Form): help_text=_('Please select a priority carefully.'), ) + due_date = forms.DateTimeField( + widget=extras.SelectDateWidget, + required=False, + label=_('Due on'), + ) + attachment = forms.FileField( required=False, label=_('Attach File'), @@ -408,8 +429,8 @@ class PublicTicketForm(forms.Form): instanceargs['max_digits'] = field.max_length elif field.data_type == 'list': fieldclass = forms.ChoiceField + choices = field.choices_as_array if field.empty_selection_list: - choices = field.choices_as_array choices.insert(0, ('','---------' ) ) instanceargs['choices'] = choices elif field.data_type == 'boolean': @@ -446,6 +467,7 @@ class PublicTicketForm(forms.Form): queue = q, description = self.cleaned_data['body'], priority = self.cleaned_data['priority'], + due_date = self.cleaned_data['due_date'], ) t.save() @@ -572,7 +594,11 @@ class EmailIgnoreForm(forms.ModelForm): class TicketCCForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(TicketCCForm, self).__init__(*args, **kwargs) - self.fields['user'].queryset = User.objects.filter(is_active=True).order_by('username') + if helpdesk_settings.HELPDESK_STAFF_ONLY_TICKET_CC: + users = User.objects.filter(is_active=True, is_staff=True).order_by('username') + else: + users = User.objects.filter(is_active=True).order_by('username') + self.fields['user'].queryset = users class Meta: model = TicketCC exclude = ('ticket',) diff --git a/helpdesk/lib.py b/helpdesk/lib.py index 99a3c579..b7972633 100644 --- a/helpdesk/lib.py +++ b/helpdesk/lib.py @@ -173,10 +173,12 @@ def apply_query(queryset, params): # eg a Q() set queryset = queryset.filter(params['other_filter']) - if params.get('sorting', None): - if params.get('sortreverse', None): - params['sorting'] = "-%s" % params['sorting'] - queryset = queryset.order_by(params['sorting']) + sorting = params.get('sorting', None) + if not sorting: + sortreverse = params.get('sortreverse', None) + if sortreverse: + sorting = "-%s" % sorting + queryset = queryset.order_by(sorting) return queryset diff --git a/helpdesk/locale/en/LC_MESSAGES/django.mo b/helpdesk/locale/en/LC_MESSAGES/django.mo index 12575711..25efc87f 100644 Binary files a/helpdesk/locale/en/LC_MESSAGES/django.mo and b/helpdesk/locale/en/LC_MESSAGES/django.mo differ diff --git a/helpdesk/locale/en/LC_MESSAGES/django.po b/helpdesk/locale/en/LC_MESSAGES/django.po index 1b44932e..3299ef1c 100644 --- a/helpdesk/locale/en/LC_MESSAGES/django.po +++ b/helpdesk/locale/en/LC_MESSAGES/django.po @@ -8,176 +8,167 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-11-29 15:20+0100\n" +"POT-Creation-Date: 2012-01-20 11:41-0800\n" "PO-Revision-Date: 2011-07-02 07:12+10Last-Translator: Ross Poulton " "Are you sure you want to delete this saved filter (%(query_title)s" -"em>)? To re-create it, you will need to manually re-filter your ticket " -"listing.
\n" -msgstr "" - -#: templates/helpdesk/confirm_delete_saved_query.html:11 -msgid "" -"\n" -"You have shared this query, so other users may be using it. If you delete " -"it, they will have to manually create their own query.
\n" -msgstr "" - -#: templates/helpdesk/confirm_delete_saved_query.html:15 -#: templates/helpdesk/delete_ticket.html:11 -msgid "No, Don't Delete It" -msgstr "" - -#: templates/helpdesk/confirm_delete_saved_query.html:17 -#: templates/helpdesk/delete_ticket.html:13 -msgid "Yes - Delete It" -msgstr "" - -#: templates/helpdesk/create_ticket.html:3 -msgid "Create Ticket" -msgstr "" - -#: templates/helpdesk/create_ticket.html:6 -msgid "" -"Unless otherwise stated, all fields are required. Please provide as " -"descriptive a title and description as possible.
" -msgstr "" - -#: templates/helpdesk/create_ticket.html:17 -#: templates/helpdesk/edit_ticket.html:19 -#: templates/helpdesk/public_homepage.html:34 -msgid "(Optional)" -msgstr "" - -#: templates/helpdesk/create_ticket.html:26 -#: templates/helpdesk/public_homepage.html:43 -msgid "Submit Ticket" -msgstr "" - -#: templates/helpdesk/dashboard.html:2 -msgid "Helpdesk Dashboard" -msgstr "" - -#: templates/helpdesk/dashboard.html:10 -msgid "Helpdesk Summary" -msgstr "" - -#: templates/helpdesk/dashboard.html:25 -msgid "" -"Welcome to your Helpdesk Dashboard! From here you can quickly see tickets " -"submitted by you, tickets you are working on, and those tickets that have no " -"owner. Why not pick up an orphan ticket and sort it out for a customer?" -msgstr "" - -#: templates/helpdesk/dashboard.html:27 -msgid "" -"Welcome to your Helpdesk Dashboard! From here you can quickly see your own " -"tickets, and those tickets that have no owner. Why not pick up an orphan " -"ticket and sort it out for a customer?" -msgstr "" - -#: templates/helpdesk/dashboard.html:36 -msgid "All Tickets submitted by you" -msgstr "" - -#: templates/helpdesk/dashboard.html:37 templates/helpdesk/dashboard.html:57 -#: templates/helpdesk/dashboard.html:77 templates/helpdesk/dashboard.html:99 -#: templates/helpdesk/ticket_list.html:199 -msgid "Pr" -msgstr "" - -#: templates/helpdesk/dashboard.html:37 templates/helpdesk/dashboard.html:57 -#: templates/helpdesk/dashboard.html:99 -msgid "Last Update" -msgstr "" - -#: templates/helpdesk/dashboard.html:56 -msgid "Open Tickets assigned to you (you are working on this ticket)" -msgstr "" - -#: templates/helpdesk/dashboard.html:69 -msgid "You have no tickets assigned to you." -msgstr "" - -#: templates/helpdesk/dashboard.html:76 -msgid "(pick up a ticket if you start to work on it)" -msgstr "" - -#: templates/helpdesk/dashboard.html:85 -#: templates/helpdesk/ticket_desc_table.html:22 -msgid "Take" -msgstr "" - -#: templates/helpdesk/dashboard.html:85 -#: templates/helpdesk/email_ignore_list.html:13 -#: templates/helpdesk/email_ignore_list.html:23 -#: templates/helpdesk/ticket_cc_list.html:15 -#: templates/helpdesk/ticket_cc_list.html:23 -#: templates/helpdesk/ticket_list.html:234 -msgid "Delete" -msgstr "" - -#: templates/helpdesk/dashboard.html:89 -msgid "There are no unassigned tickets." -msgstr "" - -#: templates/helpdesk/dashboard.html:98 -msgid "Closed & resolved Tickets you used to work on" -msgstr "" - -#: templates/helpdesk/delete_ticket.html:3 -msgid "Delete Ticket" -msgstr "" - -#: templates/helpdesk/delete_ticket.html:5 -#, python-format -msgid "" -"\n" -"Are you sure you want to delete this ticket (%(ticket_title)s)? " -"All traces of the ticket, including followups, attachments, and updates will " -"be irreversably removed.
\n" -msgstr "" - -#: templates/helpdesk/edit_ticket.html:3 -msgid "Edit Ticket" -msgstr "" - -#: templates/helpdesk/edit_ticket.html:6 -msgid "" -"Unless otherwise stated, all fields are required. Please provide as " -"descriptive a title and description as possible.
\n" -"\n" -"Note: Editing a ticket does not send an e-mail " -"to the ticket owner or submitter. No new details should be entered, this " -"form should only be used to fix incorrect details or clean up the submission." -"
" -msgstr "" - -#: templates/helpdesk/edit_ticket.html:28 -msgid "Save Changes" -msgstr "" - -#: templates/helpdesk/email_ignore_add.html:3 -#: templates/helpdesk/email_ignore_add.html:23 -msgid "Ignore E-Mail Address" -msgstr "" - -#: templates/helpdesk/email_ignore_add.html:5 -msgid "" -"\n" -"To ignore an e-mail address and prevent any emails from that address " -"creating tickets automatically, enter the e-mail address below.
\n" -"\n" -"You can either enter a whole e-mail address such as email@domain.com" -"em> or a portion of an e-mail address with a wildcard, such as *@domain." -"com or user@*.
" -msgstr "" - -#: templates/helpdesk/email_ignore_del.html:3 -msgid "Delete Ignored E-Mail Address" -msgstr "" - -#: templates/helpdesk/email_ignore_del.html:5 -#, python-format -msgid "" -"\n" -"Are you sure you wish to stop removing this email address (" -"%(email_address)s) and allow their e-mails to automatically create " -"tickets in your system? You can re-add this e-mail address at any time.
\n" -msgstr "" - -#: templates/helpdesk/email_ignore_del.html:11 -msgid "Keep Ignoring It" -msgstr "" - -#: templates/helpdesk/email_ignore_del.html:13 -msgid "Stop Ignoring It" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:3 -#: templates/helpdesk/email_ignore_list.html:12 -msgid "Ignored E-Mail Addresses" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:5 -msgid "" -"\n" -"The following e-mail addresses are currently being ignored by the " -"incoming e-mail processor. You can add a new e-mail address " -"to the list or delete any of the items below as required.
" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:13 -msgid "Date Added" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:13 -msgid "Queues" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:13 -msgid "Keep in mailbox?" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:21 -#: templates/helpdesk/ticket_list.html:232 -msgid "All" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:22 -msgid "Keep" -msgstr "" - -#: templates/helpdesk/email_ignore_list.html:29 -msgid "" -"Note: If the 'Keep' option is not selected, emails sent " -"from that address will be deleted permanently." -msgstr "" - -#: templates/helpdesk/followup_edit.html:2 -msgid "Edit followup" -msgstr "" - -#: templates/helpdesk/followup_edit.html:9 -msgid "Edit FollowUp" -msgstr "" - -#: templates/helpdesk/followup_edit.html:14 -msgid "Reassign ticket:" -msgstr "" - -#: templates/helpdesk/followup_edit.html:16 -msgid "Title:" -msgstr "" - -#: templates/helpdesk/followup_edit.html:19 -msgid "Comment:" -msgstr "" - -#: templates/helpdesk/kb_category.html:4 -#: templates/helpdesk/kb_category.html:11 -#, python-format -msgid "Knowledgebase Category: %(kbcat)s" -msgstr "" - -#: templates/helpdesk/kb_category.html:6 -#, python-format -msgid "You are viewing all items in the %(kbcat)s category." -msgstr "" - -#: templates/helpdesk/kb_category.html:12 -msgid "Article" -msgstr "" - -#: templates/helpdesk/kb_index.html:4 templates/helpdesk/navigation.html:30 -msgid "Knowledgebase" -msgstr "" - -#: templates/helpdesk/kb_index.html:6 -msgid "" -"We have listed a number of knowledgebase articles for your perusal in the " -"following categories. Please check to see if any of these articles address " -"your problem prior to opening a support ticket." -msgstr "" - -#: templates/helpdesk/kb_index.html:9 -msgid "Knowledgebase Categories" -msgstr "" - -#: templates/helpdesk/kb_item.html:4 -#, python-format -msgid "Knowledgebase: %(item)s" -msgstr "" - -#: templates/helpdesk/kb_item.html:13 -#, python-format -msgid "" -"View other %(category_title)s articles" -"a>, or continue viewing other knowledgebase articles." -msgstr "" - -#: templates/helpdesk/kb_item.html:15 -msgid "Feedback" -msgstr "" - -#: templates/helpdesk/kb_item.html:17 -msgid "" -"We give our users an opportunity to vote for items that they believe have " -"helped them out, in order for us to better serve future customers. We would " -"appreciate your feedback on this article. Did you find it useful?" -msgstr "" - -#: templates/helpdesk/kb_item.html:20 -msgid "This article was useful to me" -msgstr "" - -#: templates/helpdesk/kb_item.html:21 -msgid "This article was not useful to me" -msgstr "" - -#: templates/helpdesk/kb_item.html:24 -msgid "The results of voting by other readers of this article are below:" -msgstr "" - -#: templates/helpdesk/kb_item.html:27 -#, python-format -msgid "Recommendations: %(recommendations)s" -msgstr "" - -#: templates/helpdesk/kb_item.html:28 -#, python-format -msgid "Votes: %(votes)s" -msgstr "" - -#: templates/helpdesk/kb_item.html:29 -#, python-format -msgid "Overall Rating: %(score)s" -msgstr "" - -#: templates/helpdesk/navigation.html:4 -msgid "Dashboard" -msgstr "" - -#: templates/helpdesk/navigation.html:5 -#: templates/helpdesk/ticket_list.html:198 -msgid "Tickets" -msgstr "" - -#: templates/helpdesk/navigation.html:6 -msgid "New Ticket" -msgstr "" - -#: templates/helpdesk/navigation.html:8 -msgid "Stats" -msgstr "" - -#: templates/helpdesk/navigation.html:22 templates/helpdesk/navigation.html:32 -msgid "Logout" -msgstr "" - -#: templates/helpdesk/navigation.html:23 -msgid "Search..." -msgstr "" - -#: templates/helpdesk/navigation.html:23 -msgid "Enter a keyword, or a ticket number to jump straight to that ticket." -msgstr "" - -#: templates/helpdesk/navigation.html:28 -msgid "Submit A Ticket" -msgstr "" - -#: templates/helpdesk/navigation.html:32 -msgid "Log In" -msgstr "" - -#: templates/helpdesk/public_change_language.html:2 -#: templates/helpdesk/public_homepage.html:5 -#: templates/helpdesk/public_view_form.html:4 -#: templates/helpdesk/public_view_ticket.html:2 -msgid "View a Ticket" -msgstr "" - -#: templates/helpdesk/public_change_language.html:5 -msgid "Change the display language" -msgstr "" - -#: templates/helpdesk/public_homepage.html:13 -#: templates/helpdesk/public_view_form.html:15 -msgid "Your E-mail Address" -msgstr "" - -#: templates/helpdesk/public_homepage.html:17 -#: templates/helpdesk/public_view_form.html:19 -msgid "View Ticket" -msgstr "" - -#: templates/helpdesk/public_homepage.html:23 -msgid "Submit a Ticket" -msgstr "" - -#: templates/helpdesk/public_homepage.html:25 -msgid "" -"All fields are required. Please provide as descriptive a title and " -"description as possible." -msgstr "" - -#: templates/helpdesk/public_homepage.html:51 -msgid "Please use button at upper right to login first." -msgstr "" - -#: templates/helpdesk/public_spam.html:4 -msgid "Unable To Open Ticket" -msgstr "" - -#: templates/helpdesk/public_spam.html:6 -msgid "" -"Sorry, but there has been an error trying to submit your ticket.
\n" -"\n" -"Our system has marked your submission as spam, so we are " -"unable to save it. If this is not spam, please press back and re-type your " -"message. Be careful to avoid sounding 'spammy', and if you have heaps of " -"links please try removing them if possible.
\n" -"\n" -"We are sorry for any inconvenience, however this check is required to " -"avoid our helpdesk resources being overloaded by spammers.
\n" -msgstr "" - -#: templates/helpdesk/public_view_form.html:8 -msgid "Error:" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:8 -#, python-format -msgid "Queue: %(queue_name)s" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:11 -#: templates/helpdesk/ticket_desc_table.html:16 -msgid "Submitted On" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:46 -#: templates/helpdesk/ticket_desc_table.html:74 -msgid "Accept" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:46 -#: templates/helpdesk/ticket_desc_table.html:74 -msgid "Accept and Close" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:55 -#: templates/helpdesk/ticket.html:52 -msgid "Follow-Ups" -msgstr "" - -#: templates/helpdesk/public_view_ticket.html:63 -#: templates/helpdesk/ticket.html:80 -#, python-format -msgid "Changed %(field)s from %(old_value)s to %(new_value)s." -msgstr "" - -#: templates/helpdesk/report_index.html:3 -#: templates/helpdesk/report_index.html:6 -#: templates/helpdesk/report_output.html:3 -#: templates/helpdesk/report_output.html:16 -msgid "Reports & Statistics" -msgstr "" - -#: templates/helpdesk/report_index.html:9 -msgid "You haven't created any tickets yet, so you cannot run any reports." -msgstr "" - -#: templates/helpdesk/report_index.html:13 -msgid "Reports By User" -msgstr "" - -#: templates/helpdesk/report_index.html:15 -#: templates/helpdesk/report_index.html:24 -msgid "by Priority" -msgstr "" - -#: templates/helpdesk/report_index.html:16 -msgid "by Queue" -msgstr "" - -#: templates/helpdesk/report_index.html:17 -#: templates/helpdesk/report_index.html:25 -msgid "by Status" -msgstr "" - -#: templates/helpdesk/report_index.html:18 -#: templates/helpdesk/report_index.html:26 -msgid "by Month" -msgstr "" - -#: templates/helpdesk/report_index.html:22 -msgid "Reports By Queue" -msgstr "" - -#: templates/helpdesk/report_output.html:19 -msgid "" -"You can run this query on filtered data by using one of your saved queries." -msgstr "" - -#: templates/helpdesk/report_output.html:21 -msgid "Select Query:" -msgstr "" - -#: templates/helpdesk/report_output.html:26 -msgid "Filter Report" -msgstr "" - -#: templates/helpdesk/report_output.html:29 -msgid "" -"Want to filter this report to just show a subset of data? Go to the Ticket " -"List, filter your query, and save your query." -msgstr "" - -#: templates/helpdesk/rss_list.html:6 -msgid "" -"The following RSS feeds are available for you to monitor using your " -"preferred RSS software. With the exception of the 'Latest Activity' feed, " -"all feeds provide information only on Open and Reopened cases. This ensures " -"your RSS reader isn't full of information about closed or historical tasks." -msgstr "" - -#: templates/helpdesk/rss_list.html:10 -msgid "" -"A summary of your open tickets - useful for getting alerted to new tickets " -"opened for you" -msgstr "" - -#: templates/helpdesk/rss_list.html:12 -msgid "Latest Activity" -msgstr "" - -#: templates/helpdesk/rss_list.html:13 -msgid "" -"A summary of all helpdesk activity - including comments, emails, " -"attachments, and more" -msgstr "" - -#: templates/helpdesk/rss_list.html:16 -msgid "" -"All unassigned tickets - useful for being alerted to new tickets opened by " -"the public via the web or via e-mail" -msgstr "" - -#: templates/helpdesk/rss_list.html:19 -msgid "" -"These RSS feeds allow you to view a summary of either your own tickets, or " -"all tickets, for each of the queues in your helpdesk. For example, if you " -"manage the staff who utilise a particular queue, this may be used to view " -"new tickets coming into that queue." -msgstr "" - -#: templates/helpdesk/rss_list.html:22 -msgid "Per-Queue Feeds" -msgstr "" - -#: templates/helpdesk/rss_list.html:23 -msgid "All Open Tickets" -msgstr "" - -#: templates/helpdesk/rss_list.html:27 -msgid "Open Tickets" -msgstr "" - -#: templates/helpdesk/system_settings.html:3 -msgid "Change System Settings" -msgstr "" - -#: templates/helpdesk/system_settings.html:5 -msgid "" -"\n" -"The following items can be maintained by you or other superusers:
" -msgstr "" - -#: templates/helpdesk/system_settings.html:11 -msgid "E-Mail Ignore list" -msgstr "" - -#: templates/helpdesk/system_settings.html:12 -msgid "Maintain Queues" -msgstr "" - -#: templates/helpdesk/system_settings.html:13 -msgid "Maintain Pre-Set Replies" -msgstr "" - -#: templates/helpdesk/system_settings.html:14 -msgid "Maintain Knowledgebase Categories" -msgstr "" - -#: templates/helpdesk/system_settings.html:15 -msgid "Maintain Knowledgebase Items" -msgstr "" - -#: templates/helpdesk/system_settings.html:16 -msgid "Maintain E-Mail Templates" -msgstr "" - -#: templates/helpdesk/system_settings.html:17 -msgid "Maintain Users" -msgstr "" - -#: templates/helpdesk/ticket.html:2 -msgid "View Ticket Details" -msgstr "" - -#: templates/helpdesk/ticket.html:34 -msgid "Attach another File" -msgstr "" - -#: templates/helpdesk/ticket.html:34 templates/helpdesk/ticket.html.py:181 -msgid "Add Another File" -msgstr "" - -#: templates/helpdesk/ticket.html:45 -msgid "Translate ticket comments into" -msgstr "" - -#: templates/helpdesk/ticket.html:59 templates/helpdesk/ticket.html.py:69 -msgid "Private" -msgstr "" - -#: templates/helpdesk/ticket.html:98 -msgid "Respond to this ticket" -msgstr "" - -#: templates/helpdesk/ticket.html:105 -msgid "Use a Pre-set Reply" -msgstr "" - -#: templates/helpdesk/ticket.html:107 -msgid "" -"Selecting a pre-set reply will over-write your comment below. You can then " -"modify the pre-set reply to your liking before saving this update." -msgstr "" - -#: templates/helpdesk/ticket.html:110 -msgid "Comment / Resolution" -msgstr "" - -#: templates/helpdesk/ticket.html:112 -msgid "" -"You can insert ticket and queue details in your message. For more " -"information, see the context help page." -msgstr "" - -#: templates/helpdesk/ticket.html:115 -msgid "" -"This ticket cannot be resolved or closed until the tickets it depends on are " -"resolved." -msgstr "" - -#: templates/helpdesk/ticket.html:145 -msgid "Is this update public?" -msgstr "" - -#: templates/helpdesk/ticket.html:147 -msgid "" -"If this is public, the submitter will be e-mailed your comment or resolution." -msgstr "" - -#: templates/helpdesk/ticket.html:151 -msgid "Change Further Details »" -msgstr "" - -#: templates/helpdesk/ticket.html:160 templates/helpdesk/ticket_list.html:55 -#: templates/helpdesk/ticket_list.html:87 -#: templates/helpdesk/ticket_list.html:199 -msgid "Owner" -msgstr "" - -#: templates/helpdesk/ticket.html:161 -msgid "Unassign" -msgstr "" - -#: templates/helpdesk/ticket.html:174 -msgid "Attach File(s) »" -msgstr "" - -#: templates/helpdesk/ticket.html:180 -msgid "Attach a File" -msgstr "" - -#: templates/helpdesk/ticket.html:188 -msgid "Update This Ticket" -msgstr "" - -#: templates/helpdesk/ticket_cc_add.html:3 -msgid "Add Ticket CC" -msgstr "" - -#: templates/helpdesk/ticket_cc_add.html:5 -msgid "" -"\n" -"To automatically send an email to a user or e-mail address when this " -"ticket is updated, select the user or enter an e-mail address below.
" -msgstr "" - -#: templates/helpdesk/ticket_cc_add.html:21 -msgid "Save Ticket CC" -msgstr "" - -#: templates/helpdesk/ticket_cc_del.html:3 -msgid "Delete Ticket CC" -msgstr "" - -#: templates/helpdesk/ticket_cc_del.html:5 -#, python-format -msgid "" -"\n" -"Are you sure you wish to delete this email address (" -"%(email_address)s) from the CC list for this ticket? They will stop " -"receiving updates.
\n" -msgstr "" - -#: templates/helpdesk/ticket_cc_del.html:11 -#: templates/helpdesk/ticket_dependency_del.html:11 -msgid "Don't Delete" -msgstr "" - -#: templates/helpdesk/ticket_cc_del.html:13 -#: templates/helpdesk/ticket_dependency_del.html:13 -msgid "Yes, Delete" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:3 -msgid "Ticket CC Settings" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:5 -#, python-format -msgid "" -"\n" -"The following people will receive an e-mail whenever " -"%(ticket_title)s is updated. Some people can also view or edit the " -"ticket via the public ticket views.
\n" -"\n" -"You can add a new e-mail address to the list or delete " -"any of the items below as required.
" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:14 -msgid "Ticket CC List" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:15 -msgid "View?" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:15 -msgid "Update?" -msgstr "" - -#: templates/helpdesk/ticket_cc_list.html:29 -#, python-format -msgid "Return to %(ticket_title)s" -msgstr "" - -#: templates/helpdesk/ticket_dependency_add.html:3 -msgid "Add Ticket Dependency" -msgstr "" - -#: templates/helpdesk/ticket_dependency_add.html:5 -msgid "" -"\n" -"Adding a dependency will stop you resolving this ticket until the " -"dependent ticket has been resolved or closed.
" -msgstr "" - -#: templates/helpdesk/ticket_dependency_add.html:21 -msgid "Save Ticket Dependency" -msgstr "" - -#: templates/helpdesk/ticket_dependency_del.html:3 -msgid "Delete Ticket Dependency" -msgstr "" - -#: templates/helpdesk/ticket_dependency_del.html:5 -msgid "" -"\n" -"Are you sure you wish to remove the dependency on this ticket?
\n" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:11 -msgid "Unhold" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:11 -msgid "Hold" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:13 -#, python-format -msgid "Queue: %(queue)s" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:21 -msgid "Assigned To" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:27 -msgid "Ignore" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:36 -msgid "Copies To" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:37 -msgid "Manage" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:37 -msgid "" -"Click here to add / remove people who should receive an e-mail whenever this " -"ticket is updated." -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:48 -msgid "Dependencies" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:50 -msgid "" -"This ticket cannot be resolved until the following ticket(s) are resolved" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:51 -msgid "Remove Dependency" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:54 -msgid "This ticket has no dependencies." -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:56 -msgid "Add Dependency" -msgstr "" - -#: templates/helpdesk/ticket_desc_table.html:56 -msgid "" -"Click on 'Add Dependency', if you want to make this ticket dependent on " -"another ticket. A ticket may not be closed until all tickets it depends on " -"are closed." -msgstr "" - -#: templates/helpdesk/ticket_list.html:2 -msgid "Ticket Listing" -msgstr "" - -#: templates/helpdesk/ticket_list.html:41 -msgid "Query Options" -msgstr "" - -#: templates/helpdesk/ticket_list.html:43 -msgid "Save This Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:46 -msgid "Load Saved Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:51 -msgid "Change Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:54 -#: templates/helpdesk/ticket_list.html:69 -msgid "Sorting" -msgstr "" - -#: templates/helpdesk/ticket_list.html:58 -#: templates/helpdesk/ticket_list.html:137 -msgid "Keywords" -msgstr "" - -#: templates/helpdesk/ticket_list.html:59 -msgid "Date Range" -msgstr "" - -#: templates/helpdesk/ticket_list.html:90 -msgid "Reverse" -msgstr "" - -#: templates/helpdesk/ticket_list.html:92 -msgid "Ordering applied to tickets" -msgstr "" - -#: templates/helpdesk/ticket_list.html:97 -msgid "Owner(s)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:101 -msgid "(ME)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:105 -msgid "Ctrl-Click to select multiple options" -msgstr "" - -#: templates/helpdesk/ticket_list.html:110 -msgid "Queue(s)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:111 -#: templates/helpdesk/ticket_list.html:117 -#: templates/helpdesk/ticket_list.html:131 -msgid "Ctrl-click to select multiple options" -msgstr "" - -#: templates/helpdesk/ticket_list.html:116 -msgid "Status(es)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:122 -msgid "Date (From)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:123 -msgid "Date (To)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:124 -msgid "Use YYYY-MM-DD date format, eg 2011-05-29" -msgstr "" - -#: templates/helpdesk/ticket_list.html:130 -msgid "Tag(s)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:138 -msgid "" -"Keywords are case-insensitive, and will be looked for in the title, body and " -"submitter fields." -msgstr "" - -#: templates/helpdesk/ticket_list.html:142 -msgid "Apply Filter" -msgstr "" - -#: templates/helpdesk/ticket_list.html:144 -#, python-format -msgid "You are currently viewing saved query %(query_name)s." -msgstr "" - -#: templates/helpdesk/ticket_list.html:147 -#, python-format -msgid "" -"Run a report on this " -"query to see stats and charts for the data listed below." -msgstr "" - -#: templates/helpdesk/ticket_list.html:154 -#: templates/helpdesk/ticket_list.html:169 -msgid "Save Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:160 -msgid "" -"This name appears in the drop-down list of saved queries. If you share your " -"query, other users will see this name, so choose something clear and " -"descriptive!" -msgstr "" - -#: templates/helpdesk/ticket_list.html:162 -msgid "Shared?" -msgstr "" - -#: templates/helpdesk/ticket_list.html:163 -msgid "Yes, share this query with other users." -msgstr "" - -#: templates/helpdesk/ticket_list.html:164 -msgid "" -"If you share this query, it will be visible by all other logged-in " -"users." -msgstr "" - -#: templates/helpdesk/ticket_list.html:176 -msgid "Use Saved Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:178 -msgid "Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:183 -msgid "Run Query" -msgstr "" - -#: templates/helpdesk/ticket_list.html:213 -msgid "No Tickets Match Your Selection" -msgstr "" - -#: templates/helpdesk/ticket_list.html:219 -msgid "Previous" -msgstr "" - -#: templates/helpdesk/ticket_list.html:223 -#, python-format -msgid "Page %(ticket_num)s of %(num_pages)s." -msgstr "" - -#: templates/helpdesk/ticket_list.html:227 -msgid "Next" -msgstr "" - -#: templates/helpdesk/ticket_list.html:232 -msgid "Select:" -msgstr "" - -#: templates/helpdesk/ticket_list.html:232 -msgid "None" -msgstr "" - -#: templates/helpdesk/ticket_list.html:232 -msgid "Inverse" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "With Selected Tickets:" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Take (Assign to me)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Close" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Close (Don't Send E-Mail)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Close (Send E-Mail)" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Assign To" -msgstr "" - -#: templates/helpdesk/ticket_list.html:234 -msgid "Nobody (Unassign)" -msgstr "" - -#: templates/helpdesk/user_settings.html:3 -msgid "Change User Settings" -msgstr "" - -#: templates/helpdesk/user_settings.html:14 -msgid "" -"\n" -"Use the following options to change the way your helpdesk system works " -"for you. These settings do not impact any other user.
\n" -msgstr "" - -#: templates/helpdesk/user_settings.html:29 -msgid "Save Options" -msgstr "" - -#: templates/helpdesk/registration/logged_out.html:2 -msgid "Logged Out" -msgstr "" - -#: templates/helpdesk/registration/logged_out.html:4 -msgid "" -"\n" -"Thanks for being here. Hopefully you've helped resolve a few tickets and " -"make the world a better place.
\n" -"\n" -msgstr "" - -#: templates/helpdesk/registration/login.html:2 -msgid "Helpdesk Login" -msgstr "" - -#: templates/helpdesk/registration/login.html:9 -#: templates/helpdesk/registration/login.html:21 -msgid "Login" -msgstr "" - -#: templates/helpdesk/registration/login.html:11 -msgid "" -"To log in and begin responding to cases, simply enter your username and " -"password below." -msgstr "" - -#: templates/helpdesk/registration/login.html:14 -msgid "Your username and password didn't match. Please try again." -msgstr "" - -#: templates/helpdesk/registration/login.html:16 -msgid "Username" -msgstr "" - -#: templates/helpdesk/registration/login.html:18 -msgid "Password" -msgstr "" - #: views/feeds.py:35 #, python-format msgid "Helpdesk: Open Tickets in queue %(queue)s for %(username)s" @@ -2193,37 +987,37 @@ msgstr "" msgid "Submitter accepted resolution and closed ticket" msgstr "" -#: views/staff.py:198 +#: views/staff.py:214 msgid "Accepted resolution and closed ticket" msgstr "" -#: views/staff.py:216 +#: views/staff.py:237 msgid "Sorry, you need to login to do that." msgstr "" -#: views/staff.py:256 +#: views/staff.py:274 #, python-format msgid "Assigned to %(username)s" msgstr "" -#: views/staff.py:279 +#: views/staff.py:297 msgid "Updated" msgstr "" -#: views/staff.py:446 +#: views/staff.py:464 #, python-format msgid "Assigned to %(username)s in bulk update" msgstr "" -#: views/staff.py:451 +#: views/staff.py:469 msgid "Unassigned in bulk update" msgstr "" -#: views/staff.py:456 views/staff.py:461 +#: views/staff.py:474 views/staff.py:479 msgid "Closed in bulk update" msgstr "" -#: views/staff.py:666 +#: views/staff.py:684 msgid "" "Note: Your keyword search is case sensitive because of " "your database. This means the search will not be accurate. " @@ -2233,86 +1027,86 @@ msgid "" "matching in SQLite." msgstr "" -#: views/staff.py:775 +#: views/staff.py:797 msgid "Ticket taken off hold" msgstr "" -#: views/staff.py:778 +#: views/staff.py:800 msgid "Ticket placed on hold" msgstr "" -#: views/staff.py:846 +#: views/staff.py:868 msgid "Jan" msgstr "" -#: views/staff.py:847 +#: views/staff.py:869 msgid "Feb" msgstr "" -#: views/staff.py:848 +#: views/staff.py:870 msgid "Mar" msgstr "" -#: views/staff.py:849 +#: views/staff.py:871 msgid "Apr" msgstr "" -#: views/staff.py:850 +#: views/staff.py:872 msgid "May" msgstr "" -#: views/staff.py:851 +#: views/staff.py:873 msgid "Jun" msgstr "" -#: views/staff.py:852 +#: views/staff.py:874 msgid "Jul" msgstr "" -#: views/staff.py:853 +#: views/staff.py:875 msgid "Aug" msgstr "" -#: views/staff.py:854 +#: views/staff.py:876 msgid "Sep" msgstr "" -#: views/staff.py:855 +#: views/staff.py:877 msgid "Oct" msgstr "" -#: views/staff.py:856 +#: views/staff.py:878 msgid "Nov" msgstr "" -#: views/staff.py:857 +#: views/staff.py:879 msgid "Dec" msgstr "" -#: views/staff.py:883 +#: views/staff.py:905 msgid "User by Priority" msgstr "" -#: views/staff.py:889 +#: views/staff.py:911 msgid "User by Queue" msgstr "" -#: views/staff.py:895 +#: views/staff.py:917 msgid "User by Status" msgstr "" -#: views/staff.py:901 +#: views/staff.py:923 msgid "User by Month" msgstr "" -#: views/staff.py:907 +#: views/staff.py:929 msgid "Queue by Priority" msgstr "" -#: views/staff.py:913 +#: views/staff.py:935 msgid "Queue by Status" msgstr "" -#: views/staff.py:919 +#: views/staff.py:941 msgid "Queue by Month" msgstr "" diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index c3b9e33f..d0e9691d 100644 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -25,6 +25,7 @@ from django.core.files.base import ContentFile from django.core.management.base import BaseCommand from django.db.models import Q from django.utils.translation import ugettext as _ +from django.conf import settings from helpdesk.lib import send_templated_mail, safe_template_context from helpdesk.models import Queue, Ticket, FollowUp, Attachment, IgnoreEmail @@ -75,18 +76,22 @@ def process_email(quiet=False): def process_queue(q, quiet=False): if not quiet: print "Processing: %s" % q - if q.email_box_type == 'pop3': - if q.email_box_ssl: + email_box_type = settings.QUEUE_EMAIL_BOX_TYPE if settings.QUEUE_EMAIL_BOX_TYPE else q.email_box_type + + if email_box_type == 'pop3': + + if q.email_box_ssl or settings.QUEUE_EMAIL_BOX_SSL: if not q.email_box_port: q.email_box_port = 995 - server = poplib.POP3_SSL(q.email_box_host, int(q.email_box_port)) + server = poplib.POP3_SSL(q.email_box_host or settings.QUEUE_EMAIL_BOX_HOST, int(q.email_box_port)) else: if not q.email_box_port: q.email_box_port = 110 - server = poplib.POP3(q.email_box_host, int(q.email_box_port)) + server = poplib.POP3(q.email_box_host or settings.QUEUE_EMAIL_BOX_HOST, int(q.email_box_port)) server.getwelcome() - server.user(q.email_box_user) - server.pass_(q.email_box_pass) + server.user(q.email_box_user or settings.QUEUE_EMAIL_BOX_USER) + server.pass_(q.email_box_pass or settings.QUEUE_EMAIL_BOX_PASSWORD) + messagesInfo = server.list()[1] @@ -102,15 +107,15 @@ def process_queue(q, quiet=False): server.quit() - elif q.email_box_type == 'imap': - if q.email_box_ssl: + elif email_box_type == 'imap': + if q.email_box_ssl or settings.QUEUE_EMAIL_BOX_SSL: if not q.email_box_port: q.email_box_port = 993 - server = imaplib.IMAP4_SSL(q.email_box_host, int(q.email_box_port)) + server = imaplib.IMAP4_SSL(q.email_box_host or settings.QUEUE_EMAIL_BOX_HOST, int(q.email_box_port)) else: if not q.email_box_port: q.email_box_port = 143 - server = imaplib.IMAP4(q.email_box_host, int(q.email_box_port)) + server = imaplib.IMAP4(q.email_box_host or settings.QUEUE_EMAIL_BOX_HOST, int(q.email_box_port)) - server.login(q.email_box_user, q.email_box_pass) + server.login(q.email_box_user or settings.QUEUE_EMAIL_BOX_USER, q.email_box_pass or settings.QUEUE_EMAIL_BOX_PASSWORD) server.select(q.email_box_imap_folder) status, data = server.search(None, 'NOT', 'DELETED') @@ -246,61 +251,6 @@ def ticket_from_message(message, queue, quiet): t.status = Ticket.REOPENED_STATUS t.save() - context = safe_template_context(t) - - if new: - - if sender_email: - send_templated_mail( - 'newticket_submitter', - context, - recipients=sender_email, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.new_ticket_cc: - send_templated_mail( - 'newticket_cc', - context, - recipients=queue.new_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.updated_ticket_cc and queue.updated_ticket_cc != queue.new_ticket_cc: - send_templated_mail( - 'newticket_cc', - context, - recipients=queue.updated_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - - else: - if t.status == Ticket.REOPENED_STATUS: - update = _(' (Reopened)') - else: - update = _(' (Updated)') - - if t.assigned_to: - send_templated_mail( - 'updated_owner', - context, - recipients=t.assigned_to.email, - sender=queue.from_address, - fail_silently=True, - ) - - if queue.updated_ticket_cc: - send_templated_mail( - 'updated_cc', - context, - recipients=queue.updated_ticket_cc, - sender=queue.from_address, - fail_silently=True, - ) - f = FollowUp( ticket = t, title = _('E-Mail Received from %(sender_email)s' % {'sender_email': sender_email}), @@ -333,6 +283,64 @@ def ticket_from_message(message, queue, quiet): if not quiet: print " - %s" % filename + + context = safe_template_context(t) + + if new: + + if sender_email: + send_templated_mail( + 'newticket_submitter', + context, + recipients=sender_email, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.new_ticket_cc: + send_templated_mail( + 'newticket_cc', + context, + recipients=queue.new_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.updated_ticket_cc and queue.updated_ticket_cc != queue.new_ticket_cc: + send_templated_mail( + 'newticket_cc', + context, + recipients=queue.updated_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + + else: + context.update(comment=f.comment) + + if t.status == Ticket.REOPENED_STATUS: + update = _(' (Reopened)') + else: + update = _(' (Updated)') + + if t.assigned_to: + send_templated_mail( + 'updated_owner', + context, + recipients=t.assigned_to.email, + sender=queue.from_address, + fail_silently=True, + ) + + if queue.updated_ticket_cc: + send_templated_mail( + 'updated_cc', + context, + recipients=queue.updated_ticket_cc, + sender=queue.from_address, + fail_silently=True, + ) + return t diff --git a/helpdesk/migrations/0004_auto__add_field_ticket_due_date.py b/helpdesk/migrations/0004_auto__add_field_ticket_due_date.py new file mode 100644 index 00000000..0b38e6ee --- /dev/null +++ b/helpdesk/migrations/0004_auto__add_field_ticket_due_date.py @@ -0,0 +1,228 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding field 'Ticket.due_date' + db.add_column('helpdesk_ticket', 'due_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'Ticket.due_date' + db.delete_column('helpdesk_ticket', 'due_date') + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'helpdesk.attachment': { + 'Meta': {'ordering': "['filename']", 'object_name': 'Attachment'}, + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'filename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'followup': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.FollowUp']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'mime_type': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'size': ('django.db.models.fields.IntegerField', [], {}) + }, + 'helpdesk.customfield': { + 'Meta': {'object_name': 'CustomField'}, + 'data_type': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'decimal_places': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'empty_selection_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'help_text': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': "'30'"}), + 'list_values': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'max_length': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'}), + 'ordering': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'staff_only': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'helpdesk.emailtemplate': { + 'Meta': {'ordering': "['template_name', 'locale']", 'object_name': 'EmailTemplate'}, + 'heading': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'html': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'locale': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'plain_text': ('django.db.models.fields.TextField', [], {}), + 'subject': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'helpdesk.escalationexclusion': { + 'Meta': {'object_name': 'EscalationExclusion'}, + 'date': ('django.db.models.fields.DateField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'queues': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['helpdesk.Queue']", 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.followup': { + 'Meta': {'ordering': "['date']", 'object_name': 'FollowUp'}, + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 1, 20, 12, 19, 46, 778593)'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_status': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'ticket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.Ticket']"}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.ignoreemail': { + 'Meta': {'object_name': 'IgnoreEmail'}, + 'date': ('django.db.models.fields.DateField', [], {'blank': 'True'}), + 'email_address': ('django.db.models.fields.CharField', [], {'max_length': '150'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'keep_in_mailbox': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'queues': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['helpdesk.Queue']", 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.kbcategory': { + 'Meta': {'ordering': "['title']", 'object_name': 'KBCategory'}, + 'description': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'helpdesk.kbitem': { + 'Meta': {'ordering': "['title']", 'object_name': 'KBItem'}, + 'answer': ('django.db.models.fields.TextField', [], {}), + 'category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.KBCategory']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_updated': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}), + 'question': ('django.db.models.fields.TextField', [], {}), + 'recommendations': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'votes': ('django.db.models.fields.IntegerField', [], {'default': '0'}) + }, + 'helpdesk.presetreply': { + 'Meta': {'ordering': "['name']", 'object_name': 'PreSetReply'}, + 'body': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'queues': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['helpdesk.Queue']", 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.queue': { + 'Meta': {'ordering': "('title',)", 'object_name': 'Queue'}, + 'allow_email_submission': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'allow_public_submission': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'email_box_host': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'email_box_imap_folder': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'email_box_interval': ('django.db.models.fields.IntegerField', [], {'default': "'5'", 'null': 'True', 'blank': 'True'}), + 'email_box_last_check': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'email_box_pass': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'email_box_port': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'email_box_ssl': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'email_box_type': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'email_box_user': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'escalate_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'locale': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'new_ticket_cc': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'updated_ticket_cc': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.savedsearch': { + 'Meta': {'object_name': 'SavedSearch'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'query': ('django.db.models.fields.TextField', [], {}), + 'shared': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'helpdesk.ticket': { + 'Meta': {'object_name': 'Ticket'}, + 'assigned_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'assigned_to'", 'null': 'True', 'to': "orm['auth.User']"}), + 'created': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'due_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_escalation': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'modified': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}), + 'on_hold': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'priority': ('django.db.models.fields.IntegerField', [], {'default': '3', 'blank': '3'}), + 'queue': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.Queue']"}), + 'resolution': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'submitter_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + 'helpdesk.ticketcc': { + 'Meta': {'object_name': 'TicketCC'}, + 'can_update': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'can_view': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ticket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.Ticket']"}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.ticketchange': { + 'Meta': {'object_name': 'TicketChange'}, + 'field': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'followup': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.FollowUp']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'new_value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'old_value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.ticketcustomfieldvalue': { + 'Meta': {'unique_together': "(('ticket', 'field'),)", 'object_name': 'TicketCustomFieldValue'}, + 'field': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.CustomField']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ticket': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['helpdesk.Ticket']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'helpdesk.ticketdependency': { + 'Meta': {'unique_together': "(('ticket', 'depends_on'),)", 'object_name': 'TicketDependency'}, + 'depends_on': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'depends_on'", 'to': "orm['helpdesk.Ticket']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ticket': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ticketdependency'", 'to': "orm['helpdesk.Ticket']"}) + }, + 'helpdesk.usersettings': { + 'Meta': {'object_name': 'UserSettings'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'settings_pickled': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + } + } + + complete_apps = ['helpdesk'] diff --git a/helpdesk/models.py b/helpdesk/models.py index 5432825d..6ad543f7 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -197,7 +197,7 @@ class Queue(models.Model): return u'%s <%s>' % (self.title, self.email_address) from_address = property(_from_address) - def save(self, force_insert=False, force_update=False): + def save(self, *args, **kwargs): if self.email_box_type == 'imap' and not self.email_box_imap_folder: self.email_box_imap_folder = 'INBOX' @@ -210,7 +210,7 @@ class Queue(models.Model): self.email_box_port = 995 elif self.email_box_type == 'pop3' and not self.email_box_ssl: self.email_box_port = 110 - super(Queue, self).save(force_insert, force_update) + super(Queue, self).save(*args, **kwargs) class Ticket(models.Model): @@ -326,6 +326,12 @@ class Ticket(models.Model): help_text=_('1 = Highest Priority, 5 = Low Priority'), ) + due_date = models.DateTimeField( + _('Due on'), + blank=True, + null=True, + ) + last_escalation = models.DateTimeField( blank=True, null=True, @@ -436,7 +442,7 @@ class Ticket(models.Model): return ('helpdesk_view', (self.id,)) get_absolute_url = models.permalink(get_absolute_url) - def save(self, force_insert=False, force_update=False): + def save(self, *args, **kwargs): if not self.id: # This is a new ticket as no ID yet exists. self.created = datetime.now() @@ -446,7 +452,7 @@ class Ticket(models.Model): self.modified = datetime.now() - super(Ticket, self).save(force_insert, force_update) + super(Ticket, self).save(*args, **kwargs) class FollowUpManager(models.Manager): @@ -527,11 +533,11 @@ class FollowUp(models.Model): def get_absolute_url(self): return u"%s#followup%s" % (self.ticket.get_absolute_url(), self.id) - def save(self, force_insert=False, force_update=False): + def save(self, *args, **kwargs): t = self.ticket t.modified = datetime.now() t.save() - super(FollowUp, self).save(force_insert, force_update) + super(FollowUp, self).save(*args, **kwargs) class TicketChange(models.Model): @@ -843,10 +849,10 @@ class KBItem(models.Model): blank=True, ) - def save(self, force_insert=False, force_update=False): + def save(self, *args, **kwargs): if not self.last_updated: self.last_updated = datetime.now() - return super(KBItem, self).save(force_insert, force_update) + return super(KBItem, self).save(*args, **kwargs) def _score(self): if self.votes > 0: @@ -1024,10 +1030,10 @@ class IgnoreEmail(models.Model): def __unicode__(self): return u'%s' % self.name - def save(self): + def save(self, *args, **kwargs): if not self.date: self.date = datetime.now() - return super(IgnoreEmail, self).save() + return super(IgnoreEmail, self).save(*args, **kwargs) def test(self, email): """ diff --git a/helpdesk/settings.py b/helpdesk/settings.py index 55849c74..25df259e 100644 --- a/helpdesk/settings.py +++ b/helpdesk/settings.py @@ -40,6 +40,9 @@ HELPDESK_PREPEND_ORG_NAME = getattr(settings, 'HELPDESK_PREPEND_ORG_NAME', False # show knowledgebase links? HELPDESK_KB_ENABLED = getattr(settings, 'HELPDESK_KB_ENABLED', True) +# show knowledgebase links on staff view? +HELPDESK_KB_ENABLED_STAFF = getattr(settings, 'HELPDESK_KB_ENABLED_STAFF', False) + # show extended navigation by default, to all users, irrespective of staff status? HELPDESK_NAVIGATION_ENABLED = getattr(settings, 'HELPDESK_NAVIGATION_ENABLED', False) @@ -55,7 +58,7 @@ HELPDESK_SUPPORT_PERSON = getattr(settings, 'HELPDESK_SUPPORT_PERSON', False) HELPDESK_TRANSLATE_TICKET_COMMENTS = getattr(settings, 'HELPDESK_TRANSLATE_TICKET_COMMENTS', False) # list of languages to offer. if set to false, all default google translate languages will be shown. -HELPDESK_TRANSLATE_TICKET_COMMENTS_LANG = getattr(settings, 'HELPDESK_TRANSLATE_TICKET_COMMENTS_LANG', ["en", "de", "fr", "ru"]) +HELPDESK_TRANSLATE_TICKET_COMMENTS_LANG = getattr(settings, 'HELPDESK_TRANSLATE_TICKET_COMMENTS_LANG', ["en", "de", "fr", "it", "ru"]) # show link to 'change password' on 'User Settings' page? HELPDESK_SHOW_CHANGE_PASSWORD = getattr(settings, 'HELPDESK_SHOW_CHANGE_PASSWORD', False) @@ -78,6 +81,9 @@ HELPDESK_VIEW_A_TICKET_PUBLIC = getattr(settings, 'HELPDESK_VIEW_A_TICKET_PUBLIC # show 'submit a ticket' section on public page? HELPDESK_SUBMIT_A_TICKET_PUBLIC = getattr(settings, 'HELPDESK_SUBMIT_A_TICKET_PUBLIC', True) +# Should we should the KB categories on the homepage? +HELPDESK_SHOW_KB_ON_HOMEPAGE = getattr(settings, 'HELPDESK_SHOW_KB_ON_HOMEPAGE', False) + ''' options for update_ticket views ''' @@ -103,6 +109,12 @@ HELPDESK_SHOW_HOLD_BUTTON_TICKET_TOP = getattr(settings, 'HELPDESK_SHOW_HOLD_BUT # make all updates public by default? this will hide the 'is this update public' checkbox HELPDESK_UPDATE_PUBLIC_DEFAULT = getattr(settings, 'HELPDESK_UPDATE_PUBLIC_DEFAULT', True) +# only show staff users in ticket owner drop-downs +HELPDESK_STAFF_ONLY_TICKET_OWNERS = getattr(settings, 'HELPDESK_STAFF_ONLY_TICKET_OWNERS', False) + +# only show staff users in ticket cc drop-down +HELPDESK_STAFF_ONLY_TICKET_CC = getattr(settings, 'HELPDESK_STAFF_ONLY_TICKET_CC', False) + ''' options for staff.create_ticket view ''' @@ -129,3 +141,10 @@ HELPDESK_FOOTER_SHOW_API_LINK = getattr(settings, 'HELPDESK_FOOTER_SHOW_API_LINK # show / hide 'change language' link at bottom of page HELPDESK_FOOTER_SHOW_CHANGE_LANGUAGE_LINK = getattr(settings, 'HELPDESK_FOOTER_SHOW_CHANGE_LANGUAGE_LINK', False) +''' email options ''' +# default Queue email submission settings +QUEUE_EMAIL_BOX_TYPE = getattr(settings, 'QUEUE_EMAIL_BOX_TYPE', None) +QUEUE_EMAIL_BOX_SSL = getattr(settings, 'QUEUE_EMAIL_BOX_SSL', None) +QUEUE_EMAIL_BOX_HOST = getattr(settings, 'QUEUE_EMAIL_BOX_HOST', None) +QUEUE_EMAIL_BOX_USER = getattr(settings, 'QUEUE_EMAIL_BOX_USER', None) +QUEUE_EMAIL_BOX_PASSWORD = getattr(settings, 'QUEUE_EMAIL_BOX_PASSWORD', None) diff --git a/helpdesk/static/helpdesk/helpdesk-print.css b/helpdesk/static/helpdesk/helpdesk-print.css new file mode 100644 index 00000000..e69de29b diff --git a/helpdesk/templates/helpdesk/base.html b/helpdesk/templates/helpdesk/base.html index 34815234..7282087c 100644 --- a/helpdesk/templates/helpdesk/base.html +++ b/helpdesk/templates/helpdesk/base.html @@ -12,7 +12,8 @@ {% comment %} {% endcomment %} - + + diff --git a/helpdesk/templates/helpdesk/it/email_html_base.html b/helpdesk/templates/helpdesk/it/email_html_base.html new file mode 100644 index 00000000..24384435 --- /dev/null +++ b/helpdesk/templates/helpdesk/it/email_html_base.html @@ -0,0 +1,9 @@ +
Cordiali saluti,
+ +{{ queue.title }}{% if queue.email_address %}
{{ queue.email_address }}{% endif %}
Questa email vi è stata inviata in quanto utenti del nostro servizio di supporto clienti, in conformità con la nostra policy sulla privacy. Vi preghiamo di informarci se pensate di aver ricevuto questa email per errore.
diff --git a/helpdesk/templates/helpdesk/it/email_text_footer.txt b/helpdesk/templates/helpdesk/it/email_text_footer.txt new file mode 100644 index 00000000..dd66f47e --- /dev/null +++ b/helpdesk/templates/helpdesk/it/email_text_footer.txt @@ -0,0 +1,6 @@ +Cordiali saluti, + +{{ queue.title }}{% if queue.email_address %} +{{ queue.email_address }}{% endif %} + +Questa email vi è stata inviata in quanto utenti del nostro servizio di supporto clienti, in conformità con la nostra policy sulla privacy. Vi preghiamo di informarci se pensate di aver ricevuto questa email per errore. diff --git a/helpdesk/templates/helpdesk/navigation.html b/helpdesk/templates/helpdesk/navigation.html index ba9bb9cd..0bb6792f 100644 --- a/helpdesk/templates/helpdesk/navigation.html +++ b/helpdesk/templates/helpdesk/navigation.html @@ -7,6 +7,9 @@ {% if helpdesk_settings.HELPDESK_NAVIGATION_STATS_ENABLED %}{% trans "Knowledgebase Categories" %} |
{% trans "Category" %} |
---|
{{ category.title }} |
{{ category.description }} |