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 new_org(): form = NewOrganizationForm() if form.validate_on_submit(): is_pending = bool(form.domain.data) if is_pending: org = PendingOrganization.objects.create( name=form.name.data, lang=form.lang.data, domain=form.domain.data, created_by=g.user.pk, ) return redirect(url_for('verify_domain', org=org.pk)) else: # Generate a unique slug from name base_slug = slugify(form.name.data) 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=form.name.data, lang=form.lang.data, owned_by=g.user.pk, ) OrganizationMember.objects.create( org=org.pk, user=g.user.pk, ) flash("Your organization was created successfully!") return redirect(url_for('list_snippets', org=org.pk)) return render_template('organizations/new.html', **{ 'form': form, })