def POST(self): if not helper.logged(helper.PRIV_USER, 'DATA_MODIFY'): raise web.seeother('/') render = helper.create_render() user_data = web.input(note_id='', note_code='', note_content='') note_code = user_data.note_code.strip().upper() # note_code 都是用大写字母 if note_code == '': return render.info('索引编码不能为空!') version = user_data.version.strip() # 排除同名 find_condition = {'note_code': note_code, 'version': version} if user_data['note_id'] == 'n/a': # 新建 note_id = None message = '新建' else: note_id = ObjectId(user_data['note_id']) message = '修改' find_condition['_id'] = {'$ne': note_id} # 排除自己 r1 = db.notes.find_one(find_condition) if r1 is not None: return render.info('索引编码已存在,不能重复!') try: update_set = { 'note_code': note_code, 'version': version, # 版本说明 2018-10-18 'note_content': user_data['note_content'], 'last_tick': int(time.time()), # 更新时间戳 'weight': int(user_data['weight']), } except ValueError: return render.info('请在相应字段输入数字!') if note_id is None: update_set['history'] = [(helper.time_str(), helper.get_session_uname(), message)] r2 = db.notes.insert_one(update_set) else: db.notes.update_one( {'_id': note_id}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), message), } # 纪录操作历史 }) return render.info('成功保存!', '/plat/notes')
def POST(self): if helper.logged(helper.PRIV_USER): render = helper.create_render() user_data = web.input(product_id='', weight='') if '' in (user_data.product_id, user_data.weight): return json.dumps({'ret': -1, 'msg': '参数错误'}) # 取得门店id db_shop = helper.get_shop_by_uid() # 报损数量/重量 if user_data['product_id'][2] in ('1', '3'): weight = int(user_data['weight']) else: weight = float(user_data['weight']) db.order_damage.insert_one({ 'shop': db_shop['shop'], 'product_id': user_data['product_id'], 'num': '%.2f' % weight, 'history': [(helper.time_str(), helper.get_session_uname(), '报损操作')], # 纪录操作历史 }) # 调整站点库存, r = db.inventory.update_one( # u-prod { 'shop': db_shop['shop'], 'product_id': user_data['product_id'], }, { '$inc': { 'num': 0 - weight }, # 减少库存 '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '报损操作导致库存减少 %.2f ' % float(weight)) }, }) # 更新第3方库存 2015-10-10 helper.elm_modify_num(db_shop['shop'], user_data['product_id']) return render.info('已报损!数量:%.2f。' % weight, '/pos/inventory') else: raise web.seeother('/')
def topic_change_status(tpc_id, status, comment='审核状态修改', check_comment=''): # 修改专辑状态 update_set = {'status': status} if len(check_comment) > 0: update_set['check_comment'] = check_comment db.topic_store.update_one( {'tpc_id': tpc_id}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), comment), } # 纪录操作历史 }) # 专辑下商品同时更新状态 db.obj_store.update_many({ 'obj_type': 'topic', 'tpc_id': tpc_id }, { '$set': { 'status': status }, })
def GET(self): if helper.logged(helper.PRIV_USER, 'REPORT_VOICE'): render = helper.create_render() #user_data=web.input(start_date='', shop='__ALL__', ret_type='table') # 显示最近30天的 start_date = helper.time_str(time.time() - 3600 * 24 * 30, format=1) # 起至时间 begin_date = '%s 00:00:00' % start_date #end_date = '%s 23:59:59' % start_date #print begin_date, end_date # db_voice = db.customer_voice.find({ 'time': { '$gt': begin_date } }, { '_id': 0 }).sort([('_id', -1)]) return render.report_voice(helper.get_session_uname(), helper.get_privilege_name(), db_voice) else: raise web.seeother('/')
def POST(self): if helper.logged(helper.PRIV_USER,'APP_PUSH'): render = helper.create_render() user_data=web.input(phone='',content='') if user_data.phone.strip()=='': # 发送全部 r=jpush.jpush(user_data.content) #r = False # 测试时关闭全部发送 else: # 发送指定号码,最多1000个号码 r=jpush.jpush(user_data.content, user_data.phone) # 记录发送日志 db.jpush_log.insert({ 'push_time' : helper.time_str(), 'user' : helper.get_session_uname(), 'phone' : user_data.phone.strip(), 'content' : user_data.content, 'result' : r }) if r!=False: return render.info('发送成功! '+r,'/plat/push_msg') else: return render.info('发送失败!','/plat/push_msg') else: raise web.seeother('/')
def GET(self): if not logged(helper.PRIV_ADMIN): raise web.seeother('/') render = create_render() user_data = web.input(uid='') r3 = db.merchant.find({'available': 1}) db_user = { '_id': 'n/a', 'menu_level': 60 * '-', 'time': int(time.time()) } if user_data.uid != '': r2 = db.user.find_one({'_id': ObjectId(user_data.uid)}) if r2: db_user = r2 if db_user['_id'] == 'n/a': user_level_name = [] else: user_level_name = get_privilege_name(db_user['privilege'], db_user['menu_level']) return render.user_setting(session.uname, user_level[session.privilege], db_user, time_str(db_user['time']), user_level_name, r3)
def GET(self): if logged(helper.PRIV_ADMIN): render = create_render() user_data = web.input(uid='') if user_data.uid == '': return render.info('错误的参数!') db_user = db.user.find_one({'_id': ObjectId(user_data.uid)}) if db_user != None: db_shop = db.base_shop.find( { 'available': 1, 'type': { '$in': ['chain', 'store', 'dark'] } }, { 'name': 1, 'type': 1 }) shops = [] for s in db_shop: shops.append( (s['_id'], s['name'], helper.SHOP_TYPE[s['type']])) return render.user_setting( session.uname, user_level[session.privilege], db_user, time_str(db_user['time']), get_privilege_name(db_user['privilege'], db_user['menu_level']), shops) else: return render.info('错误的参数!') else: raise web.seeother('/')
def POST(self): web.header("Content-Type", "application/json") if helper.logged(helper.PRIV_USER, 'POS_INVENTORY'): user_data = web.input(product_id='', online='') if '' in (user_data.product_id, user_data.online): return json.dumps({'ret': -1, 'msg': '参数错误'}) # 查找shop db_shop = helper.get_shop_by_uid() db_invent = db.inventory.update_one( { 'product_id': user_data.product_id, 'shop': db_shop['shop'], }, { '$set': { 'online': int(user_data.online) }, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '上下架标志修改为 %s' % str(user_data.online)) }, }) return json.dumps({'ret': 0, 'msg': '操作完成'}) else: return json.dumps({'ret': -3, 'msg': '无权限访问'})
def process_file(file_name, action): global cnt, wrn f = open(file_name) while True: line = f.readline().strip() if not line: break line2a = line.split(',') line2b = [x for x in line2a if len(x.strip()) > 0] if len(line2b)==0: continue if len(line2b)<3: print 'WARNING: ', file_name, line2b wrn += 1 continue line2 = [ line2b[0], line2b[1], ','.join(line2b[2:]) ] if action=='do': note_code = line2[0].strip().upper() version = line2[1].strip() r1 = db.notes.find_one({'note_code' : note_code, 'version' : version}) if r1: # 有重复 print 'WARNING REPEAT: ', file_name, note_code wrn +=1 continue line3 = line2[2].strip() line3 = line3[1:] if line3[0]=='"' else line3 line3 = line3[:-1] if line3[-1]=='"' else line3 update_set={ 'note_code' : note_code, 'version' : version, 'note_content': line3, 'last_tick' : int(time.time()), # 更新时间戳 'weight' : 1, 'history' : [(helper.time_str(), 'import_note.py', '导入')] } r2 = db.notes.insert_one(update_set) #print update_set cnt += 1 f.close()
def POST(self): web.header("Content-Type", "application/json") user_data = web.input(app_type='', source='') db.download_record.insert_one({ 'date': helper.time_str(), 'app_type': user_data['app_type'], 'source': user_data['source'], }) return json.dumps({'ret': 0})
def POST(self): web.header("Content-Type", "application/json") if helper.logged(helper.PRIV_USER, 'ONLINE_MAN') or helper.logged( helper.PRIV_USER, 'BATCH_JOB'): param = web.input(id='', order_id='') if param.id == '' and param.order_id == '': return json.dumps({'ret': -1, 'msg': '参数错误'}) # 查找门店 db_shop = helper.get_shop_by_uid() condition = { 'shop': db_shop['shop'], 'status': 'DISPATCH', } if len(param.order_id) > 0: condition['order_id'] = param.order_id elif len(param.id) > 0: condition['_id'] = ObjectId(param.id) # 更新订单状态,进入派送 r = db.order_app.find_one_and_update( condition, { '$set': { 'status': 'ONROAD', 'man': 0, #'comment' : '', }, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '开始派送') } }, { '_id': 1, 'uname': 1 }) if r: # 推送通知 if len(r['uname']) == 11 and r['uname'][0] == '1': jpush.jpush( '水果君&零食君正欢快的向您奔来,准备与他们尽情的玩耍吧!掌柜承诺:19.9元包邮,不满意退款', r['uname']) return json.dumps({ 'ret': 0, 'msg': '开始派送', 'id': str(r['_id']) }) else: return json.dumps({'ret': 3, 'msg': '订单状态不是待配送'}) else: return json.dumps({'ret': -1, 'msg': '无访问权限'})
def POST(self): if not helper.logged(helper.PRIV_MCH, 'TOPIC_STORE'): raise web.seeother('/') mch_id = helper.get_session_mch_id() render = helper.create_render() user_data = web.input(tpc_id='') if user_data.tpc_name.strip() == '': return render.info('品名不能为空!') if user_data['tpc_id'] == 'n/a': # 新建 db_pk = db.user.find_one_and_update({'uname': 'settings'}, {'$inc': { 'sa_count': 1 }}, {'sa_count': 1}) tpc_id = '2%07d' % db_pk['sa_count'] message = '新建' else: tpc_id = user_data['tpc_id'] message = '修改' try: update_set = { 'tpc_id': tpc_id, 'tpc_name': user_data['tpc_name'], 'title': user_data['title'], 'title2': user_data['title2'], 'description': user_data['description'], 'note': user_data['note'], 'last_tick': int(time.time()), # 更新时间戳 'image': user_data['image'].split(','), # 图片 'price': int(float(user_data['price']) * 100), # 单位: 分 'status': 'SAVED', # 审核状态: SAVED 已修改未提交 WAIT 提交等待审核 PASS 审核通过 NOGO 审核拒绝 } except ValueError: return render.info('请在相应字段输入数字!') r2 = db.topic_store.find_one_and_update( { 'tpc_id': tpc_id, 'mch_id': mch_id }, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), message), } # 纪录操作历史 }, upsert=True) if r2 and r2.get('status') != 'SAVED': object_helper.topic_change_status(tpc_id, 'SAVED', u'专辑修改') return render.info('成功保存!', '/mch/topic_store')
def GET(self): if helper.logged(helper.PRIV_DELIVERY, 'DELVERY_ORDER'): render = helper.create_render(globals={'str': str}) param = web.input(status='') if param.status == '': return render.info('错误的参数!') # 查找门店 db_shop = helper.get_shop_by_uid() condition = { 'shop': ObjectId(db_shop['shop']), 'runner.uname': helper.get_session_uname(), } if param.status == 'DISPATCH': condition['status'] = 'DISPATCH' elif param.status == 'ONROAD': condition['status'] = 'ONROAD' elif param.status == 'COMPLETE': condition['status'] = 'COMPLETE' else: condition['status'] = { '$nin': ['COMPLETE', 'DISPATCH', 'ONROAD', 'DUE', 'TIMEOUT'] } if param.status in ['COMPLETE']: tday = helper.time_str(format=1) begin_d = '%s 00:00:00' % tday end_d = '%s 23:59:59' % tday begin_t = int( time.mktime(time.strptime(begin_d, "%Y-%m-%d %H:%M:%S"))) end_t = int( time.mktime(time.strptime(end_d, "%Y-%m-%d %H:%M:%S"))) condition['$and'] = [{ 'b_time': { '$gt': begin_t } }, { 'b_time': { '$lt': end_t } }] db_order = db.order_app.find(condition, { 'order_id': 1, 'status': 1, 'address': 1, 'history': 1 }).sort([('_id', 1)]) return render.delivery_order(helper.get_session_uname(), helper.get_privilege_name(), db_order, helper.ORDER_STATUS, param.status) else: raise web.seeother('/')
def POST(self): if not helper.logged(helper.PRIV_MCH, 'OBJ_STORE'): raise web.seeother('/') mch_id = helper.get_session_mch_id() render = helper.create_render() user_data = web.input(exam_id='', obj_id='', correct=[], option=[]) #print user_data if user_data.obj_id.strip() == '': return render.info('obj_id不能为空!') if user_data.question.strip() == '': return render.info('题目内容不能为空!') if user_data['exam_id'] == 'n/a': # 新建 db_pk = db.user.find_one_and_update({'uname': 'settings'}, {'$inc': { 'pk_count': 1 }}, {'pk_count': 1}) exam_id = 'ex%07d' % db_pk['pk_count'] message = '新建' else: exam_id = user_data['exam_id'] message = '修改' try: update_set = { 'obj_id': user_data['obj_id'], 'question': user_data['question'], 'correct': user_data['correct'], 'option': user_data['option'], 'score': int(user_data['score']), 'available': int(user_data['available']), 'last_tick': int(time.time()), # 更新时间戳 } except ValueError: return render.info('请在相应字段输入数字!') db.exam_info.update_one( { 'exam_id': exam_id, 'mch_id': mch_id }, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), message), } # 纪录操作历史 }, upsert=True) return render.info('成功保存!', '/mch/exam?obj_id=%s' % user_data['obj_id'])
def POST(self): # 提交订货单,json返回 web.header("Content-Type", "application/json") if helper.logged(helper.PRIV_USER): user_data = web.input(cart='') if user_data.cart == '': return json.dumps({'ret': -1, 'msg': '参数错误'}) # 查找shop db_shop = helper.get_shop_by_uid() #print user_data.cart cart = json.loads(user_data.cart) if len(cart) == 0: return json.dumps({'ret': -1, 'msg': '无数据'}) order = { 'type': 'BOOK', # 订货单 'status': 'WAIT', 'shop_from': '', # 发货点未知 'shop_to': db_shop['shop'], # 收货店 'cart': [], 'history': [(helper.time_str(), helper.get_session_uname(), '建立订货单')] } # item = [ product_id, num, name, cost_price] # k - num 库存数量 # u - num 称重 for item in cart: new_item = { 'product_id': item[0], 'num': item[1], 'name': item[2], 'cost_price': item[3], } # 加入cart order['cart'].append(new_item) db.order_stock.insert_one(order) return json.dumps({ # 返回结果, 'ret': 0, 'data': { 'cart_num': len(order['cart']), } }) else: return json.dumps({'ret': -3, 'msg': '无权限访问'})
def POST(self): # 发货处理 if helper.logged(helper.PRIV_USER, 'DELVERY_ORDER'): render = helper.create_render() user_data = web.input(order='', next_status='') if '' in (user_data.order, user_data.next_status): return render.info('参数错误!') # 查找门店 db_shop = helper.get_shop_by_uid() # 更新订单状态,进入派送 r = db.order_app.find_one_and_update( { 'order_id': user_data.order, 'shop': db_shop['shop'], 'status': { '$ne': user_data.next_status }, }, { '$set': { 'status': user_data.next_status, 'man': 0, 'comment': '', }, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), u'状态转换为' + user_data.next_status) } }, { '_id': 1, 'status': 1, 'uname': 1 }) if r: # 推送通知 if len(r['uname']) == 11 and r['uname'][0] == '1': #if user_data.next_status=='DISPATCH': # text = '您的订单已拣货完成,准备派送。' if user_data.next_status == 'ONROAD': text = '您的订单开始派送,请等待收货。' #elif user_data.next_status=='COMPLETE': # text = '您的订单派送成功。' else: text = None if text != None: jpush.jpush(text, r['uname']) return render.info('成功保存!', '/delivery/order?status=' + r['status']) else: raise web.seeother('/')
def obj_change_status(obj_id, status, comment='审核状态修改', check_comment=''): update_set = {'status': status} if len(check_comment) > 0: update_set['check_comment'] = check_comment db.obj_store.update_one( {'obj_id': obj_id}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), comment), } # 纪录操作历史 })
def POST(self): if helper.logged(helper.PRIV_USER,'PLAT_PT_STORE'): render = helper.create_render() user_data=web.input(region_id=[],title='', tuan_size='', price='',tuan_price='',ref_price='', shop_online=[]) if '' in (user_data.title, user_data.tuan_size, user_data.price, user_data.tuan_price, user_data.ref_price): return render.info('必填参数不能为空!') if user_data.region_id==[]: return render.info('区域参数不能为空!') db.pt_store.insert_one({ 'region_id' : user_data['region_id'], 'tuan_id' : 't%s%s' % (helper.time_str(format=2)[2:],helper.my_rand(5)), 'title' : user_data['title'], 'desc' : user_data['desc'], 'tuan_size' : int(user_data['tuan_size']), 'price' : '%.2f' % float(user_data['price']), 'tuan_price' : '%.2f' % float(user_data['tuan_price']), 'ref_price' : '%.2f' % float(user_data['ref_price']), 'expire_time': user_data['expire_time'], 'expire_tick': int(time.mktime(time.strptime(user_data['expire_time'],"%Y-%m-%d")))+3600*24, 'volume' : random.randint(150,200), 'promote' : int(user_data['promote']), 'sale_out' : int(user_data['sale_out']), 'sort_weight': int(user_data['sort_weight']), 'image' : user_data['image'].split(','), 'note' : user_data['note'], 'online' : user_data['shop_online'], 'history' : [(helper.time_str(), helper.get_session_uname(), '新建活动')], # 纪录操作历史 }) db.base_image.update_many({'image':{'$in':user_data['image'].split(',')}},{'$inc':{'refer':1}}) return render.info('成功保存!','/plat/pt_store') else: raise web.seeother('/')
def dir_copy(source_dir, target_id=''): if source_dir=='': return None if target_id=='': r0 = db.pages.find_one({'_id' : ObjectId(source_dir)}) if r0 is None: return None if r0['page_type']!=1: # 不是目录,不复制 return None c = r0.copy() c.pop('_id') c['dir_name'] = c['dir_name']+u'(副本)' c['available'] = 0 c['history'] = [(helper.time_str(), 'dir copy', 'dir copy')] target_id = db.pages.insert_one(c) target_id = str(target_id.inserted_id) r1 = db.pages.find({'parent_id' : source_dir}) for i in r1: c = i.copy() c.pop('_id') c['parent_id'] = target_id c['available'] = 0 c['history'] = [(helper.time_str(), 'copy', 'copy')] d = db.pages.insert_one(c) d = str(d.inserted_id) if i['page_type']==1: # 目录 dir_copy(str(i['_id']), d) elif i['page_type']==0: # 页面,拷贝nodes nodes_copy(str(i['_id']), i['start_node'], d) return target_id
def process_file(file_name, action): global cnt, wrn f = open(file_name) while True: line = f.readline().strip() if not line: break #line2 = line.decode('gbk').encode('utf-8').split('\t') # for windows / Office export line2 = line.split('\t') # for deepin linux / WPS export if len(line2) > 3 or len(line2) < 3: print 'WARNING: ', file_name, line2 wrn += 1 if action == 'do': note_code = line2[0].strip().upper() version = line2[1].strip() r1 = db.notes.find_one({ 'note_code': note_code, 'version': version }) if r1: # 有重复 print 'WARNING REPEAT: ', file_name, note_code wrn += 1 continue line3 = line2[2].strip() line3 = line3[1:] if line3[0] == '"' else line3 line3 = line3[:-1] if line3[-1] == '"' else line3 update_set = { 'note_code': note_code, 'version': version, 'note_content': line3, 'last_tick': int(time.time()), # 更新时间戳 'weight': 1, 'history': [(helper.time_str(), 'import_note.py', '导入')] } r2 = db.notes.insert_one(update_set) #print update_set cnt += 1 f.close()
def POST(self): if helper.logged(helper.PRIV_USER, 'PLAT_BASE_SKU'): render = helper.create_render() user_data = web.input(base_sku='', sku_name='', abstract='', available=1, fresh_time=0, original='', note='') #print 'image: ', user_data.image if user_data.sku_name == '': return render.info('品名不能为空!') update_set = { 'name': user_data['sku_name'], 'abstract': user_data['abstract'], #'ref_price' : '%.2f' % float(user_data['ref_price']), #'min_price' : '%.2f' % float(user_data['min_price']), #'max_price' : '%.2f' % float(user_data['max_price']), 'fresh_time': int(user_data['fresh_time']), #'image' : user_data['image'].split(','), 'original': user_data['original'], 'available': int(user_data['available']), 'note': user_data['note'], } # 如果没有更新图片,就不更新图片 2015-09-04 if len(user_data['image'].strip()) > 0: update_set['image'] = user_data['image'].split(',') #print update_set db.base_sku.update_one({'_id': ObjectId(user_data['base_sku'])}, {'$set': update_set}) db.base_sku.update_one( {'_id': ObjectId(user_data['base_sku'])}, { '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '修改'), # 纪录操作历史 } }) return render.info('成功保存!', '/plat/base_sku') else: raise web.seeother('/')
def POST(self): if helper.logged(helper.PRIV_USER, 'PLAT_BASE_SKU'): render = helper.create_render() user_data = web.input(sku_name='', abstract='', available=1, fresh_time=0, original='', note='') if user_data.sku_name == '': return render.info('品名不能为空!') db.base_sku.insert_one({ 'name': user_data['sku_name'], 'abstract': user_data['abstract'], #'ref_price' : '%.2f' % float(user_data['ref_price']), #'min_price' : '%.2f' % float(user_data['min_price']), #'max_price' : '%.2f' % float(user_data['max_price']), 'fresh_time': int(user_data['fresh_time']), 'original': user_data['original'], 'available': int(user_data['available']), 'image': user_data['image'].split(','), 'note': user_data['note'], 'refer': 0, 'history': [(helper.time_str(), helper.get_session_uname(), '新建')], # 纪录操作历史 }) db.base_image.update_many( {'image': { '$in': user_data['image'].split(',') }}, {'$inc': { 'refer': 1 }}) return render.info('成功保存!', '/plat/base_sku') else: raise web.seeother('/')
def POST(self): if not helper.logged(helper.PRIV_USER, 'MERCHANT'): raise web.seeother('/') render = helper.create_render() user_data = web.input(mch_id='', mch_name='') if user_data.mch_name.strip() == '': return render.info('商家名不能为空!') if user_data['mch_id'] == 'n/a': # 新建 db_pk = db.user.find_one_and_update({'uname': 'settings'}, {'$inc': { 'pk_count': 1 }}, {'pk_count': 1}) mch_id = '0%07d' % db_pk['pk_count'] message = '新建' else: mch_id = user_data['mch_id'] message = '修改' try: update_set = { 'mch_id': mch_id, 'mch_name': user_data['mch_name'], 'mch_type': user_data['mch_type'], 'note': user_data['note'], 'available': int(user_data['available']), 'last_tick': int(time.time()), # 更新时间戳 } except ValueError: return render.info('请在相应字段输入数字!') db.merchant.update_one( {'mch_id': mch_id}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), message), } # 纪录操作历史 }, upsert=True) return render.info('成功保存!', '/plat/merchant')
def GET(self): if not helper.logged(helper.PRIV_USER, 'TNM_DATA'): raise web.seeother('/') render = helper.create_render() user_data = web.input(rule_id='') if user_data.rule_id == '': return render.info('参数错误!') r1 = db.tnm.find_one({'_id': ObjectId(user_data.rule_id)}) if r1 is None: return render.info('rule_id错误!') r1.pop('_id') r1['tnm_name'] = r1['tnm_name'] + ' - ' + helper.my_rand(4).upper() r1['available'] = 0 r1['history'] = [(helper.time_str(), helper.get_session_uname(), '复制')] r2 = db.tnm.insert_one(r1) return render.info('复制成功!复制后的病种名为:' + r1['tnm_name'].encode('utf-8'), '/plat/tnm')
def trainToDB(): try: listOPosts,listClasses = loadDataFromDB() myVocabList = createVocabList(listOPosts) trainMat=[] for postinDoc in listOPosts: trainMat.append(bagOfWords2VecMN(myVocabList, postinDoc)) pV,pAb = trainNB2(array(trainMat),array(listClasses)) for x in pV.keys(): pV[x] = pV[x].tolist() db.bayes_data.update_one({'train_data' : 'train_data'}, { '$set' : { 'pV' : pV, 'pAb' : pAb, 'vocabList' : myVocabList, 'time_t' : helper.time_str(), }}, upsert=True) return True except: print 'ERROR: train and save data to DB fail.' return None
def POST(self): # 修改盘点数量,json 返回 web.header("Content-Type", "application/json") if helper.logged(helper.PRIV_USER, 'POS_AUDIT'): user_data = web.input(product_id='', audit_num='') # if user_data.product_id == '': return json.dumps({'ret': -1, 'msg': '参数错误'}) # 查找shop db_shop = helper.get_shop_by_uid() if user_data.product_id[0] != 'w' and user_data.product_id[ 2] == '2': # 称重sku,可能会是浮点数 audit_num = float(user_data.audit_num) else: audit_num = int(user_data.audit_num) r = db.inventory.update_one( { 'product_id': user_data.product_id, 'shop': db_shop['shop'], }, { '$set': { 'audit': audit_num }, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '记录盘点数量为 %.2f' % float(audit_num)) }, }) if r.matched_count > 0: return json.dumps({'ret': 0, 'num': audit_num}) else: return json.dumps({'ret': -1, 'msg': '未找到库存数据!'}) else: return json.dumps({'ret': -3, 'msg': '无权限访问'})
def POST(self): if helper.logged(helper.PRIV_USER, 'PLAT_PT_STORE'): render = helper.create_render() user_data = web.input(region_id=[], title='', tuan_size='', price='', tuan_price='', ref_price='', shop_online=[]) if '' in (user_data.title, user_data.tuan_size, user_data.price, user_data.tuan_price, user_data.ref_price): return render.info('必填参数不能为空!') if user_data.region_id == []: return render.info('区域参数不能为空!') update_set = { 'region_id': user_data['region_id'], 'title': user_data['title'], 'desc': user_data['desc'], 'tuan_size': int(user_data['tuan_size']), 'price': '%.2f' % float(user_data['price']), 'tuan_price': '%.2f' % float(user_data['tuan_price']), 'ref_price': '%.2f' % float(user_data['ref_price']), 'expire_time': user_data['expire_time'], 'expire_tick': int( time.mktime( time.strptime(user_data['expire_time'], "%Y-%m-%d"))) + 3600 * 24, 'promote': int(user_data['promote']), 'sale_out': int(user_data['sale_out']), 'sort_weight': int(user_data['sort_weight']), 'note': user_data['note'], 'online': user_data['shop_online'], } # 如果没有更新图片,就不更新图片 2015-09-04 if len(user_data['image'].strip()) > 0: update_set['image'] = user_data['image'].split(',') #print update_set db.pt_store.update_one({'tuan_id': user_data['tuan_id']}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '修改') }, }) return render.info('成功保存!', '/plat/pt_store') else: raise web.seeother('/')
def POST(self): web.header("Content-Type", "application/json") if not helper.logged(helper.PRIV_USER, 'DATA_MODIFY'): return json.dumps({'ret': -1, 'msg': '无访问权限'}) param = web.input(page_id='', element_data='', link_data='') if '' in (param.page_id, param.element_data, param.link_data): return json.dumps({'ret': -1, 'msg': '参数错误'}) element_data = json.loads(param.element_data) link_data = json.loads(param.link_data) #print element_data #print link_data r1 = db.pages.find_one({'_id': ObjectId(param['page_id'])}) if r1 is None: return json.dumps({'ret': -2, 'msg': 'page_id参数错误'}) # 处理节点 #{ # u'original_text': u'See Suggested Regimens (MANT-A)', # u'angle': 0, # u'inPorts': [u'i'], # u'id': u'cc2b347f-3f6d-470b-b93c-16602765f657', # u'node_id': u'x5', # u'outPorts': [u'o'], # u'attrs': { # u'.label': {u'text': u'See\nSuggested\nRegimens\n(MANT-A)', u'ref-y': 5} # }, # u'position': {u'y': 202, u'x': 245}, # u'z': 9, # u'type': u'devs.Atomic', # u'ports': { # u'items': [{u'group': u'in', u'id': u'i', u'attrs': {u'.port-label': {u'text': u'i'}}}, # {u'group': u'out', u'id': u'o', u'attrs': {u'.port-label': {u'text': u'o'}}}], # u'groups': {u'out': {u'position': {u'name': u'right'}, u'attrs': {u'.port-label': {u'fill': u'#000'}, # u'.port-body': {u'magnet': True, u'stroke': u'#000', u'r': 10, u'fill': u'#fff'}}, # u'label': {u'position': {u'args': {u'y': 10}, u'name': u'right'}}}, u'in': {u'position': {u'name': u'left'}, # u'attrs': {u'.port-label': {u'fill': u'#000'}, u'.port-body': {u'magnet': True, u'stroke': u'#000', # u'r': 10, u'fill': u'#fff'}}, u'label': {u'position': {u'args': {u'y': 10}, u'name': u'left'}}}} # }, # u'size': {u'width': 80, u'height': 66} #} alert_msg = '' start_node = None nodes_dict = {} # 用于添加链接时查询 node_list = [] # 记录所有节点的ObjectId,用于检查删除的节点 # >>>>>>>>>>>>>>> 此循环处理中不可以跳出返回,否则会数据保存不完整 <<<<<<<<<<<<<< for i in element_data: # #print i original_text = i['original_text'].strip() if original_text == '0': # 起始节点 start_node = i['node_id'] node_type = 0 if original_text in ['0', '*', '+'] else 1 if '@' in original_text: # 检查是否存在调转 jump_to_page = get_page_id(original_text) if jump_to_page: r5 = db.pages.find_one({'page_code': jump_to_page}) if r5 is None: alert_msg += (u'跳转的页面(%s)不存在!<br>' % jump_to_page) else: if str(r5['_id']) == param['page_id']: # 检查是否跳到自己 original_text = '@未知页面' alert_msg += (u'不能跳转到当前页面(%s)!<br>' % jump_to_page) original_text = original_text.upper() # 跳转页面全部大写 if original_text[0] == '@': # 是否是调转节点 node_type = 0 # 调整节点也是虚节点 # 处理纠错结果 # 2019-02-12 node_question = i.get('node_question', { 'check': False, 'correct': [] }) # 节点更新内容 node = { 'page_id': param['page_id'], 'node_type': node_type, 'parent': [], 'child': [], 'text': original_text, #'node_id' : i['node_id'] 'position': i['position'], # 记录节点在页面的位置,方便复原 'node_prop': i.get('node_prop', ''), # 节点属性 2018-08-14 'node_weight': i.get('node_weight', '1'), # 节点权重 2018-08-14 'node_question': node_question['check'], # 2019-02-12 } if i['node_id'] == '': #说明是新节点 r3 = db.nodes.insert_one(node) node['_id'] = r3.inserted_id print 'NEW: ', str(r3.inserted_id) else: r2 = db.nodes.update_one({'_id': ObjectId(i['node_id'])}, {'$set': node}, upsert=True) if r2.upserted_id is not None: # 更新时插入 node['_id'] = r2.upserted_id print 'UPSERT: ', str(r2.inserted_id) else: node['_id'] = ObjectId(i['node_id']) # 更新纠错记录状态 if node_question['check'] == False and len( node_question['correct']) > 0: db.correct.update_many( { 'node_id': i['node_id'], 'status': 'WAIT' }, {'$set': { 'status': 'PASS' }}) nodes_dict[i['id']] = node node_list.append(node['_id']) #print node # 处理连接 #{ # u'target': { # u'id': u'c802b6c6-a694-4b18-aa3a-6dfa436f8637', # u'port': u'i' # }, # u'vertices': [ # {u'y': 112, u'x': 136}, # {u'y': 114, u'x': 232} # ], # u'source': { # u'id': u'bac2de56-266c-4428-9096-29f46d172ead', # u'port': u'o' # }, # u'attrs': { # u'.marker-target': {u'd': u'M 10 0 L 0 5 L 10 10 z', u'fill': u'#4B4F6A'} # }, # u'z': 3, # u'type': u'devs.Link', # u'id': u'fdf956b4-159a-4776-bd2b-cc9824ab8f28' #} db.connect.remove({'page_id': param['page_id']}) # 先删除所有连线 for i in link_data: nodes_dict[i['target']['id']]['parent'].append( str(nodes_dict[i['source']['id']]['_id'])) nodes_dict[i['source']['id']]['child'].append( str(nodes_dict[i['target']['id']]['_id'])) db.connect.insert_one({ # 保存连线数据 'page_id': param['page_id'], 'source': str(nodes_dict[i['source']['id']]['_id']), 'target': str(nodes_dict[i['target']['id']]['_id']), 'vertices': i.get('vertices', []) }) # 更新到db for i in nodes_dict.values(): db.nodes.update_one({'_id': i['_id']}, {'$set': i}) # 删除页面中未更新的,说明这次删除的 r4 = db.nodes.find({'page_id': param['page_id']}) for i in r4: if i['_id'] not in node_list: print 'REMOVE: ', str(i['_id']) db.nodes.delete_one({'_id': i['_id']}) # 更新页面起始节点 db.pages.update_one({'_id': ObjectId(param['page_id'])}, { '$set': { 'start_node': start_node }, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), '保持规则树') } }) if alert_msg == '': return json.dumps({'ret': 0, 'msg': '成功保存'}) else: return json.dumps({'ret': 1, 'msg': alert_msg})
def POST(self): if not helper.logged(helper.PRIV_USER, 'TALKBOT'): raise web.seeother('/') render = helper.create_render() user_data = web.input(rule_id='', rule_name='') rule_name = user_data.rule_name.strip() if rule_name == '': return render.info('规则名不能为空!') # 排除规则同名 find_condition = { 'rule_name': rule_name, } if user_data['rule_id'] == 'n/a': # 新建 rule_id = None message = '新建' else: rule_id = ObjectId(user_data['rule_id']) message = '修改' find_condition['_id'] = {'$ne': rule_id} # 排除自己 r1 = db.talkbot.find_one(find_condition) if r1 is not None: return render.info('规则名已存在,不能重复!') try: update_set = { 'rule_name': rule_name, 'question': user_data['question'], 'reply': user_data['reply'], 'reply_type': int(user_data['reply_type']), 'available': int(user_data['available']), 'last_tick': int(time.time()), # 更新时间戳 } except ValueError: return render.info('请在相应字段输入数字!') if rule_id is None: update_set['history'] = [(helper.time_str(), helper.get_session_uname(), message)] r2 = db.talkbot.insert_one(update_set) else: db.talkbot.update_one( {'_id': rule_id}, { '$set': update_set, '$push': { 'history': (helper.time_str(), helper.get_session_uname(), message), } # 纪录操作历史 }) # 刷新规则 db.sys_refs.update_one({'name': 'talkbot_update'}, {'$set': { 'last_tick': int(time.time()) }}, upsert=True) # 重新计算规则 from talkbot_lib import gensim_index if not gensim_index.index_from_db(db): return render.info( '规则计算出错!', '/plat/talkbot_edit?rule_id=' + user_data['rule_id']) else: return render.info('成功保存!', '/plat/talkbot')
# # 1. 检查ftp目录下的文件 # 2. 按归属放入报警队列alert_queue # import sys import gc import time, shutil, os import helper from config import setting db = setting.db_web if __name__ == '__main__': print "DETECTOR: %s started" % helper.time_str() gc.set_threshold(300, 5, 5) try: _count = _dir = _ins = 0 while 1: # 检查ftp目录 _count += 1 ftp_dir = os.listdir(setting.ftp_path) for ip in ftp_dir: _dir += 1 db_cam = db.cams.find_one({'cam_ip': ip}, { 'motion_detect': 1, 'owner': 1 })