Example #1
0
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)))
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)))
Example #5
0
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)))
Example #6
0
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)
Example #7
0
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)
Example #8
0
 def get_absolute_url(self):
     return url_for('meetups.meetup', date=filters.datecode(self.start))