from django.shortcuts import render_to_response, get_object_or_404
import django.forms as forms
from django.http import HttpResponseRedirect
from gallery.models import Item, Project, project_list
from tagging.models import Tag, TaggedItem

from django.conf import settings

from djangorecaptcha import *

def list(request, project=None):
    if request.GET.has_key("tag"):
        items = TaggedItem.objects.get_by_model(Item, [request.GET['tag']])
    else:
        if project:
            p = Project.objects.get(key=project)
            items = p.item_set.all()
        else:    
            items = Item.objects.all()
        if request.GET.has_key("type"):
            items = items.filter(type=request.GET['type'])
    items = items.order_by("-created")
    for item in items:
        item.tag_list = Tag.objects.get_for_object(item)
    return render_to_response("item_list.html", {'items':items}) 

def item(request, id):
    items = [Item.objects.get(pk=id)]
    for item in items:
        item.tag_list = Tag.objects.get_for_object(item)
    return render_to_response("item_list.html", {'items':items, 'single':True}) 

class ItemForm(forms.models.ModelForm):
    class Meta:
        model = Item 

def itemform(request):
    class RequestItemForm(ItemForm):
        rec = RecaptchaField(settings.RECAPTCHA_PUBLIC_KEY, settings.RECAPTCHA_PRIVATE_KEY, request.META['REMOTE_ADDR'])
    return RequestItemForm    

def item_create(request, id = None):
    form = None
    if id:
        form_object = get_object_or_404(Item, pk=id)
        if request.POST:
            form = itemform(request)(request.POST, request.FILES, instance=form_object, auto_id=False)
        else:
            form = itemform(request)(instance=form_object, auto_id=False)
    else:    
        if request.POST:
            form = itemform(request)(request.POST, request.FILES)
        else:
            form = itemform(request)()
    
    if request.POST:
        if form.is_valid():
            obj = form.save(commit=True)
            return HttpResponseRedirect("/")
    return render_to_response("item_edit.html", {'form': form, 'type':'Item'})
