def do_vote(date, id, value): """ Executes a voting for an idea with the given id associated with a meetup taking place on the given date (string). The value indicates whether the voting is positive or negative. :param date: date of a meetup. See `_get_meetup` for details :param id: id of an idea associated with the meetup :param value: 1 or -1 for voting the idea up or down :returns: Response initiating a redirect to the meetup """ meetup = _get_meetup(date) idea = _get_idea(id, meetup) voted_users = [vote.user for vote in idea.votes.all()] if g.user not in voted_users: vote = models.SessionideaVote() vote.user = g.user vote.sessionidea_id = idea.id vote.value = value else: vote = db.session.query(models.SessionideaVote)\ .filter(models.SessionideaVote.user == g.user)\ .filter(models.SessionideaVote.sessionIdea == idea).first() vote.value = value db.session.add(vote) db.session.commit() flash(_(u"Thank you for your vote!")) signals.sessionidea_voted.send(vote) return redirect(url_for('.meetup', date=filters.datecode(meetup.start)))
def edit_meetup(date): real_date = _extract_date(date) meetup = models.Meetup.query_by_date(real_date).first() print meetup.meetupcom_eventid with utils.DocumentLock(meetup) as lock: if request.method == 'POST': form = forms.MeetupForm.from_flat(request.form) if form.validate({'meetup': meetup}): if 'preview' not in request.form: meetup.start = form['start'].value meetup.end = form['end'].value meetup.location = form['location'].value meetup.address = form['address'].value meetup.notes = form['notes'].value meetup.meetupcom_eventid = form['meetupcom_eventid'].value db.session.add(meetup) db.session.commit() lock.unlock() signals.meetup_changed.send(meetup) flash(_('Your changes have been saved.')) return redirect(url_for('.meetup', date=filters.datecode(meetup.start))) else: form = forms.MeetupForm.from_object(meetup) return render_template('meetups/edit.html', meetup=meetup, preview='preview' in request.form, form=form)
def add_sessionidea(date): """ Form handling for adding a new session idea to the meetup taking place on the passed date. """ meetup = _get_meetup(date) now = datetime.datetime.utcnow() if now > meetup.start: flash(_('Session ideas can only be added to future meetups')) return redirect(url_for('.meetup', date=date)) if request.method == 'POST': form = forms.SessionIdeaForm.from_flat(request.form) if form.validate(): idea = models.Sessionidea() idea.author = g.user idea.summary = form['summary'].value idea.details = form['details'].value idea.url = form['url'].value idea.meetup = meetup db.session.add(idea) db.session.commit() signals.sessionidea_created.send(idea) return redirect(url_for('.meetup', date=filters.datecode(meetup.start))) else: form = forms.SessionIdeaForm() return render_template('meetups/add_idea.html', meetup=meetup, form=form)
def unvote_sessionidea(date, id): meetup = _get_meetup(date) idea = _get_idea(id, meetup) vote = db.session.query(models.SessionideaVote)\ .filter(models.SessionideaVote.user == g.user)\ .filter(models.SessionideaVote.sessionIdea == idea).first() if vote is not None: db.session.delete(vote) db.session.commit() flash(_('Vote removed')) signals.sessionidea_unvoted.send(vote) return redirect(url_for('.meetup', date=filters.datecode(meetup.start)))
def delete_sessionidea(date, id): """ Form handler for deleting a session idea. """ meetup = _get_meetup(date) idea = _get_idea(id, meetup) if request.method == 'GET': return render_template('meetups/confirm_delete_idea.html', idea=idea, meetup=meetup) db.session.delete(idea) db.session.commit() signals.sessionidea_deleted.send(idea) return redirect(url_for('.meetup', date=filters.datecode(meetup.start)))
def create_meetup(): if request.method == 'POST': form = forms.MeetupForm.from_flat(request.form) if form.validate(): if 'preview' not in request.form: meetup = models.Meetup(start=form['start'].value, end=form['end'].value, location=form['location'].value, address=form['address'].value, meetupcom_eventid=form['meetupcom_eventid'].value, notes=form['notes'].value) db.session.add(meetup) db.session.commit() signals.meetup_created.send(meetup) return redirect(url_for('.meetup', date=filters.datecode(form['start'].value))) else: form = forms.MeetupForm() return render_template('meetups/create.html', preview='preview' in request.form, form=form)
def edit_sessionidea(date, id): """ Form handler for editing a session idea. """ meetup = _get_meetup(date) idea = _get_idea(id, meetup) if g.user != idea.author: abort(404) if request.method == 'POST': form = forms.SessionIdeaForm.from_flat(request.form) if form.validate(): idea.summary = form['summary'].value idea.details = form['details'].value idea.url = form['url'].value db.session.add(idea) db.session.commit() signals.sessionidea_changed.send(idea) flash(_('Your changes have been saved.'), category='success') return redirect(url_for('.meetup', date=filters.datecode(meetup.start))) else: form = forms.SessionIdeaForm.from_object(idea) return render_template('meetups/edit_idea.html', meetup=meetup, idea=idea, form=form)
def get_absolute_url(self): return url_for('meetups.meetup', date=filters.datecode(self.start))