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))
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))
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'))
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'))
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)
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))
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)
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))
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))
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)