Feat: Decks page.
This commit is contained in:
@@ -51,6 +51,7 @@ class Model_View_Base(BaseModel, ABC):
|
||||
COLOUR_TEXT_LINK_VISITED: ClassVar[str] = '#551A8B'
|
||||
COMPANY_ADDRESS_SHORT: ClassVar[str] = 'Russet, Sawbridge Road, Grandborough, United Kingdom, CV23 8DN'
|
||||
COMPANY_NUMBER: ClassVar[str] = '13587499'
|
||||
DECK_ENTITY_TYPE_CODE: ClassVar[str] = 'deck'
|
||||
ENDPOINT_GET_ALTCHA_CHALLENGE: ClassVar[str] = 'routes_core_contact.create_altcha_challenge'
|
||||
ENDPOINT_PAGE_ACCESSIBILITY_REPORT: ClassVar[str] = 'routes_legal.accessibility_report'
|
||||
ENDPOINT_PAGE_ACCESSIBILITY_STATEMENT: ClassVar[str] = 'routes_legal.accessibility_statement'
|
||||
@@ -162,6 +163,7 @@ class Model_View_Base(BaseModel, ABC):
|
||||
FLAG_TEMPORARY_ELEMENT: ClassVar[str] = 'temporary-element'
|
||||
FLAG_TESTIMONIAL: ClassVar[str] = 'testimonial'
|
||||
FLAG_USER: ClassVar[str] = User.FLAG_USER
|
||||
FLAG_VALUE: ClassVar[str] = Base.FLAG_VALUE
|
||||
# FLAG_VALUE_PROPOSITION: ClassVar[str] = 'value-proposition'
|
||||
FLAG_WEBSITE: ClassVar[str] = Base.FLAG_WEBSITE
|
||||
HASH_GET_ALTCHA_CHALLENGE: ClassVar[str] = '/altcha/create-challenge'
|
||||
@@ -222,6 +224,8 @@ class Model_View_Base(BaseModel, ABC):
|
||||
URL_REDDIT: ClassVar[str] = f'https://www.reddit.com/u/{USERNAME_REDDIT}/s/gZKEz2ZwHN'
|
||||
URL_TIKTOK: ClassVar[str] = f'https://www.tiktok.com/@{USERNAME_TIKTOK}'
|
||||
URL_TWITTER: ClassVar[str] = f'https://x.com/{USERNAME_TWITTER}'
|
||||
USER_ENTITY_TYPE_CODE: ClassVar[str] = 'user'
|
||||
USER_DECK_LINK_ENTITY_TYPE_CODE: ClassVar[str] = 'user_deck_link'
|
||||
|
||||
_title: str
|
||||
hash_page_current: str
|
||||
|
||||
@@ -12,11 +12,13 @@ Parent data model for MTG views
|
||||
|
||||
|
||||
# internal
|
||||
from business_objects.tcg.mtg_deck import MTG_Deck, Parameters_MTG_Deck
|
||||
from business_objects.tcg.mtg_deck_commander_bracket import MTG_Deck_Commander_Bracket
|
||||
from business_objects.tcg.mtg_game import MTG_Game, Parameters_MTG_Game
|
||||
from business_objects.tcg.mtg_game_player import MTG_Game_Player, Parameters_MTG_Game_Player
|
||||
from business_objects.tcg.mtg_game_round import MTG_Game_Round, Parameters_MTG_Game_Round
|
||||
from business_objects.tcg.mtg_game_round_player_damage import MTG_Game_Round_Player_Damage, Parameters_MTG_Game_Round_Player_Damage
|
||||
from business_objects.tcg.mtg_deck import MTG_Deck, Parameters_MTG_Deck
|
||||
from business_objects.tcg.statistic import Statistic
|
||||
from helpers.helper_app import Helper_App
|
||||
import lib.argument_validation as av
|
||||
from models.model_view_base import Model_View_Base
|
||||
@@ -29,32 +31,46 @@ from abc import abstractmethod
|
||||
|
||||
|
||||
class Model_View_MTG_Base(Model_View_Base):
|
||||
ATTR_COMMANDER_BRACKET_ID: ClassVar[str] = MTG_Deck_Commander_Bracket.ATTR_COMMANDER_BRACKET_ID
|
||||
ATTR_DAMAGE_ID: ClassVar[str] = MTG_Game_Round_Player_Damage.ATTR_DAMAGE_ID
|
||||
ATTR_DECK_ID: ClassVar[str] = MTG_Deck.ATTR_DECK_ID
|
||||
ATTR_ENTITY_RECORD_ID: ClassVar[str] = Statistic.ATTR_ENTITY_RECORD_ID
|
||||
ATTR_GAME_ID: ClassVar[str] = MTG_Game.ATTR_GAME_ID
|
||||
ATTR_PLAYER_ID: ClassVar[str] = MTG_Game_Player.ATTR_PLAYER_ID
|
||||
ATTR_ROUND_ID: ClassVar[str] = MTG_Game_Round.ATTR_ROUND_ID
|
||||
ATTR_DAMAGE_ID: ClassVar[str] = MTG_Game_Round_Player_Damage.ATTR_DAMAGE_ID
|
||||
ATTR_DECK_ID: ClassVar[str] = MTG_Deck.ATTR_DECK_ID
|
||||
FLAG_COMMANDER_DEATHS: ClassVar[str] = MTG_Game_Round_Player_Damage.FLAG_COMMANDER_DEATHS
|
||||
FLAG_DAMAGE: ClassVar[str] = MTG_Game_Round_Player_Damage.FLAG_DAMAGE
|
||||
FLAG_DECK: ClassVar[str] = MTG_Deck.FLAG_DECK
|
||||
FLAG_ENTITY_TYPE_CODE: ClassVar[str] = Statistic.FLAG_ENTITY_TYPE_CODE
|
||||
FLAG_GAME: ClassVar[str] = MTG_Game.FLAG_GAME
|
||||
FLAG_HEALTH_CHANGE: ClassVar[str] = MTG_Game_Round_Player_Damage.FLAG_HEALTH_CHANGE
|
||||
FLAG_IS_BOOL: ClassVar[str] = Statistic.FLAG_IS_BOOL
|
||||
FLAG_IS_FLOAT: ClassVar[str] = Statistic.FLAG_IS_FLOAT
|
||||
FLAG_IS_INTERVAL: ClassVar[str] = Statistic.FLAG_IS_INTERVAL
|
||||
FLAG_IS_TEXT: ClassVar[str] = Statistic.FLAG_IS_TEXT
|
||||
FLAG_IS_TIMESTAMP: ClassVar[str] = Statistic.FLAG_IS_TIMESTAMP
|
||||
FLAG_IS_COMMANDER: ClassVar[str] = MTG_Game.FLAG_IS_COMMANDER
|
||||
FLAG_IS_DRAFT: ClassVar[str] = MTG_Game.FLAG_IS_DRAFT
|
||||
FLAG_IS_SEALED: ClassVar[str] = MTG_Game.FLAG_IS_SEALED
|
||||
FLAG_LIFE_GAIN: ClassVar[str] = MTG_Game_Round_Player_Damage.FLAG_LIFE_GAIN
|
||||
FLAG_LIFE_LOSS: ClassVar[str] = MTG_Game_Round_Player_Damage.FLAG_LIFE_LOSS
|
||||
FLAG_LOCATION_NAME: ClassVar[str] = MTG_Game.FLAG_LOCATION_NAME
|
||||
FLAG_PLAYER: ClassVar[str] = MTG_Game_Player.FLAG_PLAYER
|
||||
FLAG_ROUND: ClassVar[str] = MTG_Game_Round.FLAG_ROUND
|
||||
FLAG_STARTING_LIFE: ClassVar[str] = MTG_Game.FLAG_STARTING_LIFE
|
||||
FLAG_VALUE_BOOL: ClassVar[str] = Statistic.FLAG_VALUE_BOOL
|
||||
FLAG_VALUE_FLOAT: ClassVar[str] = Statistic.FLAG_VALUE_FLOAT
|
||||
FLAG_VALUE_INTERVAL: ClassVar[str] = Statistic.FLAG_VALUE_INTERVAL
|
||||
FLAG_VALUE_TEXT: ClassVar[str] = Statistic.FLAG_VALUE_TEXT
|
||||
FLAG_VALUE_TIMESTAMP: ClassVar[str] = Statistic.FLAG_VALUE_TIMESTAMP
|
||||
HASH_GET_MTG_GAME_DAMAGE_RECORDS: ClassVar[str] = '/mtg/api/game/<game_id>/damage-records'
|
||||
HASH_GET_MTG_GAME_PLAYERS: ClassVar[str] = '/mtg/api/game/<game_id>/players'
|
||||
HASH_GET_MTG_GAME_ROUNDS: ClassVar[str] = '/mtg/api/game/<game_id>/rounds'
|
||||
HASH_GET_MTG_GAME_DAMAGE_RECORDS: ClassVar[str] = '/mtg/api/game/<game_id>/damage-records'
|
||||
HASH_SAVE_MTG_DECK: ClassVar[str] = '/mtg/save-deck'
|
||||
HASH_SAVE_MTG_GAME: ClassVar[str] = '/mtg/save-game'
|
||||
HASH_SAVE_MTG_GAME_PLAYER: ClassVar[str] = '/mtg/save-game-player'
|
||||
HASH_SAVE_MTG_GAME_ROUND: ClassVar[str] = '/mtg/save-game-round'
|
||||
HASH_SAVE_MTG_GAME_ROUND_PLAYER_DAMAGE: ClassVar[str] = '/mtg/save-game-round-player-damage'
|
||||
HASH_SAVE_MTG_DECK: ClassVar[str] = '/mtg/save-deck'
|
||||
|
||||
|
||||
is_page_mtg: bool = True
|
||||
|
||||
def __init__(self, hash_page_current, **kwargs):
|
||||
|
||||
85
models/model_view_mtg_decks.py
Normal file
85
models/model_view_mtg_decks.py
Normal file
@@ -0,0 +1,85 @@
|
||||
"""
|
||||
Project: PARTS Website
|
||||
Author: Edward Middleton-Smith
|
||||
Precision And Research Technology Systems Limited
|
||||
|
||||
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()
|
||||
parameters_deck.get_all_deck = True
|
||||
parameters_deck.require_all_id_filters_met = False
|
||||
parameters_deck.require_any_id_filters_met = False
|
||||
parameters_deck.require_all_non_id_filters_met = False
|
||||
parameters_deck.require_any_non_id_filters_met = False
|
||||
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()
|
||||
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()
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user