forked from extern/django-helpdesk
dfb821336e
text to assist with future translation efforts. I've no doubt missed a few. Also we don't have a "Change Language" view in here, unsure if this should be a helpdesk function or a function of the parent project. * Updated svn:ignore to ignore .pyc files * Added new function to replace cursor.dictfetchall() which is available in psycopg1 but not psycopg2. New function should work across other database systems, but is untested.
130 lines
4.5 KiB
Python
130 lines
4.5 KiB
Python
from django.contrib.auth.models import User
|
|
from django.contrib.syndication.feeds import Feed
|
|
from django.core.urlresolvers import reverse
|
|
from django.db.models import Q
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from models import Ticket, FollowUp, Queue
|
|
|
|
|
|
class OpenTicketsByUser(Feed):
|
|
title_template = 'helpdesk/rss/ticket_title.html'
|
|
description_template = 'helpdesk/rss/ticket_description.html'
|
|
|
|
def get_object(self, bits):
|
|
if len(bits) < 1:
|
|
raise ObjectDoesNotExist
|
|
user = User.objects.get(username__exact=bits[0])
|
|
if len(bits) == 2:
|
|
queue = Queue.objects.get(slug__exact=bits[1])
|
|
else: queue = False
|
|
|
|
return {'user': user, 'queue': queue}
|
|
|
|
def title(self, obj):
|
|
if obj['queue']:
|
|
return _("Helpdesk: Open Tickets in queue %(queue)s for %(username)s") % {'queue': obj['queue'].title, 'username': obj['user'].username}
|
|
else:
|
|
return _("Helpdesk: Open Tickets for %(username)s") % {'username': obj['user'].username}
|
|
|
|
def description(self, obj):
|
|
if obj['queue']:
|
|
return _("Open and Reopened Tickets in queue %(queue)s for %(username)s") % {'queue': obj['queue'].title, 'username': obj['user'].username}
|
|
else:
|
|
return _("Open and Reopened Tickets for %(username)s") % {'username': obj['user'].username}
|
|
|
|
def link(self, obj):
|
|
if obj['queue']:
|
|
return u'%s?assigned_to=%s&queue=%s' % (reverse('helpdesk_list'), obj['user'].id, obj['queue'].id)
|
|
else:
|
|
return u'%s?assigned_to=%s' % (reverse('helpdesk_list'), obj['user'].id)
|
|
|
|
def items(self, obj):
|
|
if obj['queue']:
|
|
return Ticket.objects.filter(assigned_to=obj['user']).filter(queue=obj['queue']).filter(Q(status=Ticket.OPEN_STATUS) | Q(status=Ticket.REOPENED_STATUS))
|
|
else:
|
|
return Ticket.objects.filter(assigned_to=obj['user']).filter(Q(status=Ticket.OPEN_STATUS) | Q(status=Ticket.REOPENED_STATUS))
|
|
|
|
def item_pubdate(self, item):
|
|
return item.created
|
|
|
|
def item_author_name(self, item):
|
|
if item.assigned_to:
|
|
return item.assigned_to.username
|
|
else:
|
|
return _('Unassigned')
|
|
|
|
|
|
class UnassignedTickets(Feed):
|
|
title_template = 'helpdesk/rss/ticket_title.html'
|
|
description_template = 'helpdesk/rss/ticket_description.html'
|
|
|
|
title = _('Helpdesk: Unassigned Tickets')
|
|
description = _('Unassigned Open and Reopened tickets')
|
|
link = ''#%s?assigned_to=' % reverse('helpdesk_list')
|
|
|
|
def items(self, obj):
|
|
return Ticket.objects.filter(assigned_to__isnull=True).filter(Q(status=Ticket.OPEN_STATUS) | Q(status=Ticket.REOPENED_STATUS))
|
|
|
|
def item_pubdate(self, item):
|
|
return item.created
|
|
|
|
|
|
def item_author_name(self, item):
|
|
if item.assigned_to:
|
|
return item.assigned_to.username
|
|
else:
|
|
return _('Unassigned')
|
|
|
|
|
|
class RecentFollowUps(Feed):
|
|
title_template = 'helpdesk/rss/recent_activity_title.html'
|
|
description_template = 'helpdesk/rss/recent_activity_description.html'
|
|
|
|
title = _('Helpdesk: Recent Followups')
|
|
description = _('Recent FollowUps, such as e-mail replies, comments, attachments and resolutions')
|
|
link = '/tickets/' # reverse('helpdesk_list')
|
|
|
|
def items(self):
|
|
return FollowUp.objects.order_by('-date')[:20]
|
|
|
|
|
|
class OpenTicketsByQueue(Feed):
|
|
title_template = 'helpdesk/rss/ticket_title.html'
|
|
description_template = 'helpdesk/rss/ticket_description.html'
|
|
|
|
def get_object(self, bits):
|
|
if len(bits) != 1:
|
|
raise ObjectDoesNotExist
|
|
return Queue.objects.get(slug__exact=bits[0])
|
|
|
|
def title(self, obj):
|
|
return _('Helpdesk: Open Tickets in queue %(queue)s') % {'queue': obj.title}
|
|
|
|
def description(self, obj):
|
|
return _('Open and Reopened Tickets in queue %(queue)s') % {'queue': obj.title}
|
|
|
|
def link(self, obj):
|
|
return '%s?queue=%s' % (reverse('helpdesk_list'), obj.id)
|
|
|
|
def items(self, obj):
|
|
return Ticket.objects.filter(queue=obj).filter(Q(status=Ticket.OPEN_STATUS) | Q(status=Ticket.REOPENED_STATUS))
|
|
|
|
def item_pubdate(self, item):
|
|
return item.created
|
|
|
|
def item_author_name(self, item):
|
|
if item.assigned_to:
|
|
return item.assigned_to.username
|
|
else:
|
|
return _('Unassigned')
|
|
|
|
|
|
feed_setup = {
|
|
'user': OpenTicketsByUser,
|
|
'queue': OpenTicketsByQueue,
|
|
'recent_activity': RecentFollowUps,
|
|
'unassigned': UnassignedTickets,
|
|
}
|
|
|