Files
hossein-por-shop/backend/order/tasks.py
T
2025-09-23 11:25:20 +03:30

61 lines
2.1 KiB
Python

import logging
from azbankgateways import (
bankfactories,
models as bank_models,
default_settings as settings,
)
from .models import OrderModel
from account.models import PushSubscription
import ghasedak_sms
from celery import shared_task
@shared_task
def udpate_bank_status():
factory = bankfactories.BankFactory()
bank_models.Bank.objects.update_expire_records()
for item in bank_models.Bank.objects.filter_return_from_bank():
bank = factory.create(
bank_type=item.bank_type, identifier=item.bank_choose_identifier
)
bank.verify(item.tracking_code)
bank_record = bank_models.Bank.objects.get(tracking_code=item.tracking_code)
if bank_record.is_success:
bank_record.order.cart.clear_cart()
logging.debug("This record is verify now.", extra={"pk": bank_record.pk})
else:
order = bank_record.order
order.rollback_stock()
return 'update bank record is done'
@shared_task
def send_change_status_notif(instance_pk, new_status):
instance = OrderModel.objects.get(pk=instance_pk)
user_subs = PushSubscription.objects.filter(user=instance.user)
for user_sub in user_subs:
try:
user_sub.send_notif(f'سفارش شما به {new_status} تغییر کرد', f'سفارش شما به {new_status} تغییر کرد', ProductImageModel.objects.all().first().image.url)
except:
print('log later send notif error')
@shared_task
def send_change_status_sms(instance_pk, new_status):
instance = OrderModel.objects.get(pk=instance_pk)
sms_api = ghasedak_sms.Ghasedak(api_key="1227eaaddcba72bcb0169b37032cf16ae9ac6ed8b3b7c2768b74e2ee351d1b52gyRe3AGomZRPTNEd")
response = sms_api.send_single_sms(
ghasedak_sms.SendSingleSmsInput(
message=f'سفارش شما به {new_status} تغییر کرد',
receptor=instance.user.phone,
line_number='30005006004095',
client_reference_id=str(instance.user.pk)
)
)
if response['statusCode'] == 200:
return 'done log later'
else:
return f'error: {response}'