Example #1
0
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,
    })
Example #2
0
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,
    })
Example #3
0
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")
Example #4
0
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")
Example #5
0
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,
    })
Example #6
0
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))
Example #7
0
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,
    })
Example #8
0
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,
    })
Example #9
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('/')
Example #10
0
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,
    })
Example #11
0
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,
    })
Example #12
0
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,
    })
Example #13
0
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},
    })
Example #14
0
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
            },
        })
Example #15
0
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,
    })
Example #16
0
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,
    })
Example #17
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('/')