Size: a a a

Django [ru] #STAY HOME

2020 April 23

AM

Arnak Melikyan in Django [ru] #STAY HOME
@receiver(post_save, sender=CustomerTransaction)
def replenish_account(sender, instance, **kwargs):
   if instance.processed == '1':
       owner = instance.customer
       owner.balance += instance.amount
       owner.threshold_notice = False
       owner.critical_notice = False
       if owner.email_verified and owner.billing_notification:
           owner.send_payment_success_email(instance)
       owner.save()
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
Антон
сигналы инициализировал в apps.py?
сигнал работает точно
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
Arnak Melikyan
@periodic_task(ignore_result=True, run_every=(crontab(minute='*/1')))
def _async_check_order_status():
   transaction_status = {"PAID": '1', "REJECTED": '2', "EXPIRED": '3', "CANCELLED": '4', "CANCELLED FOR REPEAT": '5'}
   checks = CustomerTransaction.objects.all().filter(source=1, processed=0)
   if len(checks) > 0:
       m = MerchantData.objects.filter(source=1).get()
       api = MerchantApi(m.merchant_password, m.merchant_login, m.merchant_endpoint)
       for check in checks:
           data = api.check_order_state(check.ext_id, check.id)
           response = json.loads(data)
           if response['status'] == 'NEW':
               pass
           else:
               status = response['status']
               logger.info(response)
               check.processed = transaction_status[status]
               check.save()
check.processed = 1
check.save()

точно сохраняется как надо
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
Arnak Melikyan
@receiver(post_save, sender=CustomerTransaction)
def replenish_account(sender, instance, **kwargs):
   if instance.processed == '1':
       owner = instance.customer
       owner.balance += instance.amount
       owner.threshold_notice = False
       owner.critical_notice = False
       if owner.email_verified and owner.billing_notification:
           owner.send_payment_success_email(instance)
       owner.save()
тут уже должен сработать
if instance.processed == '1'
а нет, не хочет зараза
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
Rust Saiargaliev
Показывай код таски и сигнала, конечно
есть идеи?
источник

A

Andrey in Django [ru] #STAY HOME
1 == "1"?
источник

K

K in Django [ru] #STAY HOME
Andrey
1 == "1"?
+
Чаще всего банальное несоответствие типов )
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
неет, с типами проблем нет точно
источник

А

Антон in Django [ru] #STAY HOME
Поставь перед if  принт или логгер в сигнале со значением и типом instance,
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
str(transaction_status[status])
источник

AM

Arnak Melikyan in Django [ru] #STAY HOME
всем спс, все же тип
источник

R

RAEman in Django [ru] #STAY HOME
Дурацкий вопрос на засыпку: возможно ли обернуть джанговский сервак (вместе в венвом) в экзешник? Просто кейс появился на серваке запустить адаптер, а он без питона и чтобы его поставить нужно заморочиться с сибами
источник

R

RAEman in Django [ru] #STAY HOME
И как он тогда с базой/файлами настроек будет работать...
источник

ЯК

Ярослав Коробейников in Django [ru] #STAY HOME
Ребят, очень ТУПАЯ ситуация, в базе у записи отдельно числом хранится ГОД и МЕСЯЦ, и это вызывает вечные проблемы при запросах с выборкой дат.
потому что допустим найти записи где (ГОД >= 2019 И МЕСЯЦ >= 12) И (ГОД <=2020 И МЕСЯЦ <=1) Тут будет хрень (потому что это всё просто числа в базе).
Не получиться найти 12.2019 и 01.2020 (mm.dddd) и прочие тупые сложности.

Вот  есть ли вариант на стадии запроса сконвертировать эти числа в дату? допустим сдеать из них 01.12.2019 и 01.01.2020? (День всегда 1 первый потому что мне по сути важно найти месяцы) И Уже по этим агрегированным полям искать значения?
источник

VT

Vadim Tepes in Django [ru] #STAY HOME
Ярослав Коробейников
Ребят, очень ТУПАЯ ситуация, в базе у записи отдельно числом хранится ГОД и МЕСЯЦ, и это вызывает вечные проблемы при запросах с выборкой дат.
потому что допустим найти записи где (ГОД >= 2019 И МЕСЯЦ >= 12) И (ГОД <=2020 И МЕСЯЦ <=1) Тут будет хрень (потому что это всё просто числа в базе).
Не получиться найти 12.2019 и 01.2020 (mm.dddd) и прочие тупые сложности.

Вот  есть ли вариант на стадии запроса сконвертировать эти числа в дату? допустим сдеать из них 01.12.2019 и 01.01.2020? (День всегда 1 первый потому что мне по сути важно найти месяцы) И Уже по этим агрегированным полям искать значения?
Что мешает DateField изначально использовать, вместо двух полей?
источник

R

RAEman in Django [ru] #STAY HOME
Ярослав Коробейников
Ребят, очень ТУПАЯ ситуация, в базе у записи отдельно числом хранится ГОД и МЕСЯЦ, и это вызывает вечные проблемы при запросах с выборкой дат.
потому что допустим найти записи где (ГОД >= 2019 И МЕСЯЦ >= 12) И (ГОД <=2020 И МЕСЯЦ <=1) Тут будет хрень (потому что это всё просто числа в базе).
Не получиться найти 12.2019 и 01.2020 (mm.dddd) и прочие тупые сложности.

Вот  есть ли вариант на стадии запроса сконвертировать эти числа в дату? допустим сдеать из них 01.12.2019 и 01.01.2020? (День всегда 1 первый потому что мне по сути важно найти месяцы) И Уже по этим агрегированным полям искать значения?
Если это обычный sql запрос, то сделай на уровне базы функцию которая принимает эти три параметра и отдает дату и уже при селекте в условия ставь эту функцию
источник

R

RAEman in Django [ru] #STAY HOME
Vadim Tepes
Что мешает DateField изначально использовать, вместо двух полей?
разрабы вестимо
источник

ЯК

Ярослав Коробейников in Django [ru] #STAY HOME
Vadim Tepes
Что мешает DateField изначально использовать, вместо двух полей?
Я ж говорю что ситуация ТУПАЯ, код легаси, и там эта хрень давно, что мешает ответить на вопрос, а не задавать сверху?
источник

ЯК

Ярослав Коробейников in Django [ru] #STAY HOME
RAEman
Если это обычный sql запрос, то сделай на уровне базы функцию которая принимает эти три параметра и отдает дату и уже при селекте в условия ставь эту функцию
Я бы с сделал это на уровне базы без проблем, но мне в контексте Django ORM это нужно сделать
источник

ЯК

Ярослав Коробейников in Django [ru] #STAY HOME
RAEman
разрабы вестимо
👍👌 В точку
источник