From c8d755770fb0d2fb47f6e8c2a0a6a21ec9bc0588 Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Sat, 5 Nov 2022 21:47:11 +0100 Subject: [PATCH] Allow PreferenceScore.adapt_score to apply only flat --- server/entertainment_decider/models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server/entertainment_decider/models.py b/server/entertainment_decider/models.py index fea4013..cecd411 100644 --- a/server/entertainment_decider/models.py +++ b/server/entertainment_decider/models.py @@ -245,6 +245,14 @@ class Tagable: used |= new_tags return used + def share_score_flat(self, score: float) -> PreferenceScoreAppender: + direct_tags = [tag for tag in self.direct_tags if tag.use_for_preferences] + if len(direct_tags) <= 0: + return PreferenceScoreAppender() + return PreferenceScoreAppender( + PreferenceScore({tag: score / len(direct_tags) for tag in direct_tags}) + ) + T_tagged = TypeVar("T_tagged", bound=Tagable) @@ -271,9 +279,12 @@ class PreferenceScore: self, tagable: Tagable, score: float, + on_hierachy: bool = True, ) -> PreferenceScore: addition = ( tagable.tag_hierachy.share_score(score) + if on_hierachy + else tagable.share_score_flat(score) ) return (self & addition).calculate()