Skip to content
Snippets Groups Projects
Commit 862496b1 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Set person on model save, move to signals

parent c778c9a4
No related branches found
No related tags found
1 merge request!17Update Invoice if person changes
Pipeline #60778 failed
...@@ -14,3 +14,7 @@ class DefaultConfig(AppConfig): ...@@ -14,3 +14,7 @@ class DefaultConfig(AppConfig):
([2022], "Dominik George", "dominik.george@teckids.org"), ([2022], "Dominik George", "dominik.george@teckids.org"),
([2022], "Tom Teichler", "tom.teichler@teckids.org"), ([2022], "Tom Teichler", "tom.teichler@teckids.org"),
) )
def ready(self):
from .signals import update_on_person_change
# Generated by Django 3.2.12 on 2022-03-20 19:29
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('tezor', '0007_client_payment_variants'),
]
operations = [
migrations.RemoveConstraint(
model_name='invoice',
name='object_or_person',
),
]
...@@ -141,13 +141,6 @@ class Invoice(BasePayment, PureDjangoModel): ...@@ -141,13 +141,6 @@ class Invoice(BasePayment, PureDjangoModel):
class Meta: class Meta:
constraints = [ constraints = [
models.UniqueConstraint(fields=["number", "group"], name="number_uniq_per_group"), models.UniqueConstraint(fields=["number", "group"], name="number_uniq_per_group"),
models.CheckConstraint(
check=(
(Q(for_object_id__isnull=True) & Q(person__isnull=False))
| (Q(for_object_id__isnull=False) & Q(person__isnull=True))
),
name="object_or_person",
),
] ]
permissions = (("send_invoice_email", _("Can send invoice by email")),) permissions = (("send_invoice_email", _("Can send invoice by email")),)
......
from django.db.models.signals import post_save
from django.dispatch import receiver
from aleksis.core.util.core_helpers import get_site_preferences
from aleksis.core.models import Person
from .models.invoice import Invoice
@receiver(post_save, sender=Person)
def update_on_person_change(sender, instance, **kwargs):
if Invoice.objects.filter(person=instance, status__in=("waiting", "input", "preauth")).exists() and get_site_preferences()["payments__update_on_person_change"]:
Invoice.objects.filter(person=instance, status__in=("waiting", "input", "preauth")).update(
billing_email=instance.email,
billing_first_name=instance.first_name,
billing_last_name=instance.last_name,
billing_address_1=f"{instance.street} {instance.housenumber}",
billing_postcode=instance.postal_code,
billing_city=instance.place,
)
else:
pass
...@@ -53,6 +53,7 @@ def provider_factory(variant, payment=None): ...@@ -53,6 +53,7 @@ def provider_factory(variant, payment=None):
@receiver(post_save, sender=Person) @receiver(post_save, sender=Person)
def update_on_person_change(sender, **kwargs): def update_on_person_change(sender, **kwargs):
print(f"!!! {sender}")
if Invoice.objects.filter(person=sender, status__in=("waiting", "input", "preauth")).exists() and get_site_preferences()["payments__update_on_person_change"]: if Invoice.objects.filter(person=sender, status__in=("waiting", "input", "preauth")).exists() and get_site_preferences()["payments__update_on_person_change"]:
Invoice.objects.filter(person=sender).update( Invoice.objects.filter(person=sender).update(
billing_email=person.email, billing_email=person.email,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment