Views#

Inheritance map for the richy.core.views module – the bases and mixins that every per-app view file (shares, coins, etfs, indexes, news, staking, transactions) builds on. Each block lists one core class and every project-internal class that directly extends it. Django base classes (View, TemplateView, DetailView, ListView, UpdateView, CreateView, RedirectView, FormView, LoginView) and django-braces mixins (LoginRequiredMixin, FormMessagesMixin, JSONResponseMixin) are omitted to keep the picture readable. (+ ...) after a leaf names any other project-internal parents that view also mixes in.

Mixins#

Behaviour-only mixins. They render no template themselves; they get combined with view classes to add capabilities (submenu rendering, chart-data shaping, user-item manipulation, …).

TransactionChartDataMixin
├── core.DashboardTemplateView
├── transactions.BaseTransactionDetailView   (+ SubmenuViewMixin)
├── transactions.OpenCreateView
└── transactions.ClosedTemplateView

SubmenuViewMixin
├── shares.SplitterSubmenuViewMixin
├── shares.ShareChildrenSubmenuViewMixin
├── coins.CoinChildrenSubmenuViewMixin
├── etfs.EtfSubmenuViewMixin
├── etfs.SplitterSubmenuViewMixin
├── indexes.IndexChildrenSubmenuViewMixin
├── staking.StakingSubmenuViewMixin
├── transactions.TransactionSubmenuViewMixin
└── transactions.BaseTransactionDetailView   (+ TransactionChartDataMixin)

UserItemManipulationMixin
├── core.BaseUserItemCreateView
├── shares.ShareUpdateView                   (+ ShareChildrenSubmenuViewMixin, FetchDataMixin)
├── coins.CoinUpdateView                     (+ CoinChildrenSubmenuViewMixin, FetchDataMixin)
├── etfs.EtfUpdateView                       (+ EtfSubmenuViewMixin, FetchDataMixin)
├── indexes.IndexUpdateView                  (+ IndexChildrenSubmenuViewMixin, FetchDataMixin)
└── staking.BaseStakingManipulationMixin     (+ StakingSubmenuViewMixin)

The paging mixins (PaginatorMixin, ModelPaginatorMixin) are narrated separately on Paging; their extenders for completeness:

PaginatorMixin
├── core.BaseDrawdownPeriodsAndAthsDetailView
└── news.NewsTemplateView

ModelPaginatorMixin
├── core.BaseHistoricalData
└── news.BaseNewsItemDetailView

Ajax bases#

Base classes for JSON-only endpoints (chart-data feeds, current-price poll, etc.).

AjaxView
├── core.BaseFetchItemAjaxView
├── core.ItemCurrentPriceAjaxView
├── core.FetchDrawdownAjaxView
├── core.TheEyeAjaxView
└── transactions.BaseAssetAllocationChartDataAjaxView

BaseFetchItemAjaxView
├── shares.FetchOverviewAjaxView
├── shares.FetchShareAjaxView
├── coins.FetchOverviewAjaxView
├── coins.FetchCoinAjaxView
├── etfs.FetchOverviewAjaxView
├── etfs.FetchEtfAjaxView
├── indexes.FetchOverviewAjaxView
├── indexes.FetchIndexAjaxView
└── transactions.FetchItemPricesAjaxView

Per-item-tab bases#

Bases backing the per-asset detail-page tabs (Performance, Drawdowns & ATHs, The Eye, Historical data). Each per-app variant mixes in the relevant submenu mixin so the tab strip renders consistently.

BaseItemDetailView
├── shares.ShareDetailView                   (+ ShareChildrenSubmenuViewMixin)
├── coins.CoinDetailView                     (+ CoinChildrenSubmenuViewMixin)
├── etfs.EtfDetailView                       (+ EtfSubmenuViewMixin)
└── indexes.IndexDetailView                  (+ IndexChildrenSubmenuViewMixin)

BasePerformanceDetailView
├── shares.PerformanceDetailView             (+ ShareChildrenSubmenuViewMixin)
├── coins.PerformanceDetailView              (+ CoinChildrenSubmenuViewMixin)
├── etfs.PerformanceDetailView               (+ EtfSubmenuViewMixin)
└── indexes.PerformanceDetailView            (+ IndexChildrenSubmenuViewMixin)

BaseTheEyeView
├── shares.ShareTheEyeView                   (+ ShareChildrenSubmenuViewMixin)
├── coins.CoinTheEyeView                     (+ CoinChildrenSubmenuViewMixin)
├── etfs.EtfTheEyeView                       (+ EtfSubmenuViewMixin)
└── indexes.IndexTheEyeView                  (+ IndexChildrenSubmenuViewMixin)

BaseHistoricalData
├── shares.HistoricalDataListView            (+ ShareChildrenSubmenuViewMixin)
├── coins.HistoricalDataListView             (+ CoinChildrenSubmenuViewMixin)
├── etfs.HistoricalDataListView              (+ EtfSubmenuViewMixin)
└── indexes.HistoricalDataListView           (+ IndexChildrenSubmenuViewMixin)

BaseDrawdownPeriodsAndAthsDetailView
├── shares.DrawdownPeriodsAndAthsTemplateView    (+ ShareChildrenSubmenuViewMixin)
├── coins.DrawdownPeriodsAndAthsTemplateView     (+ CoinChildrenSubmenuViewMixin)
├── etfs.DrawdownPeriodsAndAthsTemplateView      (+ EtfSubmenuViewMixin)
└── indexes.DrawdownPeriodsAndAthsTemplateView   (+ IndexChildrenSubmenuViewMixin)

Item CRUD bases#

BaseUserItemCreateView
├── shares.OverviewCreateView                (+ FetchDataMixin)
├── coins.OverviewCreateView                 (+ FetchDataMixin)
├── etfs.OverviewCreateView                  (+ FetchDataMixin)
└── indexes.OverviewCreateView               (+ FetchDataMixin)

BaseDeleteUserItemRedirectView
├── shares.DeleteShareRedirectView
├── coins.DeleteCoinRedirectView
├── etfs.DeleteEtfRedirectView
└── indexes.DeleteIndexRedirectView

Splitter bases#

Two-step form flow for applying a stock-split adjustment retroactively to historical prices. Implemented only by shares and ETFs.

BaseSplitterFormView
├── shares.SplitterFormView                  (+ SplitterSubmenuViewMixin)
└── etfs.SplitterFormView                    (+ SplitterSubmenuViewMixin)

BaseSplitterPreviewFormView
├── shares.SplitterPreviewFormView           (+ SplitterSubmenuViewMixin)
└── etfs.SplitterPreviewFormView             (+ SplitterSubmenuViewMixin)

Standalone views#

These richy.core.views classes don’t have project-internal extenders – they’re concrete views used directly via URL routes:

  • HealthCheckView

  • DashboardTemplateView

  • SearchRedirectView

  • SignInFormView

  • SignOutRedirectView

  • ItemCurrentPriceAjaxView

  • FetchDrawdownAjaxView

  • TheEyeAjaxView