Commit Graph

656 Commits

Author SHA1 Message Date
Jonathan Barratt
e82e5fcd5f
urlquote email address when used as get query param 2016-12-11 06:20:03 +07:00
Pawel M
94c39cba69
solves Title changed to . (Null title) on failed attachment upload. 2016-12-11 06:00:05 +07:00
Jonathan Barratt
5acd891c68
refactor all handling of attached files
Extract attachment processing from forms, views.staff, and management.command.get_email modules, and consolidate it into a unified lib module function.
Also refactor the affected components, most notably lib.send_templated_email, to make it easier (IMO) to reason about changes to them.
Add unit tests for attachments with UTF-8 filenames, and functional tests for submission of same, as well as ASCII versions, through the public ticket-form.
Remove unused Attachment method "get_upload_to".
2016-12-08 19:47:20 +07:00
Jonathan Barratt
391e35065c
per code review, update safe IP addr/port constants, remove commented-out code, and add comments to unexplained code 2016-12-06 09:55:22 +07:00
Jonathan Barratt
e8d0c5b2c7
implement mocked pop3 and imap tests for get_email
also update travis to latest django patch releases
2016-12-02 19:04:52 +07:00
Alex Seeholzer
399b0901f6
newer version of tests 2016-12-02 17:40:46 +07:00
Alex Seeholzer
72a99cc99a
Moved existing test for local mailbox into generation of tests for matrix of email configurations; 2016-12-02 17:40:46 +07:00
Jonathan Barratt
3cfa371199
hotfix for #456: patch calls to ticket_from_message
add logger arg where missing in get_email
2016-11-29 00:46:42 +07:00
Jonathan Barratt
cac3267e82 Merge pull request #454 from reduxionist/prune-legacy-code
Prune legacy code
2016-11-21 20:32:35 +07:00
Jonathan Barratt
45a8ce98ac Merge pull request #455 from gwasser/ticket_list_view
Use HTML5 table ordering based on Unix epoch
2016-11-21 20:29:13 +07:00
Garret Wassermann
04f27fdcff Use HTML5 table ordering based on Unix epoch 2016-11-21 00:12:24 -05:00
Jonathan Barratt
7738bba2ab
remove special-case imports for legacy versions
standardise use, or avoidance, of timezone, template from_string, and Context
2016-11-21 10:16:03 +07:00
Will Stott
f34696df8d Use Django's six module for StringIO imports. 2016-11-17 11:25:46 +00:00
Garret Wassermann
97a24fbe22
Ensure that local files are deleted after processing, and add some information about it to the install.rst documentation 2016-11-12 11:32:04 +07:00
Jonathan Barratt
ebfea8274d
convert reverse-URL lookups to helpdesk namespace
in views.staff, this fixes:
-run_report's no-tickets-found redirect to report_index
-del_attachment's redirect to parent ticket view after deletion
2016-11-11 10:31:37 +07:00
Alex Barcelo
b0b68b9541 drop south_migrations folder 2016-11-02 17:22:47 +01:00
Alex Seeholzer
62163eaf0e patch: implicit closing of open files; 2016-11-01 15:03:51 +01:00
Garret Wassermann
2a7d82413b Miscellaneous improvements from review of #419 2016-10-31 02:57:08 -04:00
Garret Wassermann
37b9d332de Fix some more missing namespace references for login and kb_category 2016-10-31 02:19:41 -04:00
Garret Wassermann
c74208325b Removed test_per_queue_staff_permission assertion, report_index no longer returns unassigned_tickets 2016-10-31 02:06:49 -04:00
Garret Wassermann
26f4987726 Fix a missing helpdesk namespace reference in report_index.html 2016-10-31 01:42:45 -04:00
Garret Wassermann
194641613c Sync with upstream, merged in AbstractForm with bootstrap class 2016-10-31 01:38:49 -04:00
Alex Barcelo
abd6fdcebe simplifying if-case branches on CustomFieldMixin 2016-10-30 20:53:18 +01:00
Alex Barcelo
cce12181f0 refactoring single-letter variables into better names 2016-10-30 20:43:05 +01:00
Alex Barcelo
681a1893bd missed a refactoring 2016-10-30 08:42:05 +01:00
Alex Barcelo
d8d10fae90 DRY in *TicketForm --by adding an Abstrat~ one 2016-10-30 08:39:17 +01:00
Alex Barcelo
bea6fbf75a fixing a deprecated usage, and adding a minor branch control 2016-10-30 08:38:49 +01:00
Garret Wassermann
adf2b16c2c Fix namespaces in test 2016-10-29 04:33:27 -04:00
Garret Wassermann
dc25164304 More PEP8 changes (hopefully last) 2016-10-29 04:27:29 -04:00
Garret Wassermann
4cf46156f1 More PEP8 changes 2016-10-29 04:20:16 -04:00
Garret Wassermann
1f1d477a35 Sync again with master 0.2 2016-10-29 04:11:41 -04:00
Garret Wassermann
d791700582 Fix PEP8 errors 2016-10-29 04:08:57 -04:00
Jonathan Barratt
28308d19fb
cleanup build-breaking whitespace merge errors 2016-10-29 14:59:14 +07:00
Garret Wassermann
cad174468b Sync with namespace and other v0.2 changes 2016-10-29 03:47:15 -04:00
Jonathan Barratt
26c0f2e59f Merge pull request #441 from alexbarcelo/api-prune
Remove all the deprecated API related files and references
2016-10-29 14:12:31 +07:00
Alex Barcelo
53ed0d3a2c Remove all the deprecated API related files and references 2016-10-29 08:50:13 +02:00
Jonathan Barratt
43c067dd4f
merge changes from updated master 2016-10-29 13:35:03 +07:00
Jonathan Barratt
790f1fc003 Merge pull request #374 from alexbarcelo/urls_app_name
Set app_name as 'helpdesk' at the urls.py, and droping url prefixes
2016-10-28 15:59:29 +07:00
Alex Barcelo
6761ad6c10 fixing RST syntax for docstring on akismet.py 2016-10-26 10:22:15 +02:00
Alex Barcelo
f017adea63 fixing those two python files 2016-10-24 10:05:41 +02:00
Alex Barcelo
89a6ae01b8 Fixing style (according to branch 'autocodestyle') + quicktest 2016-10-24 08:04:31 +02:00
Alex Barcelo
179ceb2f82 fixing style on tests 2016-10-23 22:10:32 +02:00
Alex Barcelo
30e3aa55aa almost auto-fix on misc files 2016-10-23 22:09:17 +02:00
Alex Barcelo
3c35473265 fixing views.py (except deprecated api) 2016-10-23 22:02:02 +02:00
Alex Barcelo
24d88be8d9 Initial general clean-up of stuff 2016-10-21 17:14:12 +02:00
Garret Wassermann
d7875587b7 Revert previous change 2016-10-20 12:05:28 -04:00
Garret Wassermann
884662dd21 Ensure binary data is returns so Django can decode it 2016-10-20 11:46:09 -04:00
Garret Wassermann
dfb7987ebb Remove emails from queue in test_get_email 2016-10-20 11:17:51 -04:00
Garret Wassermann
197fad99d2 Remove mail templates since we're not testing them here; might be good to include a test for this elsewhere 2016-10-20 02:48:14 -04:00
Garret Wassermann
5e93297787 Fix call_command options for correct format to work with Django 1.7+ 2016-10-20 02:29:23 -04:00
Garret Wassermann
6418194b85 Fix command line arg for Django 1.7 and make Python 2 and 3 compatible test 2016-10-20 02:21:43 -04:00
Garret Wassermann
9606201200 Fix mock tests for get_email (hopefully for good this time) 2016-10-20 02:09:05 -04:00
Garret Wassermann
b7ef83f7d2 Check that folder is a dir before checking for mail using get_email; fix unit test for --quiet 2016-10-20 01:39:24 -04:00
Garret Wassermann
e3c9e04feb Fix python module naming in get_email test 2016-10-20 01:25:16 -04:00
Jonathan Barratt
af893bdcc8 Merge pull request #428 from jflesch/master
Fix form translations
2016-10-20 12:16:31 +07:00
Daryl
3b181e87ef
Fix inconsistent indentation 2016-10-20 11:43:22 +07:00
Garret Wassermann
c9c7642724 New unit test for get_email command 2016-10-19 21:37:23 -04:00
Garret Wassermann
f61d180e5d use django.utils.six instead of plain six 2016-10-19 20:02:12 -04:00
Alex Barcelo
91afbb9755 fixing some additional reverse stuff 2016-10-19 15:30:37 +02:00
Alex Barcelo
afd6ebad74 Merge current 'master' state into urls_app_name 2016-10-19 15:26:04 +02:00
Jerome Flesch
74668f30d5 forms.py : To get the translations for the fields' labels, use ugettext_lazy() instead for ugettext().
ugettext() loads the translations at the same time the module is loaded (--> always in english).
ugettext_lazy() loads them when they are needed (--> when the user makes a query --> we known the language the user wants based on the header of their HTTP request)

Signed-off-by: Jerome Flesch <jflesch@gmail.com>
2016-10-18 15:37:57 +02:00
Jerome Flesch
0ad110ec7f forms.py: cleanup whitespaces
Signed-off-by: Jerome Flesch <jflesch@gmail.com>
2016-10-18 15:35:41 +02:00
meomap
96f4fecb71 add setting for fallback locale 2016-10-14 15:04:28 +07:00
Ross Poulton
138904bf8b Update project URLs per #424 2016-10-12 11:14:10 +11:00
Ross Poulton
1f4ca64ef4 Update translations (part of #424) 2016-10-12 10:54:24 +11:00
Antoine Nguyen
50955cb8f6 Fixed Meta class definition for TicketCustomFieldValue. 2016-10-07 11:00:25 +02:00
Garret Wassermann
3f620e83a2 Update style of Ticket FollowUp list to be a timeline 2016-09-27 17:29:59 -04:00
Garret Wassermann
929ec49fa8 Apply styling to KB pages. Minor tweak to dashboard. 2016-09-27 14:36:52 -04:00
Garret Wassermann
414f7e7c03 Make Knowledgebase categories nicer; include jQuery UI for DatePicker on new ticket form 2016-09-27 13:16:28 -04:00
Garret Wassermann
186b4ad8e2 Some of CSS changes were not included due to a conflict in the gitignore file. Updated gitignore and added missing CSS directory. 2016-09-27 10:57:21 -04:00
Garret Wassermann
f313b5c374 Added more logging statements, cleaned up a few others 2016-09-16 00:28:13 -04:00
Garret Wassermann
a4ad602f39 Remove unnecessary imports, clean up python3 handling code to use native str() 2016-09-15 22:51:00 -04:00
Garret Wassermann
e5c3c4a435 Used six to add python3 compatibility along side existing python2, and replaced print statements with logging features. Can now poll a local directory for mail too, not just remote POP3/IMAP. 2016-09-14 20:35:18 -04:00
Garret Wassermann
6a86a0106a Updated report_index() to remove the context= so it matches the syntax of dashboard() function. 2016-09-13 00:31:56 -04:00
Garret Wassermann
bf55ab7f8c Oops, forgot to change one more URL from dashboard to report_index 2016-09-13 00:13:52 -04:00
Garret Wassermann
fe54d81022 Update unit test for backend changes to dashboard and statistics pages 2016-09-13 00:06:38 -04:00
Garret Wassermann
4203f352d9 Completely resolved jQuery issue with multiple file attachment submission on a single FollowUp due to CSS styling of file input buttons. It's really ridiculous you have to do this, but whatever. It works as expected. 2016-09-12 23:18:01 -04:00
Garret Wassermann
3002cf689c Fix CSS styling of Status radio buttons on Ticket Comment form 2016-09-12 22:54:51 -04:00
Garret Wassermann
76241b8661 Fix jQuery error with adding multiple attachments to a single FollowUp. It work when adding files one at a time but gets a little funny when adding more than one input field at a time. Also, moved RSS Feeds link to user menu to be more accessible. 2016-09-12 22:37:48 -04:00
Garret Wassermann
00cdbcf43b Finish CSS template changes for Ticket page and related properties; includes responsive Ticket list table; styled file input buttons but need to find way to update text for beyond the first input box; added a ticket_attachment_del page to confirm removal of attachment and styled it 2016-09-12 02:11:55 -04:00
Garret Wassermann
a9cb54ce7e Remove older static files, update User Settings 2016-09-11 12:30:48 -04:00
Garret Wassermann
e0875b212b Updated CSS for Ticket list and Ticket editing pages, added Font Awesome's LICENSE to list 2016-09-10 04:00:22 -04:00
Garret Wassermann
67f81ac252 Continue CSS cleanup for Ticket description, remove unneeded priority and button images and associated functions 2016-09-09 04:03:32 -04:00
Garret Wassermann
d66259efdc Update dashboard and reports to new style, add more CDN support for new javascript libraries 2016-09-09 02:45:12 -04:00
Garret Wassermann
4c89da89b5 Updated navbar, base, public_base and login page to use new StartBootstrap SB Admin v2 theme 2016-09-07 02:50:16 -04:00
Jan Beran
8341ad217c Syntax correction for Python 3.4 and 3.5 2016-08-17 22:01:09 +02:00
Garret Wassermann
1c09f4a3c3 Moved Buttons and Priorities images back to main static folder 2016-08-05 00:50:40 -04:00
Garret Wassermann
014af24d2d Added a HELPDESK_USE_CDN setting, off by default, to select between using public CDNs as before, and an up-to-date static copy 2016-08-05 00:38:17 -04:00
Garret Wassermann
d9480c9cf0 Update static jQuery and other js/css, disable CDN usage 2016-08-04 23:57:35 -04:00
Ross Poulton
f2e497c3c6 Merge pull request #415 from mhannig/fix-broken-keyword-search
JSON Serialization broke Keyword-Searches
2016-07-05 08:48:10 +10:00
Matthias Hannig
a37f7145ec Serializing the query using JSON for SavedSearches unfortunately broke
Keyword-Searches.

Now, only the search string is serialized for saving and
the "qset" is moved from "other_filters" to apply_query.
2016-07-04 17:47:53 +02:00
Ross Poulton
03b3a70975 Merge pull request #410 from mrkiwi-nz/fix_savequery
Fix savequery
2016-06-30 10:36:41 +10:00
Ross Poulton
da5a4dc40f Merge pull request #411 from mrkiwi-nz/issue_408_fix
fix #408 : Bug in test_per_queue_staff_permission.py
2016-06-30 10:36:20 +10:00
Daryl
44bbcd31e5 Bug in test_per_queue_staff_permission.py
Using the django auth backend allows integers to be passed as a password
Using Peter Sagerson's ldap auth backend there is an error thrown because
some code tries to do a len() on the password.
You could argue that the ldap auth backend should str(password), but
you could also argue that passing an int as a password is bad practice

This PR ensures that a string is sent to the auth module.
2016-06-30 12:07:33 +12:00
Daryl
0ac7183875 Add test for saving a query, fix shared checkbox issue
My browser sends 'on' when a checkbox is ticked, django ORM only
recognises '1', 'true' or 't' as valid 'True' responses.
This throws an error
ValidationError at /helpdesk/save_query/
[u"'on' value must be either True or False."]

This could be fixed with " value='1'" in the template, but testing that is harder
My fix is to add a check in the view. 2 more lines, but easier to unittest.
Core devs need to make a call as to which solution is best.

D
2016-06-30 11:36:21 +12:00
Matthias Hannig
5f0191957f fixed python3 compat issue 2016-06-28 18:44:54 +02:00
Matthias Hannig
895a65fdb9 Fixed remote code execution through unpickling untrusted code. 2016-06-28 18:04:39 +02:00
Ross Poulton
d65c32487c Merge pull request #406 from mrkiwi-nz/master
Fix Issue #404: Refactor converting query string into queue:id
2016-06-26 19:28:48 +10:00
Daryl
afbfd01fab Fix Issue #404: Refactor converting query string into queue:id 2016-06-26 12:45:55 +12:00
Ross Poulton
ecd870663d Merge pull request #405 from mrkiwi-nz/master
Ignore queue name when doing lookups for tickets (means URLs don't break when moving ticket between queues)
2016-06-25 21:55:40 +10:00
Daryl
e5a6686c6d Ticket #403 - This code changes the behaviour of lookups for tickets and
ignores the queue name. This means that queue changes on a ticket dont
break the email links which have already been sent out.
The queue name still exists in the link/url, but is not used in the
lookup
2016-06-24 13:46:37 +12:00
Ross Poulton
e4dc3e51eb Merge pull request #399 from mrkiwi-nz/master
Changed render_to_response() to render()
2016-06-22 11:05:21 +10:00
Daryl
8a7fe5fcbf Changed the way the context is passed to render() - this was required
to enable django 1.7 to work (otherwise 1.8, 1.9 pass all tests, but 1.7 fails)
2016-06-21 20:56:43 +12:00
Daryl
558f140bfb Changed render_to_response() to render() - this should work for django1.9.4 plus django1.10
Without this change, django1.10 is missing the 'user' object from the context, which results in
a very hard to track down bug manifesting in ;
"NoReverseMatch: Reverse for 'helpdesk_rss_user' with arguments '('',)' and keyword arguments '{}' not found."
At first glance users may think this is the dots-in-usernames bug, but the username is totally missing.
2016-06-21 17:18:06 +12:00
Gleber Diniz
f8044faf28 Fix import error on python 3
"from email.utils import parseaddr, collapse_rfc2231_value" works both for python 2.7 and python 3
2016-06-14 17:10:23 -03:00
mrkiwi-nz
7dd4aa11d7 Update ticket_cc_list.html 2016-06-09 12:41:12 +12:00
mrkiwi-nz
57d341f89f Update report_output.html 2016-06-09 12:40:48 +12:00
mrkiwi-nz
783aa2481c Update email_ignore_list.html 2016-06-09 12:40:08 +12:00
mrkiwi-nz
d86b82e689 Update debug.html 2016-06-09 12:39:24 +12:00
Darren Riedlinger
ac8ead52c8 getattr on usersettings.setting dict always returns False. Use settings.get() instead 2016-03-06 12:46:36 -08:00
Ross Poulton
e52ae206c6 Merge pull request #388 from pawelmarkowski/master
dashboard error queues are null
2016-03-02 10:38:08 +11:00
Pawel M
2b6c23db9f (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')\n GROUP BY queue, name\n ORDER BY q.id' at line 9") helpdesk/views/staff.py in dashboard 149 solved. When queues is null do not add to sql q.id in () 2016-03-01 22:53:33 +01:00
Bruno Tikami
2efe8255c5 UPDATED: print statements to be Python 3.x compatible 2016-03-01 17:01:58 -03:00
imbashamba
191ce3c53c Nullable "default_owner" field added to Queue model
If default_owner is specified, tickets from public form will be assigned to him and he'll be notified by email
2016-02-17 11:40:08 +03:00
powderflask
8bf3449719 Fix: _meta.module_name deprecated in django1.8 2016-01-23 12:25:17 -08:00
Alex Barcelo
a741395ce5 chaging tests to aknowledge helpdesk namespace 2015-12-22 11:20:52 +01:00
Alex Barcelo
3a0f08046e using helpdesk app_name and droping helpdesk_ prefix 2015-12-22 10:27:03 +01:00
Ross Poulton
4347d1ec61 Add new locales: th, ca, lv, tr_TR, he_IL, pt_PT 2015-12-22 11:35:59 +11:00
Ross Poulton
ca1690becb Deprecate custom API (see #198) 2015-12-22 11:28:00 +11:00
Ross Poulton
0d098f6d29 Merge pull request #369 from alexbarcelo/always_create_permission
creation of Permission-per-Queue is done always
2015-12-22 09:41:17 +11:00
Alex Barcelo
7894eea1e1 Making Queue slug unique and improving certain admin-related behaviour 2015-12-18 14:56:53 +01:00
Alex Barcelo
3b547d2cf9 creation of Permission-per-Queue is done always 2015-12-18 14:35:50 +01:00
Alex Barcelo
4545fc925f fixing migration and allowing valid rollback on typical migrations 2015-12-17 18:44:10 +01:00
Alex Barcelo
0b5af429a5 reverting error due to methods and migrations 2015-12-17 18:11:54 +01:00
Alex Barcelo
01598826bf protecting through 403 several staff views 2015-12-16 22:27:06 +01:00
Alex Barcelo
1ea70ad1be adding management command for batch-creation of Queue permission 2015-12-16 22:27:06 +01:00
Alex Barcelo
43e5ff7c0e added delete mechanism on Queue for auto-clean of permissions 2015-12-16 22:27:06 +01:00
Alex Barcelo
92d8ca3eff more modular management of permission codenames 2015-12-16 22:27:06 +01:00
Alex Barcelo
64bc1791d4 removing completely QueueMembership model 2015-12-16 22:27:06 +01:00
Alex Barcelo
d760d9ee95 adding basic information to tickets, and masking email, on the admin views 2015-12-16 22:27:06 +01:00
Alex Barcelo
fb66fea86e change basic features of membership into permissions 2015-12-16 22:27:05 +01:00
Alex Barcelo
230d14b3ca removing QueueMembership mechanisms from admin.py 2015-12-16 22:27:05 +01:00
Alex Barcelo
c1fd47043a migration for removing semantics from QueueMembership objects 2015-12-16 22:27:05 +01:00
Alex Barcelo
18c7a2e698 adding required model extra info for permissions 2015-12-16 22:27:05 +01:00
Alex Barcelo
c0939d4b38 adding migration for bugfix 'changed max_length given by string to integer;' 2015-12-16 16:37:22 +01:00
Ross Poulton
11467f6e50 Properly check email context keys in newer Python versions. part of #362 2015-12-16 10:48:27 +11:00
Ross Poulton
6187b0568c Merge pull request #358 from flinz/django-1.9-fixes
Django 1.9 compatibility
2015-12-16 10:24:16 +11:00
Alex Seeholzer
54e541230e Merge branch 'bug/360_max-length-given-by-string' into django-1.9-fixes
* bug/360_max-length-given-by-string:
  changed max_length given by string to integer;
2015-12-15 10:21:04 +01:00
Alex Seeholzer
905e52e603 changed max_length given by string to integer; 2015-12-15 10:11:47 +01:00
Alex Seeholzer
2da16c511c updates to remove Django 1.10 deprecation warnings in Django 1.9:
- use of patterns() in urls.py is deprecated
- render() functions accept only dicts - introduced checks to ensure downward compatibility back to Django 1.7
2015-12-10 13:36:24 +01:00
Alex Seeholzer
8d55dcb9a0 python 2 & 3 compatibility: changed __unicode__ to __str__ and added python2 decorators (https://docs.djangoproject.com/en/1.8/topics/python3/#str-and-unicode-methods) 2015-11-18 15:26:08 +01:00
Alex Seeholzer
8390125c01 fixes of python 3 test fails 2015-11-18 15:07:33 +01:00
Alex Seeholzer
71504aa85d minor changes for python3 2015-11-18 10:41:02 +01:00
Alex Seeholzer
f7f0882f86 Merge branch 'master-upstream' into django-1.9-fixes
* master-upstream:
  Fix QueueMembership bug revealed by django.test's DiscoverRunner
2015-11-18 10:16:33 +01:00
Alex Seeholzer
e732b511e1 deprecated tags replaced in django 1.9 (ssi and url template tags are removed from the future template tag library) 2015-11-16 16:09:47 +01:00
Alex Seeholzer
307e9446a2 ensure tests for ticket submission run correctly in django 1.9 (URI's no longer include the scheme and domain part of the URLs) 2015-11-16 16:08:52 +01:00
Jonathan Barratt
0610a6645d Fix QueueMembership bug revealed by django.test's DiscoverRunner
If HELPDESK_ENABLE_PER_QUEUE_STAFF_MEMBERSHIP was True but a user had
no QueueMembership entries, then restricting queue access generated
RelatedObjectDoesNotExist exceptions.

 - Ask for forgiveness whenever we try to limit a queryset by the
queuemembership related object set.

 - Since tests can now be run with the project's settings active,
rather than only with quicktest.py's settings, restore the initial
HELPDESK_ENABLE_PER_QUEUE_MEMBERSHIP value after having tested the
related functionality.
2015-11-16 18:45:27 +07:00
Ross Poulton
ddd5b21b45 Merge pull request #352 from ssadler/static_from_staticfiles
use staticfiles app instead of STATIC_URL
2015-11-15 12:25:42 +11:00
Scott Sadler
2663a5e5ba use staticfiles app instead of STATIC_URL 2015-11-13 16:58:28 +01:00
Alex Seeholzer
0399612e57 bugfix: migration dependency corrected 2015-11-13 16:03:13 +01:00