Skip to content

Request Lifecycle

This page describes how a request moves through OpenSESA from routing to response generation.

High-Level Flow

flowchart LR
    A[Incoming Request] --> B[URL Router]
    B --> C[Middleware Chain]
    C --> D[Domain View]
    D --> E[Domain Service or ORM]
    E --> F[Template or JSON Response]

Middleware Sequence

flowchart TD
    A[SecurityMiddleware] --> B[Custom SecurityHeadersMiddleware]
    B --> C[SessionMiddleware]
    C --> D[CsrfViewMiddleware]
    D --> E[AuthenticationMiddleware]
    E --> F[AccountMiddleware]
    F --> G[MFARequiredMiddleware]
    G --> H[LoginRequiredMiddleware]
    H --> I[HtmxMiddleware]

View Execution Pattern

  1. Request is routed to module URL config.
  2. View resolves project context and permission scope.
  3. Business logic executes through models or service helpers.
  4. Response is rendered (HTML) or serialized (JSON/API endpoint).

Rendering and Context

  • Template responses are enriched through shared context processors.
  • Domain views should keep orchestration thin and delegate reusable logic.
  • HTMX-enhanced paths should preserve equivalent non-HTMX behavior.

Failure Points to Watch

Layer Typical Failure Mitigation
Middleware Auth/session ordering problems Validate middleware chain after auth changes
View Missing project scoping Enforce scope checks at entry points
ORM Expensive query patterns Use select_related and prefetch_related
Template Missing context assumptions Add defensive template checks and tests

Performance note

Prefer prefetch/select-related optimizations in list/detail views where cross-model data is shown.