Example #1
0
def produce_submit():
    ok = False
    form = SaveApi(request.values)
    if not form.validate_on_submit():
        return jsonify(code=3004, message=str(form.errors))
    data = request.values.to_dict()
    if not data:
        return jsonify(code=3003, message='至少传入一个参数!')
    try:
        if not (data['title'] and data['channel']):
            return jsonify(code=3003, message='标题和渠道为必填')
        if not data['img_urls']:
            return jsonify(code=3003, message='img_urls为空')
        produce = Produce.objects(title=data['title'],
                                  channel=data['channel']).first()
        if not produce:
            produce_data = data.copy()
            produce_data.pop('img_urls')
            produce = Produce(**produce_data)
            produce.save()
        else:
            # if produce.editor_id != 0:
            if produce.editor_id == 0:
                produce_data = data.copy()
                produce_data.pop('img_urls')
                ok = produce.update(**produce_data)
                if not ok:
                    return jsonify(code=3003, message='产品更新失败')
        img_urls = data['img_urls'].split(',')

        for i, img_url in enumerate(img_urls):
            img_data = {}
            img_data['title'] = data['title']
            img_data['img_url'] = img_url
            img_data['channel'] = data['channel']
            img_data['url'] = data['url']
            img_data['target_id'] = str(produce._id)
            img = Image.objects(img_url=img_url).first()
            if not img:
                img = Image(**img_data)
                ok = img.save()
            else:
                ok = img.update(target_id=str(produce._id))
            if i == 0:
                if not produce.cover_id:
                    ok = produce.update(cover_id=str(img._id))

        if ok:
            return jsonify(code=0, message='success!', data=produce)
        else:
            return jsonify(code=3010, message='操作失败!')

    except (Exception) as e:
        return jsonify(code=3011, message=str(e))
Example #2
0
def produce_ajx_del():
    id = request.args.get('id', '')
    if not id:
        return jsonify(code=500, message='缺少请求参数!')

    try:
        asset = Produce.objects(_id=ObjectId(id)).first()
        if not asset:
            return jsonify(code=500, message='内容不存在!')
        if g.user._id != asset.user_id:
            return jsonify(code=500, message='没有权限!')

        ok = asset.mark_delete()
        return jsonify(code=0, message='success')
    except(Exception) as e:
        return jsonify(code=500, message=str(e))
Example #3
0
def produce_recovery():
    meta = {}

    ids = request.values.get('ids', '')
    type = request.values.get('type', 1)
    if not ids:
        return jsonify(success=False, message='缺少请求参数!')

    try:
        arr = ids.split(',')
        for d in arr:
            item = Produce.objects(_id=ObjectId(d)).first()
            item.mark_recovery() if item else None
    except(Exception) as e:
        return jsonify(success=False, message=str(e))

    return jsonify(success=True, message='操作成功!', data={'ids': ids, 'type': type},
                   redirect_to=url_for('admin.image_list'))
Example #4
0
def produce_set_stick():
    meta = metaInit.copy()

    id = request.values.get('id', '')
    evt = request.values.get('evt', 1)
    if not id:
        return jsonify(success=False, message='缺少请求参数!')

    try:
        image = Produce.objects(_id=ObjectId(id)).first()
        if not image:
            return jsonify(success=False, message='对象不存在!')
        image.mark_stick(evt=evt) if image else None
    except(Exception) as e:
        return jsonify(success=False, message=str(e))

    return jsonify(success=True, message='操作成功!', data={'id': id, 'evt': evt},
                   redirect_to=url_for('admin.image_list'))
Example #5
0
def produce_index():
    meta = metaInit.copy()
    query = {
        'stick': 1,
        'status': 1,
        'deleted': 0,
    }
    stickList = Produce.objects(**query).order_by('-stick_on')[:4]
    # 过滤数据
    sticks = []
    for i, d in enumerate(stickList):
        row = t_produce_view(d)
        sticks.append(row)
    meta['sticks'] = sticks

    meta['index_home_slide'] = get_column('image_index_slider', 10)
    meta['image_home_fine'] = get_column('image_home_fine', 3)
    meta['image_home_special'] = get_column('image_home_special', 2)
    return render_template('produce/index.html', meta=meta)
Example #6
0
def produce_update():

    page = 1
    perPage = 100
    isEnd = False
    successStatCount = 0
    failStatCount = 0
    query = {}
    #query['deleted'] = 0
    #query['kind'] = 1
    #query['status'] = 1
    #query['channel'] = 'g_mark'
    #query['total_tags'] = '女装'
    query['channel'] = 'thecool'

    while not isEnd:
        data = Produce.objects(**query).order_by('-created_at').paginate(
            page=page, per_page=perPage)
        if not data:
            print("get data is empty! \n")
            continue

        # 过滤数据
        for i, d in enumerate(data.items):
            #img_url = d.img_url.strip()
            #if d.channel == 'g_mark':
            if True:
                ok = True
                ok = d.update(channel='chinagood')
                if ok:
                    successStatCount += 1
                else:
                    failStatCount += 1

        print("current page %s: \n" % page)
        page += 1
        if len(data.items) < perPage:
            isEnd = True

    print("is over execute SuccessCount %d ---- failCount: %d\n" %
          (successStatCount, failStatCount))
Example #7
0
def produce_submit():
    meta = metaInit.copy()
    id = request.args.get('id', None)
    meta['data'] = None
    meta['is_edit'] = False
    form = SaveForm()
    if id:
        item = Produce.objects(_id=ObjectId(id)).first()
        item._id = str(item._id)
        item.tags_s = ','.join(item.tags)
        item.color_tags_s = ','.join(item.color_tags)
        item.brand_tags_s = ','.join(item.brand_tags)
        item.material_tags_s = ','.join(item.material_tags)
        item.style_tags_s = ','.join(item.style_tags)
        item.technique_tags_s = ','.join(item.technique_tags)
        item.other_tags_s = ','.join(item.other_tags)
        meta['data'] = item
        meta['is_edit'] = True

    meta['default_tags'] = re.split('[,,]', get_block_content('default_tags'))
    meta['default_color_tags'] = re.split('[,,]', get_block_content('default_color_tags'))
    meta['default_brand_tags'] = re.split('[,,]', get_block_content('default_brand_tags'))
    meta['default_material_tags'] = re.split('[,,]', get_block_content('default_material_tags'))
    meta['default_style_tags'] = re.split('[,,]', get_block_content('default_style_tags'))
    meta['default_technique_tags'] = re.split('[,,]', get_block_content('default_technique_tags'))
    meta['default_other_tags'] = re.split('[,,]', get_block_content('default_other_tags'))

    meta['prize_options'] = prize_options()

    categories = Category.objects(kind=2, status=1, deleted=0)[:30]
    meta['categories'] = categories

    # 获取品牌列表
    brands = Brand.objects(status=1, deleted=0)[:1000]
    meta['brands'] = brands

    meta['referer_url'] = request.environ.get('HTTP_REFERER') if request.environ.get('HTTP_REFERER') else url_for('admin.produce_list')

    return render_template('admin/produce/submit.html', meta=meta, form=form)
Example #8
0
def produce_view():
    meta = metaInit.copy()

    id = request.args.get('id', None)
    if not id:
        flash('ID不存在!', 'warning')
        return redirect(url_for('main.produce_index'))

    if not len(id) == 24:
        flash('ID非法!', 'warning')
        return redirect(url_for('main.produce_index'))

    item = Produce.objects(_id=ObjectId(id)).first()

    if not item:
        flash('内容不存在!', 'warning')
        return redirect(url_for('main.produce_index'))

    if item.deleted == 1:
        flash('内容已删除!', 'warning')
        return redirect(url_for('main.produce_index'))

    meta['title'] = "%s-素材库" % item['title']
    return render_template('produce/view.html', meta=meta, form=t_produce_view(item))
Example #9
0
def produce_list():
    meta = metaInit.copy()
    query = {}
    page = force_int(request.args.get('page', 1))
    per_page = force_int(request.args.get('per_page', 20))
    status = force_int(request.args.get('status', 1))
    deleted = force_int(request.args.get('deleted', 0))
    kind = force_int(request.args.get('kind', 1))
    prize_id = force_int(request.args.get('prize_id', 0))
    category_id = force_int(request.args.get('category_id', 0))
    tag = request.args.get('tag', '')

    t = force_int(request.args.get('t', 1), 1)
    q = request.args.get('q', '')

    if q:
        if t == 1:
            query['title'] = {"$regex": q.strip()}
        if t == 2:
            query['channel'] = q.strip()
        if t == 3:
            query['evt'] = force_int(q.strip())

    if prize_id:
        query['prize'] = {'$elemMatch': {'id': int(prize_id)}}

    if category_id:
        query['category_id'] = category_id

    if tag:
        query['total_tags'] = tag

    if kind:
        if kind == 1:
            meta['css_industry'] = 'active'
        elif kind == 2:
            meta['css_plane'] = 'active'
        meta['css_all'] = ''
        query['kind'] = kind

    if status == -1:
        meta['css_disable'] = 'active'
        query['status'] = 0
    if status == 1:
        query['status'] = 1
        meta['css_enable'] = 'active'
    else:
        pass

    if deleted == 1:
        query['deleted'] = 1
        meta['css_deleted'] = 'active'
    else:
        query['deleted'] = 0

    if not status and not deleted:
        meta['css_all'] = 'active'
    else:
        meta['css_all'] = ''

    page_url = url_for('main.produce_list', page="#p#", q=q, t=t, tag=tag, prize_id=prize_id, category_id=category_id, kind=kind, status=status,
                       deleted=deleted)

    data = Produce.objects(**query).order_by('-edit_on', '-editor_level').paginate(page=page, per_page=per_page)
    total_count = Produce.objects(**query).count()

    # 过滤数据
    rows = t_produce_list(data)

    meta['data'] = rows
    meta['total_count'] = total_count
    meta['prize_options'] = prize_options()

    categories = Category.objects(kind=2, status=1, deleted=0)[:30]
    meta['categories'] = categories

    pager = Pager(page, per_page, total_count, page_url)
    meta['pager'] = pager.render_view()
    return render_template('produce/list.html', meta=meta)
def save_data(image):
    # 根据标题 和 渠道 判断 是否重复产品
    produce = Produce.objects(title=image.title,channel=image.channel).first()
    if produce:
        print('此素材已存在产品库', str(produce._id))
    else:
        print('新创建产品库')
        produce = Produce()
        produce.title = image.title  # 标题
        produce.url = image.url  # 原文地址
        produce.channel = image.channel  # 渠道
        produce.tags = image.tags  # 标签
        produce.brand_tags = image.brand_tags
        produce.color_tags = image.color_tags
        produce.material_tags = image.material_tags
        produce.other_tags = image.other_tags
        produce.style_tags = image.style_tags
        produce.technique_tags = image.technique_tags
        produce.total_tags = image.total_tags
        produce.designer = image.designer  # 设计者姓名
        produce.company = image.company  # 公司
        produce.price = image.price  # 价格
        produce.currency_type = image.currency_type  # 币种
        produce.kind = image.kind  # 类型
        produce.brand_id = image.brand_id  # 品牌id
        produce.category_id = image.category_id
        produce.remark = image.remark  # 备注
        produce.info = image.info  # 信息
        produce.evt = image.evt  # 来源
        produce.status = image.status # 状态
        produce.deleted = image.deleted # 是否删除
        produce.cover_id = str(image._id)  # 初始封面
        if image.prize_id:
            prize_list = []
            prize_dict = {}
            prize_dict['id'] = image.prize_id
            prize_dict['name'] = image.prize
            prize_dict['time'] = image.prize_time
            prize_dict['level'] = image.prize_level
            prize_list.append(prize_dict)
            produce.prize = prize_list
        ok = produce.save()
        if ok:
            print('保存成功,产品库ID:', str(produce._id))
        else:
            print('导入失败,失败素材ID', str(image._id))
    # 保存素材target
    ok = image.update(target_id=str(produce._id), asset_type=2)

    if ok:
        print('保存素材target成功,成功素材ID', str(image._id))
    else:
        print('保存素材target失败,失败素材ID', str(image._id))
Example #11
0
def produce_list():
    meta = metaInit.copy()
    query = {}
    page = force_int(request.args.get('page', 1))
    per_page = force_int(request.args.get('per_page', 100))
    status = force_int(request.args.get('status', 0))
    deleted = force_int(request.args.get('deleted', 0))
    kind = force_int(request.args.get('kind', 0))
    prize_id = force_int(request.args.get('prize_id', 0))
    editor_level = force_int(request.args.get('editor_level', 0))
    site_mark = request.args.get('site_mark', '')

    t = force_int(request.args.get('t', 1), 1)
    q = request.args.get('q', '')

    if q:
        if t == 1:
            query['_id'] = ObjectId(q.strip())
        if t == 2:
            query['channel'] = q.strip()
        if t == 3:
            query['evt'] = force_int(q.strip())

    if prize_id:
        query['prize'] = {'$elemMatch': {'id': int(prize_id)}}

    if kind:
        if kind == 1:
            meta['css_design'] = 'active'
        elif kind == 5:
            meta['css_fashion'] = 'active'
        meta['css_all'] = ''
        query['kind'] = kind

    if editor_level:
        if editor_level == -1:
            query['editor_level'] = 0
        else:
            query['editor_level'] = editor_level

    if status == -1:
        query['status'] = 0
    if status == 1:
        query['status'] = 1
    else:
        pass

    if deleted == 1:
        query['deleted'] = 1
        meta['css_deleted'] = 'active'
    else:
        query['deleted'] = 0
    if site_mark:
        query['channel'] = site_mark
    if not kind and not deleted:
        meta['css_all'] = 'active'
    else:
        meta['css_all'] = ''

    page_url = url_for('admin.produce_list', page="#p#", q=q, t=t, prize_id=prize_id, site_mark=site_mark, editor_level=editor_level, kind=kind,
                       status=status, deleted=deleted)

    data = Produce.objects(**query).order_by('-created_at').paginate(page=page, per_page=per_page)
    total_count = Produce.objects(**query).count()
    site_list = Site.objects(kind=1, status=1, deleted=0)
    # 过滤数据
    rows = t_admin_produce_list(data)
    meta['data'] = rows
    meta['total_count'] = total_count
    meta['prize_options'] = prize_options()
    meta['site_list'] = site_list
    pager = Pager(page, per_page, total_count, page_url)
    meta['pager'] = pager.render_view()

    return render_template('admin/produce/list.html', meta=meta)