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: logging.debug("This record is verify now.", extra={"pk": bank_record.pk}) 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}'