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\n

Ti \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)

\r\n\r\n

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\n

Ti \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)

\r\n\r\n

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\n

Il 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)

\r\n\r\n

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\n

Il 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)

\r\n\r\n

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\n

Hai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email ti \u00e8 inviata come conferma della chiusura del ticket..

\r\n\r\n

La 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\n

Ti \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)

\r\n\r\n

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\n

La 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)

\r\n\r\n

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\n

Hai 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\n

Esamineremo a breve il ticket e cercheremo di fornire una risoluzione quanto prima.

\r\n\r\n

Se 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\n

Questa 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)

\r\n\r\n

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\n

Questa email ti \u00e8 stata inviata per informarti che abbiamo ricevuto la tua richiesta di helpdesk dall'oggetto {{ ticket.title }}.

\r\n\r\n

Non \u00e8 necessario fare altro al momento. Al tuo ticket \u00e8 stato assegnato l'identificativo {{ ticket.ticket }} e verr\u00e0 presto esaminato.

\r\n\r\n

Se 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\n

Se 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\n

Analizzeremo 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\n

Il 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)

\r\n\r\n

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\n

Un 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)

\r\n\r\n

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\n

Hai recentemente inserito un ticket dall'oggetto {{ ticket.title }}. Questa email vi \u00e8 stata inviata per informarvi della risoluzione del ticket.

\r\n\r\n

La 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\n

Se 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\n

Questa 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)

\r\n\r\n

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\n

Ti \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)

\r\n\r\n

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\n

Hai 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\n

Il 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 " "\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: forms.py:109 forms.py:342 models.py:262 -#: templates/helpdesk/dashboard.html:11 templates/helpdesk/dashboard.html:37 -#: templates/helpdesk/dashboard.html:57 templates/helpdesk/dashboard.html:77 -#: templates/helpdesk/dashboard.html:99 templates/helpdesk/rss_list.html:23 -#: templates/helpdesk/ticket_list.html:56 -#: templates/helpdesk/ticket_list.html:78 -#: templates/helpdesk/ticket_list.html:199 views/staff.py:908 -#: views/staff.py:914 views/staff.py:920 +#: forms.py:113 forms.py:346 models.py:262 views/staff.py:930 +#: views/staff.py:936 views/staff.py:942 msgid "Queue" msgstr "" -#: forms.py:118 +#: forms.py:122 msgid "Summary of the problem" msgstr "" -#: forms.py:123 +#: forms.py:127 msgid "Submitter E-Mail Address" msgstr "" -#: forms.py:125 +#: forms.py:129 msgid "" "This e-mail address will receive copies of all public updates to this ticket." msgstr "" -#: forms.py:131 +#: forms.py:135 msgid "Description of Issue" msgstr "" -#: forms.py:138 +#: forms.py:142 msgid "Case owner" msgstr "" -#: forms.py:139 +#: forms.py:143 msgid "" "If you select an owner other than yourself, they'll be e-mailed details of " "this ticket immediately." msgstr "" -#: forms.py:147 models.py:322 management/commands/escalate_tickets.py:152 -#: templates/helpdesk/public_view_ticket.html:21 -#: templates/helpdesk/ticket.html:163 -#: templates/helpdesk/ticket_desc_table.html:31 -#: templates/helpdesk/ticket_list.html:84 views/staff.py:316 +#: forms.py:151 models.py:322 management/commands/escalate_tickets.py:149 +#: views/staff.py:334 msgid "Priority" msgstr "" -#: forms.py:148 +#: forms.py:152 msgid "Please select a priority carefully. If unsure, leave it as '3'." msgstr "" -#: forms.py:154 forms.py:378 +#: forms.py:158 forms.py:387 msgid "Attach File" msgstr "" -#: forms.py:155 forms.py:379 +#: forms.py:159 forms.py:388 msgid "You can attach a file such as a document or screenshot to this ticket." msgstr "" -#: forms.py:163 templates/helpdesk/public_view_ticket.html:33 -#: templates/helpdesk/ticket.html:166 -#: templates/helpdesk/ticket_desc_table.html:42 -#: templates/helpdesk/ticket_list.html:61 -#: templates/helpdesk/ticket_list.html:199 views/staff.py:327 +#: forms.py:167 views/staff.py:345 msgid "Tags" msgstr "" -#: forms.py:164 +#: forms.py:168 msgid "" "Words, separated by spaces, or phrases separated by commas. These should " "communicate significant characteristics of this ticket" msgstr "" -#: forms.py:254 +#: forms.py:261 msgid "Ticket Opened" msgstr "" -#: forms.py:261 +#: forms.py:268 #, python-format msgid "Ticket Opened & Assigned to %(name)s" msgstr "" -#: forms.py:351 +#: forms.py:355 msgid "Summary of your query" msgstr "" -#: forms.py:356 +#: forms.py:360 msgid "Your E-Mail Address" msgstr "" -#: forms.py:357 +#: forms.py:361 msgid "We will e-mail you when your ticket is updated." msgstr "" -#: forms.py:362 +#: forms.py:366 msgid "Description of your issue" msgstr "" -#: forms.py:364 +#: forms.py:368 msgid "" "Please be as descriptive as possible, including any details we may need to " "address your query." msgstr "" -#: forms.py:372 +#: forms.py:376 msgid "Urgency" msgstr "" -#: forms.py:373 +#: forms.py:377 msgid "Please select a priority carefully." msgstr "" -#: forms.py:461 +#: forms.py:382 +msgid "Due on" +msgstr "" + +#: forms.py:470 msgid "Ticket Opened Via Web" msgstr "" -#: forms.py:531 +#: forms.py:537 msgid "Show Ticket List on Login?" msgstr "" -#: forms.py:532 +#: forms.py:538 msgid "Display the ticket list upon login? Otherwise, the dashboard is shown." msgstr "" -#: forms.py:537 +#: forms.py:543 msgid "E-mail me on ticket change?" msgstr "" -#: forms.py:538 +#: forms.py:544 msgid "" "If you're the ticket owner and the ticket is changed via the web by somebody " "else, do you want to receive an e-mail?" msgstr "" -#: forms.py:543 +#: forms.py:549 msgid "E-mail me when assigned a ticket?" msgstr "" -#: forms.py:544 +#: forms.py:550 msgid "" "If you are assigned a ticket via the web, do you want to receive an e-mail?" msgstr "" -#: forms.py:549 +#: forms.py:555 msgid "E-mail me when a ticket is changed via the API?" msgstr "" -#: forms.py:550 +#: forms.py:556 msgid "If a ticket is altered by the API, do you want to receive an e-mail?" msgstr "" -#: forms.py:555 +#: forms.py:561 msgid "Number of tickets to show per page" msgstr "" -#: forms.py:556 +#: forms.py:562 msgid "How many tickets do you want to see on the Ticket List page?" msgstr "" -#: forms.py:563 +#: forms.py:569 msgid "Use my e-mail address when submitting tickets?" msgstr "" -#: forms.py:564 +#: forms.py:570 msgid "" "When you submit a ticket, do you want to automatically use your e-mail " "address as the submitter address? You can type a different e-mail address " @@ -185,14 +176,11 @@ msgid "" msgstr "" #: models.py:32 models.py:256 models.py:484 models.py:781 models.py:815 -#: templates/helpdesk/dashboard.html:37 templates/helpdesk/dashboard.html:57 -#: templates/helpdesk/dashboard.html:77 templates/helpdesk/dashboard.html:99 -#: templates/helpdesk/ticket.html:157 templates/helpdesk/ticket_list.html:75 -#: templates/helpdesk/ticket_list.html:199 views/staff.py:306 +#: views/staff.py:324 msgid "Title" msgstr "" -#: models.py:37 models.py:786 models.py:1152 +#: models.py:37 models.py:786 models.py:1156 msgid "Slug" msgstr "" @@ -202,9 +190,7 @@ msgid "" "or e-mailing may get messy." msgstr "" -#: models.py:43 models.py:1009 models.py:1079 models.py:1149 -#: templates/helpdesk/email_ignore_list.html:13 -#: templates/helpdesk/ticket_cc_list.html:15 +#: models.py:43 models.py:1009 models.py:1079 models.py:1153 msgid "E-Mail Address" msgstr "" @@ -356,31 +342,23 @@ msgstr "" msgid "How often do you wish to check this mailbox? (in Minutes)" msgstr "" -#: models.py:240 templates/helpdesk/dashboard.html:11 -#: templates/helpdesk/ticket.html:117 +#: models.py:240 msgid "Open" msgstr "" -#: models.py:241 templates/helpdesk/ticket.html:123 -#: templates/helpdesk/ticket.html.py:129 templates/helpdesk/ticket.html:134 -#: templates/helpdesk/ticket.html.py:138 +#: models.py:241 msgid "Reopened" msgstr "" -#: models.py:242 templates/helpdesk/dashboard.html:11 -#: templates/helpdesk/ticket.html:118 templates/helpdesk/ticket.html.py:124 -#: templates/helpdesk/ticket.html:130 +#: models.py:242 msgid "Resolved" msgstr "" -#: models.py:243 templates/helpdesk/dashboard.html:11 -#: templates/helpdesk/ticket.html:119 templates/helpdesk/ticket.html.py:125 -#: templates/helpdesk/ticket.html:131 templates/helpdesk/ticket.html.py:135 +#: models.py:243 msgid "Closed" msgstr "" -#: models.py:244 templates/helpdesk/ticket.html:120 -#: templates/helpdesk/ticket.html.py:126 templates/helpdesk/ticket.html:139 +#: models.py:244 msgid "Duplicate" msgstr "" @@ -404,9 +382,7 @@ msgstr "" msgid "5. Very Low" msgstr "" -#: models.py:266 templates/helpdesk/dashboard.html:77 -#: templates/helpdesk/ticket_list.html:72 -#: templates/helpdesk/ticket_list.html:199 +#: models.py:266 msgid "Created" msgstr "" @@ -422,8 +398,7 @@ msgstr "" msgid "Date this ticket was most recently changed." msgstr "" -#: models.py:278 templates/helpdesk/public_view_ticket.html:16 -#: templates/helpdesk/ticket_desc_table.html:26 +#: models.py:278 msgid "Submitter E-Mail" msgstr "" @@ -437,11 +412,7 @@ msgstr "" msgid "Assigned to" msgstr "" -#: models.py:294 templates/helpdesk/dashboard.html:37 -#: templates/helpdesk/dashboard.html:57 templates/helpdesk/dashboard.html:99 -#: templates/helpdesk/ticket_list.html:57 -#: templates/helpdesk/ticket_list.html:81 -#: templates/helpdesk/ticket_list.html:199 +#: models.py:294 msgid "Status" msgstr "" @@ -453,8 +424,7 @@ msgstr "" msgid "If a ticket is on hold, it will not automatically be escalated." msgstr "" -#: models.py:308 models.py:790 templates/helpdesk/public_view_ticket.html:39 -#: templates/helpdesk/ticket_desc_table.html:67 +#: models.py:308 models.py:790 msgid "Description" msgstr "" @@ -462,8 +432,7 @@ msgstr "" msgid "The content of the customers query." msgstr "" -#: models.py:315 templates/helpdesk/public_view_ticket.html:46 -#: templates/helpdesk/ticket_desc_table.html:74 +#: models.py:315 msgid "Resolution" msgstr "" @@ -481,8 +450,8 @@ msgid "" "management/commands/escalate_tickets.py." msgstr "" -#: models.py:342 templates/helpdesk/ticket_desc_table.html:22 -#: views/feeds.py:91 views/feeds.py:117 views/feeds.py:171 views/staff.py:263 +#: models.py:342 views/feeds.py:91 views/feeds.py:117 views/feeds.py:171 +#: views/staff.py:281 msgid "Unassigned" msgstr "" @@ -490,17 +459,15 @@ msgstr "" msgid " - On Hold" msgstr "" -#: models.py:475 models.py:1067 models.py:1207 models.py:1232 -#: templates/helpdesk/public_homepage.html:10 -#: templates/helpdesk/public_view_form.html:12 +#: models.py:475 models.py:1067 models.py:1225 models.py:1250 msgid "Ticket" msgstr "" -#: models.py:479 models.py:708 models.py:1002 models.py:1146 +#: models.py:479 models.py:708 models.py:1002 models.py:1150 msgid "Date" msgstr "" -#: models.py:491 views/staff.py:277 +#: models.py:491 views/staff.py:295 msgid "Comment" msgstr "" @@ -514,12 +481,12 @@ msgid "" "tickets can only be seen by staff." msgstr "" -#: models.py:508 models.py:882 models.py:1075 views/staff.py:884 -#: views/staff.py:890 views/staff.py:896 views/staff.py:902 +#: models.py:508 models.py:882 models.py:1075 views/staff.py:906 +#: views/staff.py:912 views/staff.py:918 views/staff.py:924 msgid "User" msgstr "" -#: models.py:512 templates/helpdesk/ticket.html:114 +#: models.py:512 msgid "New Status" msgstr "" @@ -531,7 +498,7 @@ msgstr "" msgid "Follow-up" msgstr "" -#: models.py:549 models.py:1212 +#: models.py:549 models.py:1230 msgid "Field" msgstr "" @@ -584,7 +551,6 @@ msgid "" msgstr "" #: models.py:662 models.py:703 models.py:997 -#: templates/helpdesk/email_ignore_list.html:13 msgid "Name" msgstr "" @@ -660,7 +626,7 @@ msgstr "" msgid "Locale of this template." msgstr "" -#: models.py:811 templates/helpdesk/kb_index.html:10 +#: models.py:811 msgid "Category" msgstr "" @@ -700,7 +666,7 @@ msgstr "" msgid "Unrated" msgstr "" -#: models.py:886 templates/helpdesk/ticket_list.html:158 +#: models.py:886 msgid "Query Name" msgstr "" @@ -784,118 +750,136 @@ msgstr "" msgid "Can this CC login and update the ticket?" msgstr "" -#: models.py:1121 +#: models.py:1125 msgid "Field Name" msgstr "" -#: models.py:1122 +#: models.py:1126 msgid "" "As used in the database and behind the scenes. Must be unique and consist of " "only lowercase letters with no punctuation." msgstr "" -#: models.py:1127 +#: models.py:1131 msgid "Label" msgstr "" -#: models.py:1129 +#: models.py:1133 msgid "The display label for this field" msgstr "" -#: models.py:1133 +#: models.py:1137 msgid "Help Text" msgstr "" -#: models.py:1134 +#: models.py:1138 msgid "Shown to the user when editing the ticket" msgstr "" -#: models.py:1140 +#: models.py:1144 msgid "Character (single line)" msgstr "" -#: models.py:1141 +#: models.py:1145 msgid "Text (multi-line)" msgstr "" -#: models.py:1142 +#: models.py:1146 msgid "Integer" msgstr "" -#: models.py:1143 +#: models.py:1147 msgid "Decimal" msgstr "" -#: models.py:1144 +#: models.py:1148 msgid "List" msgstr "" -#: models.py:1145 +#: models.py:1149 msgid "Boolean (checkbox yes/no)" msgstr "" -#: models.py:1147 +#: models.py:1151 msgid "Time" msgstr "" -#: models.py:1148 +#: models.py:1152 msgid "Date & Time" msgstr "" -#: models.py:1150 +#: models.py:1154 msgid "URL" msgstr "" -#: models.py:1151 +#: models.py:1155 msgid "IP Address" msgstr "" -#: models.py:1156 +#: models.py:1160 msgid "Data Type" msgstr "" -#: models.py:1158 +#: models.py:1162 msgid "Allows you to restrict the data entered into this field" msgstr "" -#: models.py:1163 +#: models.py:1167 msgid "Maximum Length (characters)" msgstr "" -#: models.py:1169 +#: models.py:1173 msgid "Decimal Places" msgstr "" -#: models.py:1170 +#: models.py:1174 msgid "Only used for decimal fields" msgstr "" -#: models.py:1176 +#: models.py:1180 +msgid "Add empty first choice to List?" +msgstr "" + +#: models.py:1181 +msgid "" +"Only for List: adds an empty first entry to the choices list, which enforces " +"that the user makes an active choice." +msgstr "" + +#: models.py:1185 msgid "List Values" msgstr "" -#: models.py:1177 +#: models.py:1186 msgid "For list fields only. Enter one option per line." msgstr "" -#: models.py:1191 +#: models.py:1192 +msgid "Ordering" +msgstr "" + +#: models.py:1193 +msgid "Lower numbers are displayed first; higher numbers are listed later" +msgstr "" + +#: models.py:1207 msgid "Required?" msgstr "" -#: models.py:1192 +#: models.py:1208 msgid "Does the user have to enter a value for this field?" msgstr "" -#: models.py:1196 +#: models.py:1212 msgid "Staff Only?" msgstr "" -#: models.py:1197 +#: models.py:1213 msgid "" "If this is ticked, then the public submission form will NOT show this field" msgstr "" -#: models.py:1238 +#: models.py:1256 msgid "Depends On Ticket" msgstr "" @@ -906,1237 +890,47 @@ msgid "" "suit your situation." msgstr "" -#: management/commands/escalate_tickets.py:146 +#: management/commands/escalate_tickets.py:143 #, python-format msgid "Ticket escalated after %s days" msgstr "" -#: management/commands/get_email.py:146 +#: management/commands/get_email.py:151 msgid "Created from e-mail" msgstr "" -#: management/commands/get_email.py:150 +#: management/commands/get_email.py:155 msgid "Unknown Sender" msgstr "" -#: management/commands/get_email.py:204 +#: management/commands/get_email.py:209 msgid "" "No plain-text email body available. Please see attachment email_html_body." "html." msgstr "" -#: management/commands/get_email.py:208 +#: management/commands/get_email.py:213 msgid "email_html_body.html" msgstr "" -#: management/commands/get_email.py:285 +#: management/commands/get_email.py:287 msgid " (Reopened)" msgstr "" -#: management/commands/get_email.py:287 +#: management/commands/get_email.py:289 msgid " (Updated)" msgstr "" -#: management/commands/get_email.py:309 +#: management/commands/get_email.py:311 #, python-format msgid "E-Mail Received from %(sender_email)s" msgstr "" -#: management/commands/get_email.py:317 +#: management/commands/get_email.py:319 #, python-format msgid "Ticket Re-Opened by E-Mail Received from %(sender_email)s" msgstr "" -#: templates/helpdesk/attribution.html:2 -msgid "" -"Powered by django-" -"helpdesk." -msgstr "" - -#: templates/helpdesk/attribution.html:4 -msgid "For technical support please contact:" -msgstr "" - -#: templates/helpdesk/base.html:9 -msgid "Powered by django-helpdesk" -msgstr "" - -#: templates/helpdesk/base.html:15 templates/helpdesk/rss_list.html:9 -#: templates/helpdesk/rss_list.html:23 templates/helpdesk/rss_list.html:28 -msgid "My Open Tickets" -msgstr "" - -#: templates/helpdesk/base.html:16 -msgid "All Recent Activity" -msgstr "" - -#: templates/helpdesk/base.html:17 templates/helpdesk/dashboard.html:76 -#: templates/helpdesk/rss_list.html:15 -msgid "Unassigned Tickets" -msgstr "" - -#: templates/helpdesk/base.html:88 templates/helpdesk/public_base.html:6 -#: templates/helpdesk/public_base.html:14 -msgid "Helpdesk" -msgstr "" - -#: templates/helpdesk/base.html:98 templates/helpdesk/rss_list.html:9 -#: templates/helpdesk/rss_list.html:12 templates/helpdesk/rss_list.html:15 -#: templates/helpdesk/rss_list.html:27 templates/helpdesk/rss_list.html:28 -msgid "RSS Icon" -msgstr "" - -#: templates/helpdesk/base.html:98 templates/helpdesk/rss_list.html:2 -#: templates/helpdesk/rss_list.html.py:4 -msgid "RSS Feeds" -msgstr "" - -#: templates/helpdesk/base.html:99 -msgid "API" -msgstr "" - -#: templates/helpdesk/base.html:100 -msgid "User Settings" -msgstr "" - -#: templates/helpdesk/base.html:102 -msgid "Change Language" -msgstr "" - -#: templates/helpdesk/base.html:104 -msgid "System Settings" -msgstr "" - -#: templates/helpdesk/confirm_delete_saved_query.html:3 -#: templates/helpdesk/ticket_list.html:144 -msgid "Delete Saved Query" -msgstr "" - -#: templates/helpdesk/confirm_delete_saved_query.html:5 -#, python-format -msgid "" -"\n" -"

Delete Query

\n" -"\n" -"

Are you sure you want to delete this saved filter (%(query_title)s)? 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 "" -"

Submit a Ticket

\n" -"\n" -"

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" -"

Delete Ticket

\n" -"\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 "" -"

Edit a Ticket

\n" -"\n" -"

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" -"

Ignore E-Mail Address

\n" -"\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 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" -"

Un-Ignore E-Mail Address

\n" -"\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" -"

Ignored E-Mail Addresses

\n" -"\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, 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" -"

System Settings

\n" -"\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" -"

Add Ticket CC

\n" -"\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" -"

Delete Ticket CC

\n" -"\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" -"

Ticket CC Settings

\n" -"\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" -"

Add Ticket Dependency

\n" -"\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" -"

Delete Ticket Dependency

\n" -"\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" -"

User Settings

\n" -"\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" -"

Logged Out

\n" -"\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 @@ +

{% block header %}Helpdesk{% endblock %}

+ +{% block content %}{% endblock %} + +

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 "Stats" %}
  • {% endif %} + {% if helpdesk_settings.HELPDESK_KB_ENABLED_STAFF %} +
  • {% trans "Knowledgebase" %}
  • + {% endif %} {% if user_saved_queries_ %}