import logging

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

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

log = logging.getLogger(__name__)

from floof.model import Art, UserRelationship
from floof.model.users import User
import elixir

# TODO!!!  Implement adding a related user the same way that it works
# on the "add new art" page

class RelationController(BaseController):
    def create(self, art_id, kind):
        art = h.get_object_or_404(Art, id=art_id)
        user = h.get_object_or_404(User, name=request.params['username'])
        ## TODO: actually, this should act like a form validation.

        prior_relation = UserRelationship.get_by(art=art, user=user)
        if prior_relation:
            abort(404) ## should be a validation error

        relation = UserRelationship(user=user, kind=kind, art=art, creator=c.user)
        elixir.session.commit()
        redirect(url('show_art', id=art_id))
    
    def index(self):
        # Return a rendered template
        #return render('/relation.mako')
        # or, return a response
        return 'Hello World'
