Ejemplo n.º 1
0
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('/')
Ejemplo n.º 2
0
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('/')