From da1b4223eae95cf9ab8ecedead85be98e516730a Mon Sep 17 00:00:00 2001 From: evilchili Date: Fri, 5 Jul 2024 17:45:27 -0700 Subject: [PATCH] rename ClassAttribute ClassFeature --- src/ttfrog/db/schema/character.py | 20 ++++++++++---------- src/ttfrog/db/schema/classes.py | 22 +++++++++++----------- test/conftest.py | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/ttfrog/db/schema/character.py b/src/ttfrog/db/schema/character.py index 4163e0c..257933f 100644 --- a/src/ttfrog/db/schema/character.py +++ b/src/ttfrog/db/schema/character.py @@ -5,7 +5,7 @@ from sqlalchemy.ext.associationproxy import association_proxy from sqlalchemy.orm import Mapped, mapped_column, relationship from ttfrog.db.base import BaseObject, SlugMixin -from ttfrog.db.schema.classes import CharacterClass, ClassAttribute +from ttfrog.db.schema.classes import CharacterClass, ClassFeature from ttfrog.db.schema.constants import Conditions, DamageType, Defenses from ttfrog.db.schema.modifiers import Modifier, ModifierMixin, Stat from ttfrog.db.schema.skill import Skill @@ -15,7 +15,7 @@ __all__ = [ "AncestryTrait", "AncestryTraitMap", "CharacterClassMap", - "CharacterClassAttributeMap", + "CharacterClassFeatureMap", "Character", "Modifier", ] @@ -34,9 +34,9 @@ def skill_creator(fields): def attr_map_creator(fields): - if isinstance(fields, CharacterClassAttributeMap): + if isinstance(fields, CharacterClassFeatureMap): return fields - return CharacterClassAttributeMap(**fields) + return CharacterClassFeatureMap(**fields) class HitDie(BaseObject): @@ -139,7 +139,7 @@ class CharacterClassMap(BaseObject): level: Mapped[int] = mapped_column(nullable=False, info={"min": 1, "max": 20}, default=1) -class CharacterClassAttributeMap(BaseObject): +class CharacterClassFeatureMap(BaseObject): __tablename__ = "character_class_attribute_map" __table_args__ = (UniqueConstraint("character_id", "class_attribute_id"),) id: Mapped[int] = mapped_column(init=False, primary_key=True, autoincrement=True) @@ -147,13 +147,13 @@ class CharacterClassAttributeMap(BaseObject): class_attribute_id: Mapped[int] = mapped_column(ForeignKey("class_attribute.id"), nullable=False) option_id: Mapped[int] = mapped_column(ForeignKey("class_attribute_option.id"), nullable=False) - class_attribute: Mapped["ClassAttribute"] = relationship(lazy="immediate") - option = relationship("ClassAttributeOption", lazy="immediate") + class_attribute: Mapped["ClassFeature"] = relationship(lazy="immediate") + option = relationship("ClassFeatureOption", lazy="immediate") character_class = relationship( "CharacterClass", secondary="class_map", - primaryjoin="CharacterClassAttributeMap.character_id == CharacterClassMap.character_id", + primaryjoin="CharacterClassFeatureMap.character_id == CharacterClassMap.character_id", secondaryjoin="CharacterClass.id == CharacterClassMap.character_class_id", viewonly=True, uselist=False, @@ -203,7 +203,7 @@ class Character(BaseObject, SlugMixin, ModifierMixin): _skills = relationship("CharacterSkillMap", uselist=True, cascade="all,delete,delete-orphan", lazy="immediate") skills = association_proxy("_skills", "skill", creator=skill_creator) - character_class_attribute_map = relationship("CharacterClassAttributeMap", cascade="all,delete,delete-orphan") + character_class_attribute_map = relationship("CharacterClassFeatureMap", cascade="all,delete,delete-orphan") attribute_list = association_proxy("character_class_attribute_map", "id", creator=attr_map_creator) ancestry_id: Mapped[int] = mapped_column(ForeignKey("ancestry.id"), nullable=False, default="1") @@ -399,7 +399,7 @@ class Character(BaseObject, SlugMixin, ModifierMixin): if attribute not in mapping.character_class.attributes_at_level(mapping.level): return False self.attribute_list.append( - CharacterClassAttributeMap( + CharacterClassFeatureMap( character_id=self.id, class_attribute_id=attribute.id, option_id=option.id, diff --git a/src/ttfrog/db/schema/classes.py b/src/ttfrog/db/schema/classes.py index 91d99b3..0ec9a6f 100644 --- a/src/ttfrog/db/schema/classes.py +++ b/src/ttfrog/db/schema/classes.py @@ -9,9 +9,9 @@ from ttfrog.db.base import BaseObject from ttfrog.db.schema.skill import Skill __all__ = [ - "ClassAttributeMap", - "ClassAttribute", - "ClassAttributeOption", + "ClassFeatureMap", + "ClassFeature", + "ClassFeatureOption", "CharacterClass", "Skill", "ClassSkillMap", @@ -36,22 +36,22 @@ class ClassSkillMap(BaseObject): skill = relationship("Skill", lazy="immediate") -class ClassAttributeMap(BaseObject): +class ClassFeatureMap(BaseObject): __tablename__ = "class_attribute_map" class_attribute_id: Mapped[int] = mapped_column(ForeignKey("class_attribute.id"), primary_key=True) character_class_id: Mapped[int] = mapped_column(ForeignKey("character_class.id"), primary_key=True) level: Mapped[int] = mapped_column(nullable=False, info={"min": 1, "max": 20}, default=1) - attribute = relationship("ClassAttribute", uselist=False, viewonly=True, lazy="immediate") + attribute = relationship("ClassFeature", uselist=False, viewonly=True, lazy="immediate") -class ClassAttribute(BaseObject): +class ClassFeature(BaseObject): __tablename__ = "class_attribute" id: Mapped[int] = mapped_column(init=False, primary_key=True, autoincrement=True) name: Mapped[str] = mapped_column(nullable=False) - options = relationship("ClassAttributeOption", cascade="all,delete,delete-orphan", lazy="immediate") + options = relationship("ClassFeatureOption", cascade="all,delete,delete-orphan", lazy="immediate") def add_option(self, **kwargs): - option = ClassAttributeOption(attribute_id=self.id, **kwargs) + option = ClassFeatureOption(attribute_id=self.id, **kwargs) if not self.options or option not in self.options: option.attribute_id = self.id if not self.options: @@ -65,7 +65,7 @@ class ClassAttribute(BaseObject): return f"{self.id}: {self.name}" -class ClassAttributeOption(BaseObject): +class ClassFeatureOption(BaseObject): __tablename__ = "class_attribute_option" id: Mapped[int] = mapped_column(init=False, primary_key=True, autoincrement=True) name: Mapped[str] = mapped_column(nullable=False) @@ -80,7 +80,7 @@ class CharacterClass(BaseObject): hit_die_stat_name: Mapped[str] = mapped_column(default="") starting_skills: int = mapped_column(nullable=False, default=0) - attributes = relationship("ClassAttributeMap", cascade="all,delete,delete-orphan", lazy="immediate") + attributes = relationship("ClassFeatureMap", cascade="all,delete,delete-orphan", lazy="immediate") _skills = relationship("ClassSkillMap", cascade="all,delete,delete-orphan", lazy="immediate") skills = association_proxy("_skills", "skill", creator=skill_creator) @@ -96,7 +96,7 @@ class CharacterClass(BaseObject): def add_attribute(self, attribute, level=1): if not self.attributes or attribute not in self.attributes: - mapping = ClassAttributeMap(character_class_id=self.id, class_attribute_id=attribute.id, level=level) + mapping = ClassFeatureMap(character_class_id=self.id, class_attribute_id=attribute.id, level=level) if not self.attributes: self.attributes = [mapping] else: diff --git a/test/conftest.py b/test/conftest.py index ef4bf08..2b33b13 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -73,7 +73,7 @@ def bootstrap(db): db.add_or_update([acrobatics, athletics]) # classes - fighting_style = schema.ClassAttribute("Fighting Style") + fighting_style = schema.ClassFeature("Fighting Style") fighting_style.add_option(name="Archery") fighting_style.add_option(name="Defense") db.add_or_update(fighting_style)