Exemple #1
0
 def save_model(self, request, offer_item, form, change):
     super(OfferItemClosedAdmin, self).save_model(
         request, offer_item, form, change)
     if offer_item.product_id is not None:
         offer_item.product.stock = offer_item.stock
         offer_item.product.save(update_fields=['stock'])
         update_offer_item(product_id=offer_item.product_id)
Exemple #2
0
def import_producer_stock(worksheet, producers=None):
    error = False
    error_msg = None
    header = get_header(worksheet)
    if header:
        row_num = 1
        row = get_row(worksheet, header, row_num)
        while row and not error:
            try:
                # with transaction.atomic():
                product_id = None if row[_('Id')] is None else Decimal(row[_('Id')])
                if product_id is not None:
                    stock = DECIMAL_ZERO if row[_('Current stock')] is None else Decimal(
                        row[_('Current stock')]).quantize(
                        THREE_DECIMALS)
                    stock = stock if stock >= DECIMAL_ZERO else DECIMAL_ZERO
                    Product.objects.filter(
                        id=product_id, producer__in=producers
                    ).update(stock=stock)
                update_offer_item(product_id=product_id)
                row_num += 1
                row = get_row(worksheet, header, row_num)
            except KeyError, e:
                # Missing field
                error = True
                error_msg = _("Row %(row_num)d : A required column is missing.") % {'row_num': row_num + 1}
            except Exception, e:
                error = True
                error_msg = _("Row %(row_num)d : %(error_msg)s.") % {'row_num': row_num + 1, 'error_msg': str(e)}
Exemple #3
0
 def save_model(self, request, offer_item, form, change):
     super(OfferItemClosedAdmin, self).save_model(
         request, offer_item, form, change)
     if offer_item.product_id is not None:
         offer_item.product.stock = offer_item.stock
         offer_item.product.save(update_fields=['stock'])
         update_offer_item(product_id=offer_item.product_id)
Exemple #4
0
def import_producer_stock(worksheet):
    error = False
    error_msg = None
    header = get_header(worksheet)
    if header:
        row_num = 1
        row = get_row(worksheet, header, row_num)
        while row and not error:
            try:
                # with transaction.atomic():
                product_id = None if row[_("Id")] is None else Decimal(
                    row[_("Id")])
                if product_id is not None:
                    stock = (DECIMAL_ZERO
                             if row[_("Inventory")] is None else Decimal(
                                 row[_("Inventory")]).quantize(THREE_DECIMALS))
                    stock = stock if stock >= DECIMAL_ZERO else DECIMAL_ZERO
                    Product.objects.filter(id=product_id).update(stock=stock)
                update_offer_item(product_id=product_id)
                row_num += 1
                row = get_row(worksheet, header, row_num)
            except KeyError as e:
                # Missing field
                error = True
                error_msg = _(
                    "Row %(row_num)d : A required column is missing.") % {
                        "row_num": row_num + 1
                    }
            except Exception as e:
                error = True
                error_msg = _("Row %(row_num)d : %(error_msg)s.") % {
                    "row_num": row_num + 1,
                    "error_msg": str(e),
                }
    return error, error_msg
Exemple #5
0
    def save(self, *args, **kwargs):
        instance = super(ProducerDataForm, self).save(*args, **kwargs)
        if instance.id is not None:
            instance.permanence_set = (
                Permanence.objects.filter(producers=instance.pk).exclude(status=PERMANENCE_PLANNED).order_by("?")
            )
            instance.permanence_set.add(*self.cleaned_data["permanences"])
            # The previous save is called with "commit=False" or we need to update the producer
            # to recalculate the products prices. So a call to self.instance.save() is required
            self.instance.save()
            for product in Product.objects.filter(producer_id=instance.id).order_by("?"):
                product.save()
            update_offer_item(producer_id=instance.id)

        return instance
Exemple #6
0
 def save_model(self, request, box, form, change):
     if box.is_into_offer and box.stock <= 0:
         box.stock = DECIMAL_MAX_STOCK
     super(BoxAdmin, self).save_model(request, box, form, change)
     update_offer_item(box)
Exemple #7
0
 def save_model(self, request, product, form, change):
     super(ProductAdmin, self).save_model(
         request, product, form, change)
     update_offer_item(product_id=product.id)
Exemple #8
0
def producer_post_save(sender, **kwargs):
    producer = kwargs["instance"]
    for a_product in Product.objects.filter(
            producer_id=producer.id).order_by('?'):
        a_product.save()
    update_offer_item(producer_id=producer.id)
Exemple #9
0
 def save_model(self, request, product, form, change):
     super(ProductAdmin, self).save_model(request, product, form, change)
     update_offer_item(product_id=product.id)
Exemple #10
0
 def save_model(self, request, box, form, change):
     if box.is_into_offer and box.stock <= 0:
         box.stock = DECIMAL_MAX_STOCK
     super(BoxAdmin, self).save_model(request, box, form, change)
     update_offer_item(box)
Exemple #11
0
 def save_model(self, request, box, form, change):
     super(BoxAdmin, self).save_model(request, box, form, change)
     update_offer_item(box)
Exemple #12
0
def producer_post_save(sender, **kwargs):
    producer = kwargs["instance"]
    for a_product in Product.objects.filter(producer_id=producer.id).order_by('?'):
        a_product.save()
    update_offer_item(producer_id=producer.id)