From: Nick Retallack Date: Wed, 7 Oct 2009 06:25:16 +0000 (-0700) Subject: merged in my branch 'resources', which is not aptly named anymore since it no longer... X-Git-Url: http://git.veekun.com/zzz-floof.git/commitdiff_plain/366dedf71b3cdd775251c7cea4b1519b44b37164?hp=-c merged in my branch 'resources', which is not aptly named anymore since it no longer uses resources at all. Just named routes. It has new features like galleries though so it's cool. --- 366dedf71b3cdd775251c7cea4b1519b44b37164 diff --combined floof/controllers/art.py index a0aecd7,8dfc487..5186daa --- a/floof/controllers/art.py +++ b/floof/controllers/art.py @@@ -1,14 -1,17 +1,17 @@@ import logging from pylons import request, response, session, tmpl_context as c, h - from pylons.controllers.util import abort, redirect_to - + from pylons.controllers.util import abort, redirect + from pylons import url from floof.lib.base import BaseController, render log = logging.getLogger(__name__) import elixir - from floof.model.art import Art + from floof.model.art import Art, Rating + + from sqlalchemy.exceptions import IntegrityError + class ArtController(BaseController): def __before__(self, id=None): @@@ -26,10 -29,20 +29,20 @@@ return render("/art/new.mako") # TODO: login required - def upload(self): - Art(uploaded_by=c.user, **request.params) - elixir.session.commit() - redirect_to(controller="main", action="index") + def create(self): + c.art = Art(uploader=c.user, **request.params) + + try: + elixir.session.commit() + redirect(url('show_art', id=c.art.id)) + except IntegrityError: + # hurr, there must be a better way to do this but I am lazy right now + hash = c.art.hash + elixir.session.rollback() + duplicate_art = Art.get_by(hash=hash) + h.flash("We already have that one.") + redirect(url('show_art', id=duplicate_art.id)) + def show(self, id): # c.art = h.get_object_or_404(Art, id=id) @@@ -37,17 -50,23 +50,17 @@@ c.your_score = c.art.user_score(c.user) return render("/art/show.mako") - # TODO: login required - # also, require post - def tag(self, id): - # c.art = h.get_object_or_404(Art, id=id) - c.art.add_tags(request.params.get("tags",""), c.user) - elixir.session.commit() - redirect_to('show_art', id=c.art.id) - - # # TODO: login required - # def tag(self, id): - # # c.art = h.get_object_or_404(Art, id=id) - # c.art.add_tags(request.params["tags"], c.user) - # elixir.session.commit() - # redirect_to('show_art', id=c.art.id) - # ++ # TODO: login required def rate(self, id): # c.art = h.get_object_or_404(Art, id=id) - c.art.rate(request.params["score"], c.user) + score = request.params.get("score") + if score and score.isnumeric(): + score = int(score) + else: + score = Rating.reverse_options.get(score) + + c.art.rate(score, c.user) elixir.session.commit() - redirect_to('show_art', id=c.art.id) + + redirect(url('show_art', id=c.art.id)) diff --combined floof/controllers/tag.py index 3b69ed6,c00eaf6..874e605 --- a/floof/controllers/tag.py +++ b/floof/controllers/tag.py @@@ -1,20 -1,29 +1,29 @@@ import logging - from pylons import request, response, session, tmpl_context as c - from pylons.controllers.util import abort, redirect_to + from pylons import request, response, session, tmpl_context as c, h + from pylons.controllers.util import abort, redirect from floof.lib.base import BaseController, render + from pylons import url log = logging.getLogger(__name__) import elixir - from floof.model.art import Tag + from floof.model.art import Art, Tag class TagController(BaseController): - def delete(self, id): - tag = Tag.get(id) - if tag: - elixir.session.delete(tag) - elixir.session.commit() - redirect_to(request.referrer) + # TODO: login required + def delete(self, art_id, id): + tag = h.get_object_or_404(Tag, id=id) + elixir.session.delete(tag) + elixir.session.commit() + redirect(url('show_art', id=art_id)) + + # TODO: login required + def create(self, art_id): + c.art = h.get_object_or_404(Art, id=art_id) - c.art.add_tags(request.params["tags"], c.user) ++ c.art.add_tags(request.params.get("tags",""), c.user) + elixir.session.commit() + redirect(url('show_art', id=c.art.id)) +