"""
django-helpdesk - A Django powered ticket tracker for small enterprise.

(c) Copyright 2008 Jutda. All Rights Reserved. See LICENSE for details.

views/kb.py - Public-facing knowledgebase views. The knowledgebase is a
              simple categorised question/answer system to show common
              resolutions to common problems.
"""

from datetime import datetime

from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.utils.translation import ugettext as _

from helpdesk import settings as helpdesk_settings
from helpdesk.models import KBCategory, KBItem


def index(request):
    category_list = KBCategory.objects.all()
    # TODO: It'd be great to have a list of most popular items here.
    return render_to_response('helpdesk/kb_index.html',
        RequestContext(request, {
            'kb_categories': category_list,
            'helpdesk_settings': helpdesk_settings,
        }))


def category(request, slug):
    category = get_object_or_404(KBCategory, slug__iexact=slug)
    items = category.kbitem_set.all()
    return render_to_response('helpdesk/kb_category.html',
        RequestContext(request, {
            'category': category,
            'items': items,
            'helpdesk_settings': helpdesk_settings,
        }))


def item(request, item):
    item = get_object_or_404(KBItem, pk=item)
    return render_to_response('helpdesk/kb_item.html',
        RequestContext(request, {
            'item': item,
            'helpdesk_settings': helpdesk_settings,
        }))


def vote(request, item):
    item = get_object_or_404(KBItem, pk=item)
    vote = request.GET.get('vote', None)
    if vote in ('up', 'down'):
        item.votes += 1
        if vote == 'up':
            item.recommendations += 1
        item.save()

    return HttpResponseRedirect(item.get_absolute_url())