Fixes: 1) Avoid unused variable warning in `update_products_task` by removing exception variable `vie`; 2) Add missing imports for `logging` and `traceback` in `payments/signals.py`; Extra: 1) Minor formatting fix in `dbbackup.py` to consolidate FTP URL string construction; 2) Remove unnecessary newline in `core/vendors/__init__.py`.
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
import logging
|
|
import traceback
|
|
|
|
from django.db.models.signals import post_save
|
|
from django.dispatch import receiver
|
|
|
|
from payments.gateways import AbstractGateway
|
|
from payments.models import Balance, Transaction
|
|
from payments.utils.emailing import balance_deposit_email
|
|
from vibes_auth.models import User
|
|
|
|
logger = logging.getLogger("django")
|
|
|
|
|
|
@receiver(post_save, sender=User)
|
|
def create_balance_on_user_creation_signal(instance, created, **_kwargs):
|
|
if created:
|
|
Balance.objects.create(user=instance)
|
|
|
|
|
|
@receiver(post_save, sender=Transaction)
|
|
def process_transaction_changes(instance, created, **_kwargs):
|
|
if created:
|
|
try:
|
|
match instance.process.get("gateway", "default"):
|
|
case "gateway":
|
|
gateway = AbstractGateway()
|
|
case "default":
|
|
gateway = AbstractGateway()
|
|
case _:
|
|
gateway = AbstractGateway()
|
|
gateway.process_transaction(instance)
|
|
except Exception as e:
|
|
instance.process = {"status": "ERRORED", "error": str(e)}
|
|
logger.error(f"Error processing transaction {instance.uuid}: {e}\n{traceback.format_exc()}")
|
|
if not created:
|
|
status = str(instance.process.get("status", "")).lower()
|
|
success = instance.process.get("success", False)
|
|
|
|
if ("success" in status or success) and (instance.process.get("notify", False)):
|
|
balance_deposit_email.delay(instance.uuid)
|