Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

The Online Backend is implemented in Django (in Python programming language).

Django is used for:

Django is NOT used to build user interfaces (i.e. the Django Templates are not used).

Instead, a REST interface is built on top of the services/models via Django REST Framework, with the JSON Api extension 

The Django REST Framework

  • support various formats (JSON, XML,...)
  • provides, on top of the actual REST API, a (browsable) documentation.

The JSON Api extension of the Django REST Framework, is dedicated to provide an interface compliant with the {json:api} standard

Under consideration: the implementation of a GraphQL, using Graphene.

Modularity

Desired modularity will be achieved by combining two techniques:

Security

The backend security is based on django (django REST framework) default mechanisms, that have been configured/customized in 3 main areas:

  • ensure (backward/concurrent) compatibility with current openIMIS implementation (way to define users, grant access to features,...)
  • prepare the integration with openHIE ecosystem (integration with a SSO platform)
  • provide fine-grained (object level) RBAC security model.

Note: the backend must be run behind a gateway.

The security models and concepts describe the core elements of the backend security.

Special notices highlight the important aspects related to the various (security-related) actors of an openIMIS concrete implementation:

Testing

Backend modules are unittested via python/django classic unit test framework.

Test coverage is gathered by continuous build (via travis-ci) and reported on codeclimat (login with your github account).

The behave python library is shipped with openIMIS backend, so that gherkin can be used for more functional testing.

Documentation and Tutorials

(official) Django documentation is very complete and is clearly THE privileged source of information.

Some other material of interest:

  • Python programming language on edx.org 
  • Books of interest:
    • REST APIs with Django: Build powerful web APIs with Python and Django, by William S. Vincent

To setup a development environment, the use of pip, pipenv and virtualenv is highly recommended, please visit https://docs.python-guide.org/dev/virtualenvs/ for detailed information.


  • No labels