Removed some commented-out code.
[zzz-floof.git] / floof / controllers / art.py
1 import logging
2
3 from pylons import request, response, session, tmpl_context as c, h
4 from pylons.controllers.util import abort, redirect
5 from pylons import url
6 from floof.lib.base import BaseController, render
7
8 log = logging.getLogger(__name__)
9
10 import elixir
11 from floof.model.art import Art, Rating
12
13 from sqlalchemy.exceptions import IntegrityError
14
15
16 class ArtController(BaseController):
17 def __before__(self, id=None):
18 super(ArtController, self).__before__()
19 # Awesome refactoring!
20 if id:
21 c.art = h.get_object_or_404(Art, id=id)
22
23 def new(self):
24 """ New Art! """
25 return render("/art/new.mako")
26
27 # TODO: login required
28 def create(self):
29 c.art = Art(uploader=c.user, **request.params)
30
31 try:
32 elixir.session.commit()
33 redirect(url('show_art', id=c.art.id))
34 except IntegrityError:
35 # hurr, there must be a better way to do this but I am lazy right now
36 hash = c.art.hash
37 elixir.session.rollback()
38 duplicate_art = Art.get_by(hash=hash)
39 h.flash("We already have that one.")
40 redirect(url('show_art', id=duplicate_art.id))
41
42
43 def show(self, id):
44 # c.art = h.get_object_or_404(Art, id=id)
45 if c.user:
46 c.your_score = c.art.user_score(c.user)
47 return render("/art/show.mako")
48
49
50 # TODO: login required
51 def rate(self, id):
52 # c.art = h.get_object_or_404(Art, id=id)
53 score = request.params.get("score")
54 if score and score.isnumeric():
55 score = int(score)
56 else:
57 score = Rating.reverse_options.get(score)
58
59 c.art.rate(score, c.user)
60 elixir.session.commit()
61
62 redirect(url('show_art', id=c.art.id))