Developers Guide

Adding new modules

You can extend newsroom via creating python module with init_app() method:

from flask import Blueprint

blueprint = Blueprint('foo')

@blueprint.route('/foo')
def index():
    pass

def init_app(app):
    app.section('foo', 'Foo')
    app.sidenav('Foo', 'foo.index', section='foo')
    app.register_blueprint(blueprint)

Such module should be added to settings.INSTALLED_APPS and then it will be loaded on start. Param app is newsroom.Newsroom instance.

Templating

When defining new templates you should extend layout to get basic markup/css/js:

{% extends "layout.html" %}

{% block title %}Foo{% endblock %}

{% block breadcrumb %}
<span class="breadcrumb-item active">Foo</span>
{% endblock %}

{% block content %}
<div id="foo-app" class="content">
    <h1>Foo</h1>
    <p>Here goes content</p>
</div>
{% endblock %}

{% block script %}
    <script>
        // custom scripts
    </script>
    {{ javascript_tag('foo_js') | safe }}
{% endblock %}

Templates can be added to newsroom/templates folder or to top level templates dir.

Javascript

We use single page web app for each module. Those can be loaded via javascript_tag() template helper using webpack build entrypoint name, which must be added first to webpack.config.js.

To run webpack dev server use npm run start and then start newroom via honcho run.

Javascript files are located in assets folder.