Beispiel #1
0
 def save_model(self, request, obj, form, change):
     obj.save()
     generate_static_sku_detail_html(obj.sku.id)
     sku = obj.sku
     if not sku.default_image_url:  # 默认图片空
         sku.default_image_url = obj.image.url  # 设置商品默认图片
         sku.save()
Beispiel #2
0
    def save_model(self, request, obj, form, change):
        # 数据保存
        obj.save()

        # 附加逻辑:发出重新生成静态详情页面的任务消息
        from celery_tasks.html.tasks import generate_static_sku_detail_html
        generate_static_sku_detail_html(obj.id)
Beispiel #3
0
    def save_model(self, request, obj, form, change):
        obj.save()

        sku = obj.sku  # 获取图片所对应的sku
        if sku.default_image_url is None:  # 如果当前sku没有默认的图片
            sku.default_image_url = obj.image.url  # 把当前的图片路径设置到sku中

        generate_static_sku_detail_html(sku.id)
Beispiel #4
0
    def save_model(self, request, obj, form, change):
        """新增商品图片"""
        obj.save()  # SKUImage 类型的对象
        generate_static_sku_detail_html(obj.sku.id)  # 重新生成商品详情页

        # 判断商品是否有默认图片,如果没有, 则在新增商品图片时进行设置默认图片
        sku = obj.sku
        if not sku.default_image_url:  # 默认图片为空
            sku.default_image_url = obj.image.url  # 设置商品默认图片
            sku.save()
Beispiel #5
0
    def update(self, instance, validated_data):

        # 1 接收参数
        specs = validated_data.get('specs')

        # 2 判断 如果有 就删除
        if specs:
            del validated_data['specs']

        # 设置事务开启
        with transaction.atomic():

            # 设置事务保存点
            save_id = transaction.savepoint()

            try:

                # 3 先更新SKU数据
                try:
                    sku = SKU.objects.filter(id=instance.id).update(
                        **validated_data)
                except:
                    return Response(status=status.HTTP_400_BAD_REQUEST)

                # 4 再更新SKU规格表数据
                try:
                    for spec in specs:
                        SKUSpecification.objects.filter(
                            sku_id=instance.id,
                            spec_id=spec.get('spec_id')).update(
                                option_id=spec.get('option_id'))

                except:
                    return Response(status=status.HTTP_400_BAD_REQUEST)

                # 由于没有default_image 会报错 所以设置指定一个图片
                sku.default_image = 'group1/M00/00/02/CtM3BVrPB4GAWkTlAAGuN6wB9fU4220429'
                sku.save()

            except:

                # 设置事务回滚
                transaction.savepoint_rollback(save_id)
            else:
                # 提交事务
                transaction.savepoint_commit(save_id)

                # 异步任务生成静态文件
                from celery_tasks.html.tasks import generate_static_sku_detail_html
                generate_static_sku_detail_html(instance.id)

                # 5 返回结果
                return instance
Beispiel #6
0
    def save_model(self, request, obj, form, change):
        # obj -> SKUImage 对象  obj.sku
        obj.save()
        from celery_tasks.html.tasks import generate_static_sku_detail_html
        generate_static_sku_detail_html(obj.sku.id)

        # 设置SKU默认图片
        sku = obj.sku
        if not sku.default_image_url:
            # http://image.meiduo.site:8888/groupxxxxxx
            sku.default_image_url = obj.image.url
            sku.save()
Beispiel #7
0
    def create(self, validated_data):

        # 1.接收参数
        specs = validated_data.get('specs')

        # 2.判断 如果有 就删除
        if specs:
            del validated_data['specs']

        # 设置事务开启
        with transaction.atomic():

            # 设置事务保存点
            sava_id = transaction.savepoint()

            try:

                # 3.保存SKU数据
                try:
                    sku = SKU.objects.create(**validated_data)
                except:
                    return Response(status=status.HTTP_400_BAD_REQUEST)

                # 4.再保存SKU的规格信息

                try:

                    for spec in specs:
                        SKUSpecification.objects.create(
                            sku_id=sku.id,
                            spec_id=spec.get('spec_id'),
                            option_id=spec.get('option_id'))
                except:
                    return Response(status=status.HTTP_400_BAD_REQUEST)

                # 由于没有default_image 会报错 所以设置指定一个图片
                sku.default_image = 'group1/M00/00/02/CtM3BVrPB4GAWkTlAAGuN6wB9fU4220429'
                sku.save()
            except:
                # 设置事务回滚点
                transaction.savepoint_rollback(sava_id)
            else:

                # 提交事务
                transaction.savepoint_commit(sava_id)
                # 5.异步任务生成静态文件
                from celery_tasks.html.tasks import generate_static_sku_detail_html
                generate_static_sku_detail_html(sku.id)

                # 6.返回结果
                return sku
Beispiel #8
0
    def save_model(self, request, obj, form, change):
        """admin后台新增或修改了数据时调用"""

        obj.save()
        # 生成静态页面 -- sku详情页面
        generate_static_sku_detail_html(obj.sku.id)

        # 判断sku是否有默认图片, 如果没有, 则在新增商品图片时进行设置
        sku = obj.sku
        # 判断图片为空
        if not sku.default_image_url:
            # 设置商品默认图片
            sku.default_image_url = obj.image.url
            sku.save()
Beispiel #9
0
    def update(self, instance, validated_data):

        # 1.接收specs
        specs = validated_data['specs']
        # 2.判断如果有specs 那就删除
        if specs:
            del validated_data['specs']

        # 设置事务开启点
        with transaction.atomic():

            # 设置事务保存点
            save_id = transaction.savepoint()

            try:
                # 3.然后先更新sku数据
                SKU.objects.filter(id=instance.id).update(**validated_data)

                # # 删除所有SKUSpecification中的数据
                # SKUSpec = SKUSpecification.objects.get(sku_id=instance.id)
                # SKUSpec.delete()
                # SKUSpec.save()

                # 4.再更新sku规格数据
                for spec in specs:
                    SKUSpecification.objects.filter(sku_id=instance.id,
                                                    spec_id=spec.get('spec_id'))\
                                            .update(
                                                    spec_id = spec.get('spec_id'),
                                                    option_id = spec.get('option_id')
                                                    )
            except:

                # 设置事务回滚点
                transaction.savepoint_rollback(save_id)
                return serializers.ValidationError("更新错误")

            else:

                # 设置事务提交点
                transaction.savepoint_commit(save_id)

        # 5.调用异步任务方法 生成html详情页面
        from celery_tasks.html.tasks import generate_static_sku_detail_html
        generate_static_sku_detail_html(instance.id)

        # 5.返回结果
        return instance
#!/usr/bin/env python
#在当前的环境中查找python解释器的路径
#!/home/python/.virtualenvs/meiduo/bin/python
#指定python解释器

# 指定当前项目的运行环境
import sys
import os
import django

sys.path.insert(0, '../')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo.settings.dev")
django.setup()

from goods.models import SKU
from celery_tasks.html.tasks import generate_static_sku_detail_html

if __name__ == '__main__':
    skus = SKU.objects.all()
    for sku in skus:
        generate_static_sku_detail_html(sku.id)
    print('ok')
Beispiel #11
0
 def save_model(self, request, obj, form, change):
     obj.save()
     from celery_tasks.html.tasks import generate_static_sku_detail_html
     generate_static_sku_detail_html(obj.id)
Beispiel #12
0
 def delete_model(self, request, obj):
     sku_id = obj.sku.id
     obj.delete()
     from celery_tasks.html.tasks import generate_static_sku_detail_html
     generate_static_sku_detail_html(sku_id)
Beispiel #13
0
 def delete_model(self, request, obj):
     """删除商品图片"""
     sku_id = obj.sku.id
     obj.delete()
     generate_static_sku_detail_html(sku_id)  # 重新生成商品详情页
Beispiel #14
0
 def delete_model(self, request, obj):
     sku_id=obj.sku.id
     obj.delete()
     generate_static_sku_detail_html(sku_id)
Beispiel #15
0
#!/home/ubuntu/.virtualenvs/meiduo_water/bin/python3.6

import sys
sys.path.insert(0, '../')

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'meiduo.settings.dev')

import django
django.setup()

from goods.models import SKU
from celery_tasks.html.tasks import generate_static_sku_detail_html

if __name__ == '__main__':
    skus = SKU.objects.all()
    # for sku in skus:
    # print(sku.id)
    # generate_static_sku_detail_html(sku.id)
    generate_static_sku_detail_html(3)
Beispiel #16
0
 def save_model(self, request, obj, form, change):
     obj.save()
     generate_static_sku_detail_html(obj.id)
Beispiel #17
0
# 添加导包路径 : /home/python/code/gz07/meiduo/meiduo_mall
import sys
# sys.path.append('../')  # 表示把 scripts 目录的上一级目录 添加到导包路径中
sys.path.insert(0, '../')
print(sys.path)

# 加载django配置文件, 注册应用
import os
import django

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "meiduo_mall.settings.dev")
django.setup()

from celery_tasks.html.tasks import generate_static_sku_detail_html
from goods.models import SKU

if __name__ == '__main__':
    '''批量生成所有商品的静态详情页'''
    skus = SKU.objects.all()
    for sku in skus:
        sku_id = sku.id
        generate_static_sku_detail_html(sku_id)  # 生成一个商品的静态详情页
        print(sku_id)
Beispiel #18
0
    def delete_model(self, request, obj):
        """admin后台删除了数据时调用"""

        sku_id = obj.sku.id
        obj.delete()
        generate_static_sku_detail_html(sku_id)
Beispiel #19
0
    def save_model(self, request, obj, form, change):
        '''商品选项信息修改'''
        obj.save()

        generate_static_sku_detail_html(obj.sku.id)  # 重新生成商品详情页
Beispiel #20
0
 def save_model(self, request, obj, form, change):
     # 修改或新增了商品.需要重新生成详情页
     obj.save()  # obj 商品sku对象
     generate_static_sku_detail_html(obj.id)
Beispiel #21
0
 def save_model(self, request, obj, form, change):
     """商品选项信息的修改"""
     obj.save()
     generate_static_sku_detail_html(obj.sku.id)