• Как связать сделку и товар в AmoCRM через Api?

    @s7fkcu
    Привет! Подскажи плиз, при создании "сделки", могу ли я привязать товар?
  • Django-filters, почему не работает __init__ в FilterSet?

    @s7fkcu Автор вопроса
    "которые при фильтрации дадут результат" - покажут хотя бы один товар, если нету товаров по данному фильтру, то и фильтр не нужен
    Проблема, в составление запроса....никак не могу понять.
  • Django-filters, почему не работает __init__ в FilterSet?

    @s7fkcu Автор вопроса
    спасибо, разобрался.
    Задам вопрос еще один, не раз выручали меня. Мне нужно выводить только те бренды, которые при фильтрации дадут результат, а все остальные исключать.
    Сейчас исключаю бренды, которые не привязаны ни к одному товару
    ....
        brand = django_filters.ModelMultipleChoiceFilter(field_name='brand__name',
                                                         to_field_name='name',
                                                         label='Бренды',
                                                         queryset=Brand.objects.filter(is_active=True).exclude(
                                                             product_brand__isnull=True))
  • Django-filters, почему не работает __init__ в FilterSet?

    @s7fkcu Автор вопроса
    спасибо, решил вот таким способом
    class ProductFilter(django_filters.FilterSet):
    
        def __init__(self, *args, **kwargs):
            self.slug = kwargs.get('slug', 0)
            # self.slug = kwargs.pop('slug', False)
            print(self.slug)
            super(ProductFilter, self).__init__(*args, **kwargs)
           
            self.filters['brand'].extra.update({
                'queryset': Brand.objects.filter(is_active=True,
                                                 product_brand__category__slug=self.slug)
                            .exclude(product_brand__isnull=True),
                'help_text': False
            })
           brand = django_filters.ModelMultipleChoiceFilter(field_name='brand__name', to_field_name='name', 
     label='Бренды')
           class Meta:
            model = Product
            fields = ['brand']

    но теперь не могу понять, как разобраться с kwargs.pop, выдает как и слаг мне так и None...и берет послед значение, т.е. None, если же использую kwargs.get, то в трейсбэке пишет мне
    __init__() got an unexpected keyword argument 'slug'

    вот так я передаю это во view
    ...
    product_filtered_list = ProductFilter(self.request.GET, queryset=qs, slug=self.kwargs['slug'])
  • Django celery не обрабатывает фоновую задачу?

    @s7fkcu Автор вопроса
    FulTupFul, Решил проблему, у меня стоял python 3.7, что выдает с celery 4.2.2 ошибку импорта.
    откатил до версии 3.6.8 - и все заработало!
    Спасибо, за помощь!
  • Django celery не обрабатывает фоновую задачу?

    @s7fkcu Автор вопроса
    FulTupFul, так у меня "корневая" папка приложения называется "settings", мне его переименовать ?
    а почему раньше работало ?
    и да сейчас поставил настройки брокера напрямую, выдает такую ошибку
    from . import async, base
                          ^
    SyntaxError: invalid syntax
    # в файле "d:\development\django\parlamar.ru\env\lib\site-packages\celery\backends\redis.py" ругается на импорт
    from . import async, base
  • Django celery не обрабатывает фоновую задачу?

    @s7fkcu Автор вопроса
    FulTupFul, сделал простую функцию
    @task()
    def test():
        print(1)

    # shell
    result = test.delay()
    result.status

    Выдает: 'DisabledBackend' object has no attribute '_get_task_meta_for'
    при том, что
    # settings.py
    CELERY_BROKER_URL = 'redis://127.0.0.1:6379/1'
    CELERY_RESULTS_BACKEND = 'redis://127.0.0.1:6379/1'
  • Django celery не обрабатывает фоновую задачу?

    @s7fkcu Автор вопроса
    FulTupFul, Если отправляю эмайл без фоновой обработки, все работает, т.е. бекенд настроен. Самое интересно то, что такой же код использовал в другом проекте и он работает, но была Django 2.0.8.
    Я откатил версию, все равно не работает.
    Кстати разработку виду на windows, попробую сейчас на linux - мб дело в этом.
  • Django система купонов?

    @s7fkcu Автор вопроса
    Хотелось бы реализовать с m2m связью, а как грамотно это сделать, честно сказать не знаю.
  • Django система купонов?

    @s7fkcu Автор вопроса
    # Category
    class Category(Defualt, MPTTModel):
        parent = TreeForeignKey('self', verbose_name='Категория', blank=True, null=True, related_name='children_category',
                                help_text='Выберите родительскую категорию', on_delete=models.CASCADE)
       ...
    
    # Coupon
    class Coupon(models.Model):
        category = models.ForeignKey(Category, verbose_name='Категория товаров', on_delete=models.CASCADE)
        code = models.CharField(verbose_name='Промокод', max_length=500)
        valid_from = models.DateTimeField(verbose_name='Действителен от', blank=True, null=True)
        valid_to = models.DateTimeField(verbose_name='Действителен до', blank=True, null=True)
        discount = models.IntegerField(verbose_name='Скидка купона',
                                       validators=[MinValueValidator(0), MaxValueValidator(100)], blank=True, null=True)
        active = models.BooleanField(verbose_name='Активен', default=True)
        ....

    тут все просто и понятно
    # views при вводе купона
    class CouponView(View):
    
        def post(self, request):
            form_coupon = CouponForm(request.POST)
            if form_coupon.is_valid():
                code = form_coupon.cleaned_data['code']
                now = timezone.now()
                try:
                    coupon = Coupon.objects.get(code__iexact=code,
                                                valid_from__lte=now,
                                                valid_to__gte=now,
                                                active=True)
    
                    order = Order.objects.get(session_order=request.shop_session, is_history=False)
                    order.total_after_discount = order.total_cost_order - order.get_discount_money()
                    order.save()
                except Coupon.DoesNotExist:
                    data = {
                        'title': 'Купона',
                        'msg': 'не существует!',
                        'error': 'error'
                    }
                return JsonResponse(data)

    При добавлении товара в корзину (таблица в бд) записываю его категорию
    # модель заказ
    class Order(models.Model):
        session_order = models.CharField(max_length=200, verbose_name='session')
        coupon = models.ForeignKey(Coupon, verbose_name='Купон по заказу',
                                   related_name='orders_coupon', null=True, blank=True, on_delete=models.CASCADE)
       ......
    
        def get_coupon_discount(self):
            total = sum(item.get_cost() for item in self.items.filter(category_product =self.coupon.category.id))
            discount = round(total * (self.discount_percentage / 100))
            return discount
    
    
    # модель корзина
    class OrderItem(models.Model):
        order = models.ForeignKey(Order, verbose_name='заказ', related_name='items', on_delete=models.CASCADE)
        product = models.ForeignKey(Product, verbose_name='Продукт', related_name='order_items', on_delete=models.CASCADE)
        price = models.IntegerField(verbose_name='Цена', default=0)
        quantity = models.PositiveIntegerField(verbose_name='Количество', default=0)
        vol = models.FloatField(verbose_name='Объем', default=0)
        weight = models.FloatField(verbose_name='Вес продукта', default=0)
        category_product = models.IntegerField(verbose_name='Категория продукта', default=0)
    
        def get_cost(self):
            return round(self.price * self.quantity)
  • Почему celery создает много процессов?

    @s7fkcu Автор вопроса
    хорошо, будем копать в этом направление, спасибо!
  • Почему celery создает много процессов?

    @s7fkcu Автор вопроса
    "У Вас запущено слишком много процессов и сработало лимитирование." (c) тех. поддержка
    Вот пытаюсь, как то решить данную проблему. В первом случае (175 процессов из них большинство celery), у меня не стоял параметр в супервизоре "numprocs=1" - думал дело в нем, но сегодня написали опять много процессов. Вот не могу понять в чем проблема и как ее избежать.
  • Запустить celery из под env на сервере?

    @s7fkcu Автор вопроса
    Привет. у меня возник затык c supervisor. На хостинге сказали, что было создано около слишком много (175) процессов и сработало лимитирование, большинство из них это cellery. Стоит всего лишь один обработчик отправки email для подтверждения акк, потом отправка промокода. Как можно решить проблему ?
    Спасибо.
  • Есть ли готовые решения интеграции c почтой России, СДЭК и т.д.?

    @s7fkcu Автор вопроса
    уухххх долговато, его не обновляли то, но посмотреть можно!
    интересно, что для django не востребована доставка :(
  • Есть ли готовые решения интеграции c почтой России, СДЭК и т.д.?

    @s7fkcu Автор вопроса
    ну я как понимаю, там готовый модуль на opencart и он на php.
    А мне django/python нужен!
  • Запустить celery из под env на сервере?

    @s7fkcu Автор вопроса
    Решил через supervisor.
    Спасибо.
  • Запустить celery из под env на сервере?

    @s7fkcu Автор вопроса
    насчет сервера не мой выбор, изучу что посоветовали и подыму этот вопрос.
    сейчас попробуем варианты. Спасибо.
  • Запустить celery из под env на сервере?

    @s7fkcu Автор вопроса
    дело в том, что нету возможности его установить!!! использую сервер locum.ru, тип "Python c Virtualenv и uWSGI".
    cron - для скрипта, который проверяет статус сельдерея, если же не запущен, запускаем воркеры..
    хотелось бы еще какие - нибудь варианты.