frePPLeOpen source Production Planning
  • Home
  • Documentation
  • C++ API

Creating an extension app

The section describes how you can create a extension app that extends and customizes the user interface.

The steps outline here are a short summary of how Django applications are developed. The sample extension defined here is just
The complete documentation can be found on the Django website, which also has an excellent tutorial.

  1. Create the app folder:
    An app is structured as a Python module that needs to follow a specific structure.
    You can create a skeleton structure for your app by unzipping this file.

    Download zip-file with sample extension
  2. Register your app:
    In the file djangosettings.py your new app needs to be added in the section INSTALLED_APPS.
    It’s best to put your app *before* all standard apps, so you can override any of the standard templates and functionality.

  3. Define the database models:
    Edit the file models.py to describe the new database models you require.
    The database table and its indexes are created with:

       frepplectl syncdb
  4. Register the new models in the admin:
    You’ll need to edit the file admin.py.
    FrePPLe uses 2 admin sites by default: freppledb.admin.data_admin for model input data, and freppledb.admin.admin_site for models that are typically used only by system administrators.

  5. Create or override HTML template pages
    The web pages are rendered from a set of HTML templates. Create a template folder in your new app to store your templates. In the file djangosettings.py this folder needs to be added *before* the other entries (in this way your override is used instead of the standard file).
    For instance, you can the file admin/base_site.html into your template folder, and edit the line shown below with the name and logo of your company.

       {% block branding %}frePPLe {% version %}{% endblock %}
  6. Define new reports:
    New reports are normally defined in a file views.py or as files in a folder called views.
    A separate page contains more details on the structure of the report code.

  7. Register the URLs of the new reports:
    The url where the report is published is defined in the file urls.py.

  8. Add the reports to the menu:
    The menu is a defined in the file menu.py.
    Note that the models registered in the admin automatically get added already in the menu.
    Note that this menu structure is not standard Django functionality, but specific to frePPLe.

  9. Add initial data:
    In a subfolder called fixtures you can define initial data that is loaded when you initialize your extension (ie when the command “frepplectl syncdb” is run).
    Fixtures can also be loaded with “frepplectl loaddata”.

  10. Add custom commands:
    By creating files in the folder management/commands you can define extra commands.
    You can execute the custom commands with:

       frepplectl my_command
  11. Add unit tests:
    Unit tests are defined in the file tests.py. They are executed when you run the command:

       frepplectl test my_app
  12. Customize the planning script (advanced):
    The script commands.py is executed by the planning engine to generate a plan.
    You can creating a customized version in your app to add customized planning steps.
    Note that this is not standard Django functionality, but specific to frePPLe.

    • Getting started
      • 1 – Introduction
      • 2 – Installation
      • 3 – Entering data
      • 4 – Modelling concepts
      • 5 – Your first model
      • 6 – Your first plan
    • Modeling guide
      • Simplified domain model
      • Detailed domain model
      • Environment variables
      • Python interpreter
      • Global parameters
      • Buffer
      • Calendar
      • Customer
      • Demand
      • Flow
      • Item
      • Load
      • Location
      • Operation
      • Suboperation
      • Operationplan
      • Problem
      • Resource
      • SetupMatrix
      • Skill
      • Resource skill
      • Solver
    • User guide
      • Supported browsers
      • Getting around
        • Logging in
        • Logging out
        • Changing password
        • Navigation
          • Menu bar
          • Jump search
          • Context menus
        • Filtering data
        • Sorting data
        • Selecting time buckets
        • Exporting data
        • Importing data
        • Customizing a screen
        • User preferences
        • User permissions and roles
        • Comments
        • History – Audit trail
      • Data maintenance screens
      • Supply Path / Where Used
      • Plan analysis screens
        • Problem report
        • Constraint report
        • Inventory report
        • Inventory detail report
        • Resource report
        • Resource Gantt report
        • Resource detail report
        • Operation report
        • Operation detail report
        • Demand report
        • Demand detail report
        • Demand Gantt report
        • Forecast report
        • Performance indicator report
      • Execution screen
      • Batch commands
        • frepplectl
        • frepple
        • freppleservice.exe (Windows only)
    • Installation guide
      • Windows installer
      • Compiling on Windows
      • Linux binary packages
      • Compiling on Linux
      • Compiling from the source code repository
      • Running the VMWare virtual machine
      • Other platforms
      • Configuring multiple models in the user interface
      • Configuring as a Python extension module
    • Extension modules
      • Forecast module
      • Order quoting module
      • REST web service module
      • OpenERP connector module
      • Linear programming solver module
    • Technical guide
      • Architecture
      • Source code repository
      • User interface
        • Creating an extension app
        • Translating the user interface
        • Adding or customizing a report
        • Style guide
      • Solver engine
        • Code structure
        • Class diagram
        • Planning algorithm
          • Top level loop
          • Demand solver
          • Buffer solver
          • Flow solver
          • Load solver
          • Operation solver
          • Resource solver
        • Cluster and level algorithm
        • Extension modules
        • Style guide
        • Portability
      • Security
      • Unit tests
        • buffer_procure_1
        • calendar
        • callback
        • cluster
        • constraints_combined_1
        • constraints_combined_2
        • constraints_leadtime_1
        • constraints_material_1
        • constraints_material_2
        • constraints_material_3
        • constraints_material_4
        • constraints_resource_1
        • constraints_resource_2
        • constraints_resource_3
        • constraints_resource_4
        • constraints_resource_5
        • datetime
        • deletion
        • demand_policy
        • flow_alternate_1
        • flow_alternate_2
        • flow_effective
        • forecast_1
        • forecast_2
        • forecast_3
        • forecast_4
        • forecast_5
        • forecast_6
        • jobshop
        • load_alternate
        • load_effective
        • lpsolver_1
        • multithreading
        • name
        • operation_alternate
        • operation_available
        • operation_effective
        • operation_pre_post
        • operation_routing
        • pegging
        • problems
        • python_1
        • python_2
        • python_3
        • safety_stock
        • sample_module
        • scalability_1
        • scalability_2
        • scalability_3
        • setup_1
        • setup_2
        • skill
        • xml
        • xml_remote
    • FAQ
    • License
      • GNU Affero General Public License
      • GNU Free Documentation License
    • Third party add-ons
  • Copyright © 2010-2013 frePPLe bvba