import logging

from pylons import request, response, session, tmpl_context as c
from pylons.controllers.util import abort, redirect
from pylons import url

from floof.lib import helpers as h
from floof.lib.base import BaseController, render
from floof.lib.tags import parse

log = logging.getLogger(__name__)

from floof.model import Art, Tag, TagText
from floof.model import SavedSearch, GalleryWidget
import elixir

class SearchController(BaseController):

    def index(self):
        if request.params.get('button') == 'Save':
            return self.save()

        c.query = request.params.get('query', '')
        c.artwork = parse(c.query, me=c.user).all()
        return render('/index.mako')

    # TODO: login required
    def save(self):
        c.query = request.params.get('query', '')
        saved_search = SavedSearch(author=c.user, string=c.query)
        elixir.session.commit()
        redirect(url('saved_searches'))
        # TODO: do something better than this.


    # TODO: login required
    def list(self):
        c.searches = c.user.searches
        return render('/searches.mako')

    # TODO: login required
    def display(self, id):
        c.search = h.get_object_or_404(SavedSearch, id=id)
        c.gallery = GalleryWidget(search=c.search, page=c.user.primary_page)
        elixir.session.commit()
        redirect(url(controller="users", action="view", name=c.user.name))


