示例#1
0
    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')
示例#2
0
    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('/')
示例#3
0
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
        },
    })
示例#4
0
文件: voice.py 项目: jack139/fair
    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('/')
示例#5
0
	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('/')
示例#6
0
文件: pretty.py 项目: jack139/pretty
    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)
示例#7
0
    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('/')
示例#8
0
    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': '无权限访问'})
示例#9
0
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()
示例#10
0
文件: home.py 项目: jack139/fair
 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})
示例#11
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': '无访问权限'})
示例#12
0
    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')
示例#13
0
    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('/')
示例#14
0
    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'])
示例#15
0
    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': '无权限访问'})
示例#16
0
    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('/')
示例#17
0
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),
            }  # 纪录操作历史
        })
示例#18
0
	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('/')
示例#19
0
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
示例#20
0
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()
示例#21
0
    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('/')
示例#22
0
    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('/')
示例#23
0
    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')
示例#24
0
文件: tnm_copy.py 项目: jack139/cnnc
    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')
示例#25
0
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
示例#26
0
    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': '无权限访问'})
示例#27
0
    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('/')
示例#28
0
文件: page_map.py 项目: jack139/cnnc
    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})
示例#29
0
    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')
示例#30
0
#
# 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
                })