Removes unnecessary FK from Rules __init__
The FK are correctly initialized when the rules are created as part of the base category/tag. Also removes the name from the CategorySchedule, same logic applies.
This commit is contained in:
parent
729e15d4e8
commit
42d84b02f4
@ -263,7 +263,6 @@ class Category(Base, Serializable, repr=False):
|
||||
for rule in self.rules:
|
||||
rules.append(
|
||||
{
|
||||
"name": rule.name,
|
||||
"start": rule.start,
|
||||
"end": rule.end,
|
||||
"description": rule.description,
|
||||
@ -277,7 +276,6 @@ class Category(Base, Serializable, repr=False):
|
||||
schedule = None
|
||||
if self.schedule:
|
||||
schedule = {
|
||||
"name": self.schedule.name,
|
||||
"period": self.schedule.period.name if self.schedule.period else None,
|
||||
"period_multiplier": self.schedule.period_multiplier,
|
||||
"amount": self.schedule.amount,
|
||||
@ -367,7 +365,6 @@ class Tag(Base, Serializable):
|
||||
for rule in self.rules:
|
||||
rules.append(
|
||||
{
|
||||
"name": rule.tag,
|
||||
"start": rule.start,
|
||||
"end": rule.end,
|
||||
"description": rule.description,
|
||||
@ -405,7 +402,7 @@ class SchedulePeriod(enum.Enum):
|
||||
class CategorySchedule(Base):
|
||||
__tablename__ = "category_schedules"
|
||||
|
||||
name: Mapped[catfk] = mapped_column(primary_key=True)
|
||||
name: Mapped[catfk] = mapped_column(primary_key=True, init=False)
|
||||
period: Mapped[Optional[SchedulePeriod]]
|
||||
period_multiplier: Mapped[Optional[int]]
|
||||
amount: Mapped[Optional[int]]
|
||||
@ -418,17 +415,17 @@ class Link(Base):
|
||||
link: Mapped[idfk] = mapped_column(primary_key=True)
|
||||
|
||||
|
||||
class Rule(Base, init=False):
|
||||
class Rule(Base):
|
||||
__tablename__ = "rules"
|
||||
|
||||
id: Mapped[idpk] = mapped_column(init=False)
|
||||
start: Mapped[Optional[dt.date]]
|
||||
end: Mapped[Optional[dt.date]]
|
||||
description: Mapped[Optional[str]]
|
||||
regex: Mapped[Optional[str]]
|
||||
bank: Mapped[Optional[str]]
|
||||
min: Mapped[Optional[money]]
|
||||
max: Mapped[Optional[money]]
|
||||
start: Mapped[Optional[dt.date]] = mapped_column(default=None)
|
||||
end: Mapped[Optional[dt.date]] = mapped_column(default=None)
|
||||
description: Mapped[Optional[str]] = mapped_column(default=None)
|
||||
regex: Mapped[Optional[str]] = mapped_column(default=None)
|
||||
bank: Mapped[Optional[str]] = mapped_column(default=None)
|
||||
min: Mapped[Optional[money]] = mapped_column(default=None)
|
||||
max: Mapped[Optional[money]] = mapped_column(default=None)
|
||||
|
||||
type: Mapped[str] = mapped_column(init=False)
|
||||
|
||||
@ -437,10 +434,6 @@ class Rule(Base, init=False):
|
||||
"polymorphic_on": "type",
|
||||
}
|
||||
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
for k, v in kwargs.items():
|
||||
setattr(self, k, v)
|
||||
|
||||
def matches(self, t: BankTransaction) -> bool:
|
||||
valid = None
|
||||
if self.regex:
|
||||
@ -478,16 +471,12 @@ class CategoryRule(Rule):
|
||||
primary_key=True,
|
||||
init=False,
|
||||
)
|
||||
name: Mapped[catfk]
|
||||
name: Mapped[catfk] = mapped_column(init=False)
|
||||
|
||||
__mapper_args__ = {
|
||||
"polymorphic_identity": "category_rule",
|
||||
}
|
||||
|
||||
def __init__(self, name: str, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.name = name
|
||||
|
||||
|
||||
class TagRule(Rule):
|
||||
__tablename__ = "tag_rules"
|
||||
@ -498,12 +487,10 @@ class TagRule(Rule):
|
||||
primary_key=True,
|
||||
init=False,
|
||||
)
|
||||
tag: Mapped[str] = mapped_column(ForeignKey(Tag.name, ondelete="CASCADE"))
|
||||
tag: Mapped[str] = mapped_column(
|
||||
ForeignKey(Tag.name, ondelete="CASCADE"), init=False
|
||||
)
|
||||
|
||||
__mapper_args__ = {
|
||||
"polymorphic_identity": "tag_rule",
|
||||
}
|
||||
|
||||
def __init__(self, name: str, **kwargs: Any) -> None:
|
||||
super().__init__(**kwargs)
|
||||
self.tag = name
|
||||
|
||||
@ -9,13 +9,13 @@ categorygroup1 = CategoryGroup("group#1")
|
||||
category1 = Category(
|
||||
"cat#1",
|
||||
"group#1",
|
||||
rules=[CategoryRule("cat#1", description="desc#1", max=Decimal(0))],
|
||||
rules=[CategoryRule(description="desc#1", max=Decimal(0))],
|
||||
)
|
||||
|
||||
category2 = Category(
|
||||
"cat#2",
|
||||
"group#1",
|
||||
rules=[CategoryRule("cat#1", description="desc#1", max=Decimal(0))],
|
||||
rules=[CategoryRule(description="desc#1", max=Decimal(0))],
|
||||
)
|
||||
|
||||
tag_1 = Tag("tag#1", rules=[TagRule("tag#1", description="desc#1", max=Decimal(0))])
|
||||
tag_1 = Tag("tag#1", rules=[TagRule(description="desc#1", max=Decimal(0))])
|
||||
|
||||
@ -56,7 +56,9 @@ class TestTransform:
|
||||
for t in transactions:
|
||||
assert not t.category
|
||||
|
||||
rules = [CategoryRule("null", bank="Bank#1")]
|
||||
rule = CategoryRule(bank="Bank#1")
|
||||
rule.name = "null"
|
||||
rules = [rule]
|
||||
|
||||
categorizer: Transformer = Nullifier(rules)
|
||||
transactions = categorizer.transform(transactions)
|
||||
@ -64,7 +66,9 @@ class TestTransform:
|
||||
for t in transactions:
|
||||
assert not t.category
|
||||
|
||||
rules.append(CategoryRule("null", bank="Bank#2"))
|
||||
rule = CategoryRule(bank="Bank#2")
|
||||
rule.name = "null"
|
||||
rules.append(rule)
|
||||
categorizer = Nullifier(rules)
|
||||
transactions = categorizer.transform(transactions)
|
||||
|
||||
@ -79,7 +83,11 @@ class TestTransform:
|
||||
for t in transactions:
|
||||
assert not t.category
|
||||
|
||||
categorizer: Transformer = Tagger(mock.tag_1.rules)
|
||||
rules = mock.tag_1.rules
|
||||
for rule in rules:
|
||||
rule.tag = mock.tag_1.name
|
||||
|
||||
categorizer: Transformer = Tagger(rules)
|
||||
transactions = categorizer.transform(transactions)
|
||||
|
||||
for t in transactions:
|
||||
@ -93,7 +101,11 @@ class TestTransform:
|
||||
for t in transactions:
|
||||
assert not t.category
|
||||
|
||||
categorizer: Transformer = Categorizer(mock.category1.rules)
|
||||
rules = mock.category1.rules
|
||||
for rule in rules:
|
||||
rule.name = mock.category1.name
|
||||
|
||||
categorizer: Transformer = Categorizer(rules)
|
||||
transactions = categorizer.transform(transactions)
|
||||
|
||||
for t in transactions:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user