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/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..f9d69a09 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') 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 c88dbf65..6ad543f7 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -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, diff --git a/helpdesk/settings.py b/helpdesk/settings.py index 41386a8e..e712ad37 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) @@ -97,6 +100,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 ''' @@ -121,3 +130,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/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_ %}