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:
HealthCheckViewDashboardTemplateViewSearchRedirectViewSignInFormViewSignOutRedirectViewItemCurrentPriceAjaxViewFetchDrawdownAjaxViewTheEyeAjaxView