Backend Module structure
Audit module files structure

management - specific management commands (in our case there is only one command for updating permissions)
migrations - database migrations
notifications - templates for email notifications
purchase_order - nested global application to keep shared across the countries information about the auditor firm
serializers- rest framework serializers
- auditor.py - serializers for auditor firm, staff members, purchase orders
- engagement.py - engagement related serializers (Audits, SpotChecks, Attachments, etc)
- export - everything that is related to CSV& PDF exports
- mixins.py - specific serializers mixins
- risks.py - Risks serializers (mainly used in MicroAssessment Questionnaire)
- templates - templates to be used in various exports (visit letter & activities PDF export)
- tests - tests for models, views, serializers, transitions flow
- transitions - everything that is related to fsm transitions
- conditions.py - custom checks for transitions (For example in case of submitting report we need to be assured that report attachments exists
- serializers.py - transitions serializers to validate their input) arguments (see more in permissions framework section)
- admin.py - admin site definitions for models
- apps.py - python app configuration
- conditions.py - permissions conditions. see more details here
- exports.py - csv renderers
- filters.py - rest framework views filters
- metadata.py - base metadata class to be used in viewsets. more in API Metadata section
- models.py - country-related audit models
- signals.py - app signals. custom logic for user deletion; sending notifications in case of assigning action points
- urls.py - app urls
- views.py - just set of views to work with models
audit.purchase_order app

To store the global data that is related to Auditor Portal, nested application named purchase_order was implemented.
Views and serializers are still located in the parent application to keep the consistant place for all module logic.
The App consists of the following parts:
- migrations - database migrations
- tests - unit tests
- admin.py - admin site config
- apps.py - python app config
- models.py - partner with their staff members
- synchronizer.py - VISION partner synchronizer
- tasks.py - periodic tasks, which are responsible for keeping the partners synced with the VISION
Last updated