def vote(self, request, entry_id, action): entry = ForumEntry.query.get(entry_id) if entry.author == request.user: raise Forbidden v = Vote.query.filter_by(entry=entry, user=request.user).first() args = { 'up': { 'score': +1 }, 'down': { 'score': -1 }, 'revoke': { 'score': 0 }, 'favorite': { 'favorite': True }, 'nofavorite': { 'favorite': False } }[action] if not v: args.update({ 'score': args.get('score', 0), 'user': request.user, }) v = Vote(**args) v.entry = entry else: for key, a in args.iteritems(): setattr(v, key, a) db.session.commit() return redirect_to(entry)
def vote(self, request, entry_id, action): entry = ForumEntry.query.get(entry_id) if entry.author == request.user: raise Forbidden v = Vote.query.filter_by(entry=entry, user=request.user).first() args = { 'up': {'score': +1}, 'down': {'score': -1}, 'revoke': {'score': 0}, 'favorite': {'favorite': True}, 'nofavorite': {'favorite': False} }[action] if not v: args.update({ 'score': args.get('score', 0), 'user': request.user, }) v = Vote(**args) v.entry = entry else: for key, a in args.iteritems(): setattr(v, key, a) db.session.commit() return redirect_to(entry)