Example #1
0
def contest_invite(contest_id):
    contest = Contest.query.get(contest_id)
    if g.user.user_id != contest.author_id:
        flash('You do not have proper authorization to do this!', 'danger')
        return redirect('/contest/' + str(contest_id))

    form = InviteForm(obj=contest)
    friendships = Friendship.query.filter_by(user_id=g.user.user_id).all()
    users = [
        User.query.get(friendship.friend_id) for friendship in friendships
    ]
    form.users.choices = [(user.user_id, user.username) for user in users]

    if request.method == 'POST' and form.validate():
        form = InviteForm(request.form)
        if form.users.data == None: form.users.data = []
        else:
            form.users.data = [
                User.query.get(user_id) for user_id in form.users.data
            ]

        form.populate_obj(contest)
        contest.save()
        return redirect(
            url_for('contest_overview', contest_id=contest.contest_id))

    return render_template('invite_form.html', form=form, edit=True)
Example #2
0
def invite():
    """Send invitations for this particular project"""

    form = InviteForm()

    if request.method == "POST":
        if form.validate():
            # send the email

            message_body = render_template("invitation_mail.%s" %
                                           get_locale().language)

            message_title = _(
                "You have been invited to share your "
                "expenses for %(project)s",
                project=g.project.name)
            msg = Message(message_title,
                          body=message_body,
                          recipients=[
                              email.strip()
                              for email in form.emails.data.split(",")
                          ])
            mail.send(msg)
            flash(_("Your invitations have been sent"))
            return redirect(url_for(".list_bills"))

    return render_template("send_invites.html", form=form)
Example #3
0
def invite(site_id):
    user = users.get_current_user()
    site = Site.get_admin_or_404(site_id)
    form = InviteForm(request.form)
    if form.validate():
        invite_hash = sha1()
        invite_hash.update(str(site.key()))
        invite_hash.update(os.urandom(8))
        invite_hash.update(form.email.data)
        invite_hash = b32encode(invite_hash.digest()).lower()
        invite = Invitation(hash=invite_hash,
                            email=form.email.data,
                            site=site,
                            admin=form.admin.data,
                            inviter=user)
        invite.put()
        mail.send_mail(
            sender=settings.invite_sender_email,
            to=invite.email,
            subject='%s invited you to join them on %s' %
            (user.email(), settings.appname),
            body=render_template('invite_email.txt', invite=invite),
            html=render_template('invite_email.html', invite=invite),
        )
        if request.is_xhr:
            return 'OK'
        flash('Invitation Sent!', 'success')
    else:
        errors = sum(form.errors.values(), [])
        if request.is_xhr:
            return ', '.join(errors)
        for error in errors:
            flash(error, 'error')
        flash(form.email.data, 'error')
    return redirect(url_for('edit_siteusers', site_id=site_id))
Example #4
0
    def index(self):
        form = InviteForm()
        if request.method == 'GET':
            return self.render('admin/index.html', form=form)
        else:
            if form.validate():
                from app.extensions import mail
                if mail.send_invite(form.email.data):
                    return jsonify({'status': 'ok'})

            return jsonify(form.errors)
Example #5
0
    def index(self):
        form = InviteForm()
        if request.method == 'GET':
            return self.render('admin/index.html', form=form)
        else:
            if form.validate():
                from app.extensions import mail
                if mail.send_invite(form.email.data):
                    return jsonify({'status': 'ok'})

            return jsonify(form.errors)
Example #6
0
def invite():
    url = __check_login(url = get_redirect_target())
    if url: return redirect(url)
    inviteform = InviteForm()
    if inviteform.validate():
        user = get_user(session['email'])
        troika = get_troika(inviteform.troika_id.data)
        if troika is None:
            flash(_(u'Invalid Troika Id'), 'error')
        elif troika.get_phase() == 'complete':
            flash(_(u'Can not invite to a completed Troika'), 'error')
        else:
            msg = Message(_(u"Come join the Troika \"%(title)s\"!", title=troika.title),
                      sender = ("Troika Webmaster", "*****@*****.**"),
                      recipients=[inviteform.email.data])
        
            msg.body = _("%(user)s thought you should join the Troika \"%(title)s\":", user = __get_display_name(user), title=troika.title)
            msg.body += "\n\n" + url_for('troika', troika_id=troika.id, _external=True)
            msg.body += "\n\n"
            
            role_string = None
            if inviteform.role.data == '0':
                if troika.lead is None:
                    role_string = _("the lead")
                else:
                    flash(_(u'Troika already has a lead'), 'error')
            elif inviteform.role.data == '1':
                if troika.first_learner is None:
                    role_string = _("the first learner")
                else:
                    flash(_(u'Troika already has a first learner'), 'error')
            elif inviteform.role.data == '2':
                if troika.second_learner is None:
                    role_string = _("the second learner")
                else:
                    flash(_(u'Troika already has a second learner'), 'error')
            elif inviteform.role.data == '3':
                role_string = _("a participant")
            else:
                flash(_(u'Invalid role: ') + 'inviteform.role', 'error')
            if role_string is not None:  
                msg.body += _("as %(role)s.", role=role_string)
                msg.body += "\n\n" 
                msg.body += _("What do you say?") + "\n\n"
                msg.body += __get_troika_message_signature()
                
                mail.send(msg)
                flash(_(u'Invite sent to %(email)s', email = inviteform.email.data))
    else:
        flash(_(u"Invalid invite form") + ': ' + ', '.join((key + ': ' + value[0]) for key, value in inviteform.errors.items()), 'error')
    return redirect(get_redirect_target())
Example #7
0
def invite():
    """Send invitations for this particular project"""

    form = InviteForm()

    if request.method == "POST":
        if form.validate():
            # send the email

            message_body = render_template("invitation_mail.%s" % get_locale().language)

            message_title = _("You have been invited to share your " "expenses for %(project)s", project=g.project.name)
            msg = Message(
                message_title, body=message_body, recipients=[email.strip() for email in form.emails.data.split(",")]
            )
            mail.send(msg)
            flash(_("Your invitations have been sent"))
            return redirect(url_for(".list_bills"))

    return render_template("send_invites.html", form=form)
Example #8
0
def contest_invite(contest_id):
    contest = Contest.query.get(contest_id)
    if g.user.user_id != contest.author_id:
        flash('You do not have proper authorization to do this!', 'danger')
        return redirect('/contest/' + str(contest_id))

    form = InviteForm(obj=contest)
    friendships = Friendship.query.filter_by(user_id=g.user.user_id).all()
    users = [User.query.get(friendship.friend_id) for friendship in friendships]
    form.users.choices = [(user.user_id, user.username) for user in users]

    if request.method == 'POST' and form.validate():
        form = InviteForm(request.form)
        if form.users.data == None: form.users.data = []
        else: form.users.data = [User.query.get(user_id) for user_id in form.users.data]

        form.populate_obj(contest)
        contest.save()
        return redirect(url_for('contest_overview', contest_id=contest.contest_id))

    return render_template('invite_form.html', form=form, edit=True)
Example #9
0
def invite(site_id):
    user = users.get_current_user()
    site = Site.get_admin_or_404(site_id)
    form = InviteForm(request.form)
    if form.validate():
        invite_hash = sha1()
        invite_hash.update(str(site.key()))
        invite_hash.update(os.urandom(8))
        invite_hash.update(form.email.data)
        invite_hash = b32encode(invite_hash.digest()).lower()
        invite = Invitation(
            hash=invite_hash,
            email=form.email.data,
            site=site,
            admin=form.admin.data,
            inviter=user
        )
        invite.put()
        mail.send_mail(
            sender = settings.invite_sender_email,
            to = invite.email,
            subject = '%s invited you to join them on %s' % (user.email(), settings.appname),
            body = render_template('invite_email.txt', invite=invite),
            html = render_template('invite_email.html', invite=invite),
        )
        if request.is_xhr:
            return 'OK'
        flash('Invitation Sent!', 'success')
    else:
        errors = sum(form.errors.values(), [])
        if request.is_xhr:
            return ', '.join(errors)
        for error in errors:
            flash(error, 'error')
        flash(form.email.data, 'error')
    return redirect(url_for('edit_siteusers', site_id=site_id))