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 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('/')