Skip to content

Commit

Permalink
Fix bugs caused by ignoring the "raw" argument of signals
Browse files Browse the repository at this point in the history
  • Loading branch information
ldeluigi committed Aug 1, 2024
1 parent e644f6c commit c4f22d1
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 9 deletions.
4 changes: 2 additions & 2 deletions backend/spellbook/models/card.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,9 @@ def is_sorcery(self) -> bool:

@receiver(post_save, sender=Card, dispatch_uid='update_variant_fields')
def update_variant_fields(sender, instance, created, raw, **kwargs):
from .variant import Variant
if raw or created:
return
from .variant import Variant
variants = Variant.recipes_prefetched.filter(uses=instance)
variants_to_save = []
for variant in variants:
Expand All @@ -118,9 +118,9 @@ def update_variant_fields(sender, instance, created, raw, **kwargs):

@receiver(post_save, sender=Card, dispatch_uid='update_combo_fields')
def update_combo_fields(sender, instance, created, raw, **kwargs):
from .combo import Combo
if raw or created:
return
from .combo import Combo
combos = Combo.recipes_prefetched.filter(uses=instance)
combos_to_save = []
for combo in combos:
Expand Down
4 changes: 3 additions & 1 deletion backend/spellbook/models/combo.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ def recipe_changed(sender, instance: Recipe, action: str, reverse: bool, model:
@receiver([post_save, post_delete], sender=Combo.needs.through, dispatch_uid='combo_needs_changed')
@receiver([post_save, post_delete], sender=Combo.produces.through, dispatch_uid='combo_produces_changed')
@receiver([post_save, post_delete], sender=Combo.removes.through, dispatch_uid='combo_removes_changed')
def recipe_changed_2(sender, instance: CardInCombo | TemplateInCombo | FeatureNeededInCombo | FeatureProducedInCombo | FeatureRemovedInCombo, **kwargs) -> None:
def recipe_changed_2(sender, instance: CardInCombo | TemplateInCombo | FeatureNeededInCombo | FeatureProducedInCombo | FeatureRemovedInCombo, raw: bool, **kwargs) -> None:
if raw:
return
instance.combo.name = instance.combo._str()
instance.combo.save()
4 changes: 2 additions & 2 deletions backend/spellbook/models/feature.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ def __str__(self):

@receiver(post_save, sender=Feature, dispatch_uid='update_variant_fields')
def update_variant_fields(sender, instance, created, raw, **kwargs):
from .variant import Variant
if raw or created:
return
from .variant import Variant
variants = Variant.recipes_prefetched.filter(produces=instance)
variants_to_save = []
for variant in variants:
Expand All @@ -53,9 +53,9 @@ def update_variant_fields(sender, instance, created, raw, **kwargs):

@receiver(post_save, sender=Feature, dispatch_uid='update_combo_fields')
def update_combo_fields(sender, instance, created, raw, **kwargs):
from .combo import Combo
if raw or created:
return
from .combo import Combo
combos = Combo.objects.filter(models.Q(produces=instance) | models.Q(needs=instance))
combos_to_save = []
for combo in combos:
Expand Down
4 changes: 2 additions & 2 deletions backend/spellbook/models/recipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def compute_name(
def element(name: str, quantity: int) -> str:
return f'{quantity} {name}' if quantity > 1 else name
return recipe(
[element(card, q) for card, q in cards.items()] + [element(feature, q) for feature, q in features_needed.items()] + [element(template, q) for template, q in templates.items()],
[element(feature, q) for feature, q in features_produced.items()][:4]
ingredients=[element(card, q) for card, q in cards.items()] + [element(feature, q) for feature, q in features_needed.items()] + [element(template, q) for template, q in templates.items()],
results=[element(feature, q) for feature, q in features_produced.items()]
)

class Meta:
Expand Down
4 changes: 3 additions & 1 deletion backend/spellbook/models/variant.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,9 @@ class Meta:

@receiver(post_save, sender=Variant.uses.through, dispatch_uid='update_variant_on_cards')
@receiver(post_save, sender=Variant.requires.through, dispatch_uid='update_variant_on_templates')
def update_variant_on_ingredient(sender, instance: CardInVariant | TemplateInVariant, **kwargs):
def update_variant_on_ingredient(sender, instance: CardInVariant | TemplateInVariant, raw: bool, **kwargs):
if raw:
return
variant = instance.variant
requires_commander = any(civ.must_be_commander for civ in variant.cardinvariant_set.all()) \
or any(tiv.must_be_commander for tiv in variant.templateinvariant_set.all())
Expand Down
4 changes: 3 additions & 1 deletion backend/spellbook/models/variant_suggestion.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,9 @@ class Meta:
@receiver([post_save, post_delete], sender=CardUsedInVariantSuggestion, dispatch_uid='card_used_in_variant_suggestion_saved')
@receiver([post_save, post_delete], sender=TemplateRequiredInVariantSuggestion, dispatch_uid='template_required_in_variant_suggestion_saved')
@receiver([post_save, post_delete], sender=FeatureProducedInVariantSuggestion, dispatch_uid='feature_produced_in_variant_suggestion_saved')
def update_variant_suggestion_name(sender, instance, **kwargs):
def update_variant_suggestion_name(sender, instance, raw: bool, **kwargs):
if raw:
return
variant_suggestion = instance.variant
variant_suggestion.name = variant_suggestion._str()
variant_suggestion.save()

0 comments on commit c4f22d1

Please sign in to comment.