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))
def edit_siteusers(site_id): site = Site.get_admin_or_404(site_id) invite_form = InviteForm() if request.is_xhr: return render_template('siteusers_editor.html', site=site, invite_form=invite_form) return render_template('edit_siteusers.html', site=site, invite_form=invite_form)
def edit_site(site_id): site = Site.get_admin_or_404(site_id) form = SiteForm(request.form, site) if request.method == 'POST': if form.validate(): site.name = form.name.data site.put() if request.is_xhr: return 'OK' elif request.is_xhr: return render_template('form_errors.html', form=form) if request.is_xhr: return render_template('site_editor.html', form=form, site=site) return render_template('edit_site.html', form=form, site=site)
def new_page(site_id): site = Site.get_admin_or_404(site_id) form = PageForm(request.form, site=site) if request.method == 'POST': if form.validate(): page = Page.new_page(site, form.name.data, form.url.data) new_url = url_for('editor', page_id=page.key().id()) if request.is_xhr: return jsonify(dict(type='success', redirect=new_url)) return redirect(new_url) elif request.is_xhr: return jsonify(dict(type='error', errors=render_template('form_errors.html', form=form))) if request.is_xhr: return render_template('page_creator.html', form=form, site=site) return render_template('new_page.html', form=form, site=site)
def remove_user(site_id): site = Site.get_admin_or_404(site_id) admin = users.get_current_user() user_id = request.form.get('user_id', None) if not user_id or admin.user_id() == user_id: abort(400) remove_admin_only = request.form.get('remove_admin_only', False) them = [u for u in site.users if u.user_id() == user_id] for user in them: if not remove_admin_only: site.users.remove(user) if user in site.admins: site.admins.remove(user) site.put() return 'OK'
def new_page(site_id): site = Site.get_admin_or_404(site_id) form = PageForm(request.form, site=site) if request.method == 'POST': if form.validate(): page = Page.new_page(site, form.name.data, form.url.data) new_url = url_for('editor', page_id=page.key().id()) if request.is_xhr: return jsonify(dict(type='success', redirect=new_url)) return redirect(new_url) elif request.is_xhr: return jsonify( dict(type='error', errors=render_template('form_errors.html', form=form))) if request.is_xhr: return render_template('page_creator.html', form=form, site=site) return render_template('new_page.html', form=form, site=site)
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))
def delete_site(): site_id = int(request.form.get('site_id', -1)) site = Site.get_admin_or_404(site_id) site.delete() return 'OK'