mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-08-09 16:15:12 +02:00
* Add localisation hooks
* Add VERY basic knowledgebase functions * Restructure views.py into views/*.py
This commit is contained in:
129
views/feeds.py
Normal file
129
views/feeds.py
Normal file
@ -0,0 +1,129 @@
|
||||
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 helpdesk.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,
|
||||
}
|
||||
|
Reference in New Issue
Block a user