81 lines
3.6 KiB
Python
81 lines
3.6 KiB
Python
"""
|
|
Project: Magic Tracker
|
|
Author: Edward Middleton-Smith
|
|
Shuffle & Skirmish
|
|
|
|
Technology: View Models
|
|
Feature: MTG Decks View Model
|
|
|
|
Description:
|
|
Data model for MTG decks view
|
|
"""
|
|
|
|
# internal
|
|
from business_objects.tcg.mtg_deck_commander_bracket import MTG_Deck_Commander_Bracket, Parameters_MTG_Deck_Commander_Bracket
|
|
from business_objects.tcg.mtg_deck import MTG_Deck, Parameters_MTG_Deck
|
|
from business_objects.tcg.statistic import Statistic, Parameters_Statistic
|
|
from datastores.datastore_mtg import DataStore_MTG
|
|
from models.model_view_mtg_base import Model_View_MTG_Base
|
|
from helpers.helper_app import Helper_App
|
|
import lib.argument_validation as av
|
|
|
|
# external
|
|
from pydantic import BaseModel
|
|
from typing import ClassVar
|
|
|
|
|
|
class Model_View_MTG_Decks(Model_View_MTG_Base):
|
|
FLAG_STATISTICS: ClassVar[str] = 'statistics'
|
|
commander_brackets: list = None
|
|
decks: list = None
|
|
form_filters: object = None
|
|
parameters_deck: Parameters_MTG_Deck = None
|
|
statistics: list = None
|
|
|
|
def __init__(self, parameters_deck=None, hash_page_current=Model_View_MTG_Base.HASH_PAGE_MTG_DECKS):
|
|
_m = 'Model_View_MTG_Decks.__init__'
|
|
# Helper_App.console_log(f'{_m}\nstarting...')
|
|
super().__init__(hash_page_current=hash_page_current)
|
|
self._title = 'MTG Decks'
|
|
datastore = DataStore_MTG()
|
|
|
|
# Get all decks
|
|
parameters_deck = Parameters_MTG_Deck.get_default(self.user.user_id)
|
|
self.decks, errors = datastore.get_many_mtg_deck(parameters_deck)
|
|
|
|
# Helper_App.console_log(f'Decks IDs: {self.decks}')
|
|
# Get all commander brackets
|
|
parameters_commander_bracket = Parameters_MTG_Deck_Commander_Bracket.get_default(self.user.user_id)
|
|
parameters_commander_bracket.get_all_commander_bracket = True
|
|
parameters_commander_bracket.require_all_id_filters_met = False
|
|
parameters_commander_bracket.require_any_id_filters_met = False
|
|
self.commander_brackets, errors = datastore.get_many_mtg_deck_commander_bracket(parameters_commander_bracket = parameters_commander_bracket)
|
|
|
|
# Helper_App.console_log(f'Brackets: {self.commander_brackets}')
|
|
commander_bracket_index = {}
|
|
for index_commander_bracket in range(len(self.commander_brackets)):
|
|
bracket = self.commander_brackets[index_commander_bracket]
|
|
commander_bracket_index[bracket.commander_bracket_id] = bracket
|
|
# Helper_App.console_log(f'Bracket IDs: {commander_bracket_index}')
|
|
|
|
deck_index = {}
|
|
for index_deck in range(len(self.decks)):
|
|
bracket = commander_bracket_index[self.decks[index_deck].commander_bracket_id]
|
|
self.decks[index_deck].commander_bracket = bracket
|
|
deck_index[self.decks[index_deck].deck_id] = self.decks[index_deck]
|
|
|
|
# Get all statistics
|
|
parameters_statistic = Parameters_Statistic.get_default(self.user.user_id)
|
|
parameters_statistic.get_all_statistic = False
|
|
parameters_statistic.entity_type_codes = Model_View_MTG_Decks.DECK_ENTITY_TYPE_CODE
|
|
parameters_statistic.entity_record_ids = ','.join([str(d.deck_id) for d in self.decks])
|
|
parameters_statistic.require_all_id_filters_met = True
|
|
parameters_statistic.require_any_id_filters_met = True
|
|
self.statistics, errors = datastore.get_many_statistic(parameters_statistic = parameters_statistic)
|
|
|
|
for index_statistic in range(len(self.statistics)):
|
|
deck = deck_index[int(self.statistics[index_statistic].entity_record_id)]
|
|
self.statistics[index_statistic].entity_record_name = deck.name
|
|
|
|
|