def edit_snippet(org, id): """ Creates a new snippet for an organization. """ org = get_object_or_404(Organization, org) snippet = get_object_or_404(Snippet, id) if snippet.org != org.pk: abort(404) user = User.objects.get(snippet.user) if snippet.user != user.pk: abort(404) form = EditSnippetForm(obj=snippet) if form.validate_on_submit(): # Generate a unique slug from name snippet.text = form.text.data snippet.lang = form.lang.data snippet.keywords = form.keywords.data return redirect(url_for('snippet_detail', org=org.pk, id=snippet.pk)) return render_template('snippets/edit.html', **{ 'org': org, 'snippet': snippet, 'form': form, })
def snippet_detail_raw(org, id): org = get_object_or_404(Organization, org) snippet = get_object_or_404(Snippet, id) if snippet.org != org.pk: abort(404) return Response(snippet.text, mimetype="text/plain")
def snippet_detail(org, id): org = get_object_or_404(Organization, org) snippet = get_object_or_404(Snippet, id) if snippet.org != org.pk: abort(404) user = User.objects.get(snippet.user) return render_template('snippets/details.html', **{ 'snippet': snippet, 'org': org, 'user': user, })
def invite_confirm(org, pmem, sig): org = get_object_or_404(Organization, org) pmem = get_object_or_404(PendingMember, pmem) if pmem.org == org.pk and g.user.email == pmem.email: if OrganizationMember.objects.get_or_create( user=g.user.pk, org=org.pk, )[1]: flash("You have been added to '%s'" % org.name) pmem.delete() return redirect(url_for('list_snippets', org=org.pk))
def org_details(org): org = get_object_or_404(Organization, org) if not g.user.can_admin_org(org): return redirect(url_for('org_snippets', org=org.pk)) return render_template('organizations/details.html', **{ 'org': org, })
def verify_domain(org): porg = get_object_or_404(PendingOrganization, org) email = request.args.get('e') sig = request.args.get('s') if all([sig, email]): # Generate a unique slug from name base_slug = slugify(porg.name) slug = base_slug i = 1 while Organization.objects.exists(slug): slug = '%s-%s' % (base_slug, i) i += 1 org = Organization.objects.create( pk=slug, name=porg.name, lang=porg.lang, domain=porg.domain, owned_by=porg.created_by, ) OrganizationMember.objects.create( org=org.pk, user=porg.created_by, ) flash("Your organization was created successfully!") return redirect(url_for('list_snippets', org=org.pk)) form = VerifyDomainForm() if form.validate_on_submit(): email = '%s@%s' % (form.email_username.data, porg.domain) sig = hashlib.md5(email) sig.update(app.config['SECRET_KEY']) sig = sig.hexdigest() app.logger.info("Sending domain verification to %s", email) body = render_template('organizations/mail/verify_domain.txt', **{ 'verify_url': '%s?e=%s&s=%s' % (url_for('verify_domain', org=porg.pk, _external=True), quote(email), quote(sig)), }) msg = Message("Codebox Domain Verification", recipients=[email], body=body) mail.send(msg) flash("An email has been sent to %s to validate domain ownership." % email) return render_template('organizations/verify_domain.html', **{ 'porg': porg, 'form': form, }) return redirect('/')
def delete_snippet(org, id): """ Deletes a new snippet. """ org = get_object_or_404(Organization, org) snippet = get_object_or_404(Snippet, id) if snippet.org != org.pk: abort(404) user = User.objects.get(snippet.user) if snippet.user != user.pk: abort(404) if request.form.get('confirm'): snippet.delete() return redirect(url_for('list_snippets', org=org.pk)) return render_template('snippets/delete.html', **{ 'org': org, 'snippet': snippet, })
def edit_org(org): org = get_object_or_404(Organization, org) form = EditOrganizationForm(name=org.name, lang=org.lang) if form.validate_on_submit(): org.name = form.name.data org.lang = form.lang.data flash("Your organization was updated successfully!") return redirect(url_for('list_snippets', org=org.pk)) return render_template('organizations/edit.html', **{ 'form': form, 'org': org, })
def list_snippets(org): org = get_object_or_404(Organization, org) snippets = list(Snippet.objects.filter(org=org.pk)) for s in snippets: if not s.text: Snippet.objects.remove_from_index(s.pk, org=org.pk) snippets = filter(lambda x: x.text, snippets) snippets_users = User.objects.get_many([s.user for s in snippets]) return render_template('snippets/list.html', **{ 'org': org, 'snippets': snippets, 'snippets_users': dict([(u.pk, u) for u in snippets_users]), 'snippets_orgs': {org.pk: org}, })
def list_snippets(org): org = get_object_or_404(Organization, org) snippets = list(Snippet.objects.filter(org=org.pk)) for s in snippets: if not s.text: Snippet.objects.remove_from_index(s.pk, org=org.pk) snippets = filter(lambda x: x.text, snippets) snippets_users = User.objects.get_many([s.user for s in snippets]) return render_template( 'snippets/list.html', **{ 'org': org, 'snippets': snippets, 'snippets_users': dict([(u.pk, u) for u in snippets_users]), 'snippets_orgs': { org.pk: org }, })
def new_snippet(org): """ Edits a snippet. """ org = get_object_or_404(Organization, org) form = NewSnippetForm(lang=org.lang, csrf_enabled=(not g.is_api)) if form.validate_on_submit(): # Generate a unique slug from name snippet = Snippet.objects.create( org=org, text=form.text.data, lang=form.lang.data, keywords=form.keywords.data, user=g.user.pk, ) return redirect(url_for('snippet_detail', org=org.pk, id=snippet.pk)) return render_template('snippets/new.html', **{ 'org': org, 'form': form, })
def invite_members(org): org = get_object_or_404(Organization, org) form = InviteUserForm() if form.validate_on_submit(): for email in form.email_list.data.split('\n'): email = email.strip() pmem = PendingMember.objects.get_or_create( email=email, org=org.pk, defaults={ 'created_by': g.user.pk, } )[0] sig = pmem.get_signature() body = render_template('organizations/mail/invite.txt', **{ 'confirm_url': url_for('invite_confirm', org=org.pk, pmem=pmem.pk, sig=sig, _external=True), 'org': org, }) msg = Message("Codebox Organization Invite", recipients=[email], body=body) mail.send(msg) flash("Your invitation(s) have been sent.") return redirect(url_for('invite_members', org=org.pk)) return render_template('organizations/invite_members.html', **{ 'org': org, 'form': form, }) return redirect('/')