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:
|
for rule in self.rules:
|
||||||
rules.append(
|
rules.append(
|
||||||
{
|
{
|
||||||
"name": rule.name,
|
|
||||||
"start": rule.start,
|
"start": rule.start,
|
||||||
"end": rule.end,
|
"end": rule.end,
|
||||||
"description": rule.description,
|
"description": rule.description,
|
||||||
@ -277,7 +276,6 @@ class Category(Base, Serializable, repr=False):
|
|||||||
schedule = None
|
schedule = None
|
||||||
if self.schedule:
|
if self.schedule:
|
||||||
schedule = {
|
schedule = {
|
||||||
"name": self.schedule.name,
|
|
||||||
"period": self.schedule.period.name if self.schedule.period else None,
|
"period": self.schedule.period.name if self.schedule.period else None,
|
||||||
"period_multiplier": self.schedule.period_multiplier,
|
"period_multiplier": self.schedule.period_multiplier,
|
||||||
"amount": self.schedule.amount,
|
"amount": self.schedule.amount,
|
||||||
@ -367,7 +365,6 @@ class Tag(Base, Serializable):
|
|||||||
for rule in self.rules:
|
for rule in self.rules:
|
||||||
rules.append(
|
rules.append(
|
||||||
{
|
{
|
||||||
"name": rule.tag,
|
|
||||||
"start": rule.start,
|
"start": rule.start,
|
||||||
"end": rule.end,
|
"end": rule.end,
|
||||||
"description": rule.description,
|
"description": rule.description,
|
||||||
@ -405,7 +402,7 @@ class SchedulePeriod(enum.Enum):
|
|||||||
class CategorySchedule(Base):
|
class CategorySchedule(Base):
|
||||||
__tablename__ = "category_schedules"
|
__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: Mapped[Optional[SchedulePeriod]]
|
||||||
period_multiplier: Mapped[Optional[int]]
|
period_multiplier: Mapped[Optional[int]]
|
||||||
amount: Mapped[Optional[int]]
|
amount: Mapped[Optional[int]]
|
||||||
@ -418,17 +415,17 @@ class Link(Base):
|
|||||||
link: Mapped[idfk] = mapped_column(primary_key=True)
|
link: Mapped[idfk] = mapped_column(primary_key=True)
|
||||||
|
|
||||||
|
|
||||||
class Rule(Base, init=False):
|
class Rule(Base):
|
||||||
__tablename__ = "rules"
|
__tablename__ = "rules"
|
||||||
|
|
||||||
id: Mapped[idpk] = mapped_column(init=False)
|
id: Mapped[idpk] = mapped_column(init=False)
|
||||||
start: Mapped[Optional[dt.date]]
|
start: Mapped[Optional[dt.date]] = mapped_column(default=None)
|
||||||
end: Mapped[Optional[dt.date]]
|
end: Mapped[Optional[dt.date]] = mapped_column(default=None)
|
||||||
description: Mapped[Optional[str]]
|
description: Mapped[Optional[str]] = mapped_column(default=None)
|
||||||
regex: Mapped[Optional[str]]
|
regex: Mapped[Optional[str]] = mapped_column(default=None)
|
||||||
bank: Mapped[Optional[str]]
|
bank: Mapped[Optional[str]] = mapped_column(default=None)
|
||||||
min: Mapped[Optional[money]]
|
min: Mapped[Optional[money]] = mapped_column(default=None)
|
||||||
max: Mapped[Optional[money]]
|
max: Mapped[Optional[money]] = mapped_column(default=None)
|
||||||
|
|
||||||
type: Mapped[str] = mapped_column(init=False)
|
type: Mapped[str] = mapped_column(init=False)
|
||||||
|
|
||||||
@ -437,10 +434,6 @@ class Rule(Base, init=False):
|
|||||||
"polymorphic_on": "type",
|
"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:
|
def matches(self, t: BankTransaction) -> bool:
|
||||||
valid = None
|
valid = None
|
||||||
if self.regex:
|
if self.regex:
|
||||||
@ -478,16 +471,12 @@ class CategoryRule(Rule):
|
|||||||
primary_key=True,
|
primary_key=True,
|
||||||
init=False,
|
init=False,
|
||||||
)
|
)
|
||||||
name: Mapped[catfk]
|
name: Mapped[catfk] = mapped_column(init=False)
|
||||||
|
|
||||||
__mapper_args__ = {
|
__mapper_args__ = {
|
||||||
"polymorphic_identity": "category_rule",
|
"polymorphic_identity": "category_rule",
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, name: str, **kwargs: Any) -> None:
|
|
||||||
super().__init__(**kwargs)
|
|
||||||
self.name = name
|
|
||||||
|
|
||||||
|
|
||||||
class TagRule(Rule):
|
class TagRule(Rule):
|
||||||
__tablename__ = "tag_rules"
|
__tablename__ = "tag_rules"
|
||||||
@ -498,12 +487,10 @@ class TagRule(Rule):
|
|||||||
primary_key=True,
|
primary_key=True,
|
||||||
init=False,
|
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__ = {
|
__mapper_args__ = {
|
||||||
"polymorphic_identity": "tag_rule",
|
"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(
|
category1 = Category(
|
||||||
"cat#1",
|
"cat#1",
|
||||||
"group#1",
|
"group#1",
|
||||||
rules=[CategoryRule("cat#1", description="desc#1", max=Decimal(0))],
|
rules=[CategoryRule(description="desc#1", max=Decimal(0))],
|
||||||
)
|
)
|
||||||
|
|
||||||
category2 = Category(
|
category2 = Category(
|
||||||
"cat#2",
|
"cat#2",
|
||||||
"group#1",
|
"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:
|
for t in transactions:
|
||||||
assert not t.category
|
assert not t.category
|
||||||
|
|
||||||
rules = [CategoryRule("null", bank="Bank#1")]
|
rule = CategoryRule(bank="Bank#1")
|
||||||
|
rule.name = "null"
|
||||||
|
rules = [rule]
|
||||||
|
|
||||||
categorizer: Transformer = Nullifier(rules)
|
categorizer: Transformer = Nullifier(rules)
|
||||||
transactions = categorizer.transform(transactions)
|
transactions = categorizer.transform(transactions)
|
||||||
@ -64,7 +66,9 @@ class TestTransform:
|
|||||||
for t in transactions:
|
for t in transactions:
|
||||||
assert not t.category
|
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)
|
categorizer = Nullifier(rules)
|
||||||
transactions = categorizer.transform(transactions)
|
transactions = categorizer.transform(transactions)
|
||||||
|
|
||||||
@ -79,7 +83,11 @@ class TestTransform:
|
|||||||
for t in transactions:
|
for t in transactions:
|
||||||
assert not t.category
|
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)
|
transactions = categorizer.transform(transactions)
|
||||||
|
|
||||||
for t in transactions:
|
for t in transactions:
|
||||||
@ -93,7 +101,11 @@ class TestTransform:
|
|||||||
for t in transactions:
|
for t in transactions:
|
||||||
assert not t.category
|
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)
|
transactions = categorizer.transform(transactions)
|
||||||
|
|
||||||
for t in transactions:
|
for t in transactions:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user