Refactored commerce models to remove language prefixes from status choices, improved order and payment validation, and enforced business rules for payment and shipping combinations. Updated order item and cart calculations to use VAT-inclusive prices, added unique constraints and indexes to reviews, and improved stock management logic. Added new Stripe client methods for session and refund management, and updated Zasilkovna and Deutsche Post models for consistency. Minor fixes and improvements across related tasks, URLs, and configuration models.
168 lines
4.5 KiB
Python
168 lines
4.5 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.OrderStatus.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(
|
|
recipients=user.email,
|
|
subject="Your order has been shipped",
|
|
template_path="email/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(
|
|
recipients=user.email,
|
|
subject="Your order is ready for pickup",
|
|
template_path="email/order_ready_pickup.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(
|
|
recipients=user.email,
|
|
subject="Your order has been successfully created",
|
|
template_path="email/order_created.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
@shared_task
|
|
def notify_order_payed(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_paid:", kwargs)
|
|
|
|
send_email_with_context(
|
|
recipients=user.email,
|
|
subject="Your order has been paid",
|
|
template_path="email/order_paid.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(
|
|
recipients=user.email,
|
|
subject="Payment missing for your order",
|
|
template_path="email/order_missing_payment.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
# -- NOTIFICATIONS REFUND --
|
|
|
|
@shared_task
|
|
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(
|
|
recipients=user.email,
|
|
subject="Your refund items have arrived",
|
|
template_path="email/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(
|
|
recipients=user.email,
|
|
subject="Your refund has been accepted",
|
|
template_path="email/order_refund_accepted.html",
|
|
context={
|
|
"user": user,
|
|
"order": order,
|
|
})
|
|
|
|
pass
|
|
|
|
|
|
# |