mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2024-12-13 02:10:49 +01:00
A Django application to manage tickets for an internal helpdesk. Formerly known as Jutda Helpdesk.
bugscasesdjangohacktoberfesthacktoberfest2020helpdeskincidentsissuespythonservicedesksupportticketstracker
fixtures | ||
htdocs | ||
locale | ||
management | ||
templates | ||
templatetags | ||
views | ||
__init__.py | ||
admin.py | ||
forms.py | ||
lib.py | ||
LICENSE | ||
LICENSE.3RDPARTY | ||
models.py | ||
README | ||
urls.py |
Jutda Helpdesk - A Django powered ticket tracker for small enterprise. (c) Copyright 2008 Jutda. All Rights Reserved. See LICENSE for details. ######################### 0. Table of Contents ######################### 1. Licensing 2. Dependencies (pre-flight checklist) 3. Installation 4. Initial Configuration 5. API Usage 6. Thank You ######################### 1. Licensing ######################### See the file 'LICENSE' for licensing terms. Note that jQuery and nicEdit are both distributed with this product, and have their own licenses. See LICENSE.3RDPARTY for license terms for included packages. ######################### 2. Dependencies (pre-flight checklist) ######################### 1. Python 2.3+ 2. Django (1.0 alpha 1 or newer, or an SVN checkout after 7941). 3. An existing WORKING Django project with database etc. If you cannot log into the Admin, you won't get this product working. NOTE REGARDING SQLITE AND SEARCHING: If you use sqlite as your database, the search function will not work as effectively as it will with other databases due to its inability to do case-insensitive searches. It's recommended that you use PostgreSQL or MySQL if possible. For more information, see this note in the Django documentation: http://docs.djangoproject.com/en/dev/ref/databases/#sqlite-string-matching ######################### 3. Installation ######################### 1. Place 'helpdesk' in your Python path. I use /var/django, others may use /usr/lib/python2.3/site-packages/ or a similar path. 2. In your projects' settings.py file, add these lines to the INSTALLED_APPS setting: 'helpdesk', 'django.contrib.admin', 3. In your projects' urls.py file, add this line: (r'helpdesk/', include('helpdesk.urls')), You can substitute 'helpdesk/' for something else, eg 'support/' or even ''. 4. Ensure the admin line is un-hashed in urls.py: # Uncomment this for admin: from django.contrib import admin admin.autodiscover() (r'^admin/(.*)', admin.site.root), If you use helpdesk at the top of your domain (at /), ensure the admin line comes BEFORE the helpdesk line. 5. In your project directory (NOT the helpdesk directory) run ./manage.py syncdb to create database tables 6. Inside your MEDIA_ROOT folder, create a new folder called 'helpdesk' and copy the contents of helpdesk/htdocs/ into it. Alternatively, create a symlink: ln -s /path/to/helpdesk/htdocs /path/to/media/helpdesk This application assumes all helpdesk media will be accessible at http://MEDIA_PATH/helpdesk/ 7. Inside your MEDIA_ROOT folder, inside the 'helpdesk' folder, is a folder called 'attachments'. Ensure your web server software can write to this folder - something like this should do the trick: chown www-data:www-data attachments/; chmod 700 attachments (substitute www-data for the user / group that your web server runs as, eg 'apache' or 'httpd') If all else fails ensure all users can write to it: chmod 777 attachments/ This is NOT recommended, especially if you're on a shared server. ######################### 4. Initial Configuration ######################### 1. Visit http://yoursite/admin/ and add a Helpdesk Queue. If you wish, enter your POP3 or IMAP server details. IMPORTANT NOTE: Any tickets created via POP3 or IMAP mailboxes will DELETE the original e-mail from the mail server. 2. Visit http://yoursite/helpdesk/ (or other path as defined in your urls.py) 3. If you wish to automatically create tickets from the contents of an e-mail inbox, set up a cronjob to run scripts/get_email.py on a regular basis. Don't forget to set the relevant Django environment variables in your crontab: */5 * * * * /path/to/helpdesksite/manage.py get_email This will run the e-mail import every 5 minutes IMPORTANT NOTE: Any tickets created via POP3 or IMAP mailboxes will DELETE the original e-mail from the mail server. 4. If you wish to automatically escalate tickets based on their age, set up a cronjob to run scripts/escalate_tickets.py on a regular basis: 0 * * * * /path/to/helpdesksite/manage.py escalate_tickets.py This will run the escalation process hourly, using the 'Escalation Hours' setting for each queue to determine which tickets to escalate. 5. If you wish to exclude some days (eg, weekends) from escalation calculations, enter the dates manually via the Admin, or setup a cronjob to run scripts/create_escalation_exclusions.py on a regular basis: 0 0 * * 0 /path/to/helpdesksite/manage.py create_escalation_exclusions.py --days saturday,sunday --escalate-verbosely This will, on a weekly basis, create exclusions for the coming weekend. 6. Log in to your Django admin screen, and go to the 'Sites' module. If the site 'example.com' is listed, click it and update the details so they are relevant for your website. 7. If you do not send mail directly from your web server (eg, you need to use an SMTP server) then edit your settings.py file so it contains your mail server details: EMAIL_HOST = 'XXXXX' EMAIL_HOST_USER = 'YYYYYY@ZZZZ.PPP' EMAIL_HOST_PASSWORD = '123456' You're now up and running! ######################### 5. API Usage ######################### Jutda Helpdesk includes an API accessible via HTTP POST requests, allowing you to create and alter tickets from 3rd party software and systems. For usage instructions and command syntax, see the file templates/helpdesk/api_help.html, or visit http://helpdesk/api/help/. ######################### 6. Thank You ######################### While this started as a project to suit my own needs, since publishing the code a number of people have made some fantastic improvements and provided bug fixes and updates as the Django codebase has moved on and caused small portions of this application to break. To these people, my sincere thanks: David Clymer <http://djangopeople.net/vezult/> Chris Etcp Nikolay Panov