Skip to main content

Django app with common code and assets for Money to Prisoners serivces

Project description

A Django app containing utilities and assets common to all Money to Prisoners services/applications.


  • Build pipeline with actions that depend on others
  • Base SCSS, JS and static assets
  • Base templates for staff and public apps
  • Reusable templates for form fields and errors
  • Authentication utilities and views for connecting to money-to-prisoners-api
  • User account management forms and views
  • REST utilities for retrieving information from money-to-prisoners-api
  • Utility for communicating with NOMIS api
  • Integration and accessibility testing with selenium
  • Python code style testing
  • Log formatting for shipping to ELK


Add money-to-prisoners-common==<version> to the Money to Prisoners application’s requirements.txt. There are two variations as setuptools extras:

  • Use money-to-prisoners-common[testing]==<version> for environments requiring testing
  • Use money-to-prisoners-common[monitoring]==<version> for the deployed version

Add url patterns:

from django.conf.urls import url

from mtp_common.auth import views

urlpatterns = [
    url(r'^login/$', views.login, {
        'template_name': 'login.html',
        }, name='login'),
        r'^logout/$', views.logout, {
            'template_name': 'login.html',
            'next_page': reverse_lazy('login'),
        }, name='logout'

Configure Django settings:

    # instead of django.middleware.csrf.CsrfViewMiddleware
    # instead of django.contrib.auth.middleware.AuthenticationMiddleware


CSRF_FAILURE_VIEW = 'mtp_common.auth.csrf.csrf_failure'

If you wish for additional interface methods, you can extend mtp_common.auth.models.MojUser, and specify your subclass as MOJ_USER_MODEL. An example would be adding a property to access a key in the user_data dict.

MOJ_USER_MODEL = 'myapp.models.MyCustomUser'

Specify the parameters of the API authentication. API_CLIENT_ID and API_CLIENT_SECRET should be unique to your application.

API_CLIENT_SECRET = os.environ.get('API_CLIENT_SECRET', 'xxx')
API_URL = os.environ.get('API_URL', 'http://localhost:8000')


  • Test using ./ test or python test
  • Update the version with ./ set_version --version [?.?.?]
  • Commit and push changes to github
  • Submit to PyPi with ./ upload


Update translation files with ./ make_messages – you need to do this every time any translatable text is updated.

Compile messages ./ compile_messages – only needed during local testing or development, it happens automatically during build or upload.

Pull updates from Transifex with ./ translations --pull. You’ll need to update translation files afterwards and manually check that the merges occurred correctly.

Push latest English to Transifex with ./ translations --push. NB: you should pull updates before pushing to merge correctly.

Common assets

All shared assets used for money-to-prisoners-cashbook, money-to-prisoners-bank-admin, money-to-prisoners-noms-ops and money-to-prisoners-send-money are kept in this package.

Each application’s build scripts install this package automatically.

SCSS, JavaScript, images

Assets that need compiling are in mtp_common/assets-src/(images|javascripts|scss). The base sass file, _mtp.scss, is used to include the sass includes from this packge into each frontend app.

Static assets are in mtp_common/static/(images|javascripts|css).

There is a separate guide to the various visual elements defined in this repository and used by the various MTP apps.

Django templates

Common templates used by the client applications are kept in mtp_common/templates.

Project details

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for money-to-prisoners-common, version 9.20.0
Filename, size File type Python version Upload date Hashes
Filename, size money_to_prisoners_common-9.20.0-py3-none-any.whl (275.6 kB) File type Wheel Python version py3 Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page