Refactored the Zasilkovna SOAP client to use a singleton pattern with caching and lazy loading, improving reliability and startup performance. Updated invoice PDF generation to import WeasyPrint lazily, preventing startup failures on systems missing dependencies. Cleaned up unused imports and code in several frontend components, removed unused state and variables, and adjusted Docker frontend port mapping. Also updated Django migration files to reflect a new generation timestamp.
150 lines
4.2 KiB
Python
150 lines
4.2 KiB
Python
from account.tasks import send_email_with_context
|
|
from celery import shared_task
|
|
|
|
from django.apps import apps
|
|
from django.utils import timezone
|
|
|
|
|
|
# -- CLEANUP TASKS --
|
|
|
|
# Delete expired/cancelled orders (older than 24 hours)
|
|
@shared_task
|
|
def delete_expired_orders():
|
|
Order = apps.get_model('commerce', 'Order')
|
|
|
|
expired_orders = Order.objects.filter(status=Order.STATUS_CHOICES.CANCELLED, created_at__lt=timezone.now() - timezone.timedelta(hours=24))
|
|
count = expired_orders.count()
|
|
expired_orders.delete()
|
|
return count
|
|
|
|
|
|
# -- NOTIFICATIONS CARRIER --
|
|
|
|
# Zásilkovna
|
|
@shared_task
|
|
def notify_zasilkovna_sended(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_order_sended:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Your order has been shipped",
|
|
template_name="emails/order_sended.txt",
|
|
html_template_name="emails/order_sended.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
# Shop
|
|
@shared_task
|
|
def notify_Ready_to_pickup(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_order_sended:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Your order has been shipped",
|
|
template_name="emails/order_sended.txt",
|
|
html_template_name="emails/order_sended.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
# -- NOTIFICATIONS ORDER --
|
|
|
|
@shared_task
|
|
def notify_order_successfuly_created(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_order_successfuly_created:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Your order has been successfully created",
|
|
template_name="emails/order_created.txt",
|
|
html_template_name="emails/order_created.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
@shared_task
|
|
def notify_about_missing_payment(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_about_missing_payment:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Payment missing for your order",
|
|
template_name="emails/order_missing_payment.txt",
|
|
html_template_name="emails/order_missing_payment.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
def notify_refund_items_arrived(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_refund_items_arrived:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Your refund items have arrived",
|
|
template_name="emails/order_refund_items_arrived.txt",
|
|
html_template_name="emails/order_refund_items_arrived.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
# Refund accepted, retuning money
|
|
@shared_task
|
|
def notify_refund_accepted(order = None, user = None, **kwargs):
|
|
if not order or not user:
|
|
raise ValueError("Order and User must be provided for notification.")
|
|
|
|
if kwargs:
|
|
print("Additional kwargs received in notify_refund_accepted:", kwargs)
|
|
|
|
send_email_with_context(
|
|
user.email,
|
|
subject="Your refund has been accepted",
|
|
template_name="emails/order_refund_accepted.txt",
|
|
html_template_name="emails/order_refund_accepted.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass |