def add(self, formdata, bas_ids=[], **kwargs): try: node = models.TrNode() node.id = formdata.node_id if 'node_id' in formdata else utils.get_uuid( ) node.node_name = formdata.node_name node.node_type = utils.safeunicode( formdata.get('node_type', 'other')) node.rule_id = formdata.rule_id node.node_desc = formdata.get('node_desc', '') node.sync_ver = tools.gen_sync_ver() self.db.add(node) for bas_id in bas_ids: basnode = models.TrBasNode() basnode.bas_id = bas_id basnode.node_id = node.id basnode.sync_ver = tools.gen_sync_ver() self.db.add(basnode) self.add_oplog(u'新增区域信息:%s' % utils.safeunicode(formdata.node_name)) self.db.commit() return node except Exception as err: self.db.rollback() logger.exception(err, tag='node_add_error') self.last_error = u'区域创建失败:%s' % utils.safeunicode(err) return False
def update(self, formdata, bas_ids=[], **kwargs): try: node = self.get_safe_node(formdata.id) node.node_type = utils.safeunicode( formdata.get('node_type', 'other')) node.node_name = formdata.node_name node.node_desc = formdata.get('node_desc', '') if 'rule_id' in formdata: node.rule_id = formdata.rule_id node.sync_ver = tools.gen_sync_ver() self.db.query(models.TrBasNode).filter_by(node_id=node.id).delete() for bas_id in bas_ids: basnode = models.TrBasNode() basnode.bas_id = bas_id basnode.node_id = node.id basnode.sync_ver = tools.gen_sync_ver() self.db.add(basnode) self.add_oplog(u'修改区域信息:%s' % utils.safeunicode(formdata.node_name)) self.db.commit() return node except Exception as err: self.db.rollback() logger.exception(err, tag='node_update_error') self.last_error = u'修改区域失败:%s' % utils.safeunicode(err) return False
def post(self): nodes = [(n.id, n.node_desc) for n in self.db.query(models.TrNode)] products = [(p.id, p.product_name) for p in self.db.query(models.TrProduct)] form = operator_form.operator_add_form(nodes, products) if not form.validates(source=self.get_params()): return self.render('opr_form.html', form=form, rules=self.get_arguments('rule_item')) if self.db.query(models.TrOperator.id).filter_by( operator_name=form.d.operator_name).count() > 0: return self.render('opr_form.html', form=form, msg=u'操作员已经存在', rules=self.get_arguments('rule_item')) operator = models.TrOperator() operator.id = utils.get_uuid() operator.operator_name = form.d.operator_name operator.operator_pass = md5(form.d.operator_pass.encode()).hexdigest() operator.operator_type = 1 operator.operator_desc = form.d.operator_desc operator.operator_status = form.d.operator_status operator.sync_ver = tools.gen_sync_ver() self.db.add(operator) self.add_oplog(u'新增操作员信息:%s' % utils.safeunicode(operator.operator_name)) for node_id in self.get_arguments('operator_nodes'): onode = models.TrOperatorNodes() onode.operator_name = form.d.operator_name onode.node_id = node_id onode.sync_ver = tools.gen_sync_ver() self.db.add(onode) for product_id in self.get_arguments('operator_products'): oproduct = models.TrOperatorProducts() oproduct.operator_name = form.d.operator_name oproduct.product_id = product_id oproduct.sync_ver = tools.gen_sync_ver() self.db.add(oproduct) for path in self.get_arguments('rule_item'): item = permit.get_route(path) if not item: continue rule = models.TrOperatorRule() rule.id = utils.get_uuid() rule.operator_name = operator.operator_name rule.rule_name = item['name'] rule.rule_path = item['path'] rule.rule_category = item['category'] rule.sync_ver = tools.gen_sync_ver() self.db.add(rule) self.db.commit() for rule in self.db.query(models.TrOperatorRule).filter_by( operator_name=operator.operator_name): permit.bind_opr(rule.operator_name, rule.rule_path) self.redirect('/admin/operator', permanent=False)
def recharge(self, formdata, **kwargs): try: rfee = utils.yuan2fen(formdata.fee_value) if rfee <= 0: raise ValueError(u'充值金额必须大于0') agency = self.db.query(models.TrAgency).get(formdata.agency_id) agency.amount += rfee aorder = models.TrAgencyOrder() aorder.id = utils.get_uuid() aorder.agency_id = agency.id aorder.fee_type = 'recharge' aorder.fee_value = rfee aorder.fee_total = agency.amount aorder.fee_desc = u'代理商 (%s) 充值' % utils.safeunicode(agency.agency_name) aorder.create_time = utils.get_currtime() aorder.sync_ver = tools.gen_sync_ver() self.db.add(aorder) self.add_oplog(u'代理商(%s)充值' % utils.safeunicode(agency.agency_name)) self.db.commit() return agency except Exception as err: self.db.rollback() logger.exception(err, tag='agency_recharge_error') self.last_error = u'代理商充值失败:%s' % utils.safeunicode(err) return False
def password(self, formdata, **kwargs): """用户密码修改 :param formdata: 密码修改参数表 :type formdata: dict formdata params: :param account_number: 用户账号 :type account_number: string :param password: 用户新密码 :type password: string """ try: account_number = self.parse_arg(formdata, 'account_number', rule=rules.not_null) password = self.parse_arg(formdata, 'password', rule=rules.not_null) print password account = self.db.query(models.TrAccount).get(account_number) account.password = self.aes.encrypt(password) account.sync_ver = tools.gen_sync_ver() node_id = self.db.query(models.TrCustomer.node_id).filter(models.TrCustomer.customer_id == models.TrAccount.customer_id, models.TrAccount.account_number == account_number).scalar() self.add_oplog(u'修改用户%s密码 ' % account_number) self.db.commit() dispatch.pub(CACHE_DELETE_EVENT, account_cache_key(account_number), async=True) return True except Exception as err: self.db.rollback() self.last_error = u'用户修改密码失败:%s' % utils.safeunicode(err.message) logger.error(self.last_error, tag='account_uppwd_error', username=formdata.get('account_number')) return False
def add_ticket(self, ticket): ticket['id'] = utils.get_uuid() ticket['sync_ver'] = tools.gen_sync_ver() table = models.TrTicket.__table__ data = {k.name:ticket.get(k.name, '') for k in table.columns} with self.dbengine.begin() as conn: conn.execute(table.insert().values(**data))
def post(self): params = self.get_params() domain_code = params.pop('domain_code') domain = self.db.query( models.TrDomain).filter_by(domain_code=domain_code).first() for attr_name in params: if attr_name in ('active', 'submit', 'domain_code', 'tpl_name'): continue domain_attr = self.db.query(models.TrDomainAttr).filter_by( domain_code=domain_code, attr_name=attr_name).first() if not domain_attr: domain_attr = models.TrDomainAttr() domain_attr.id = tools.gen_num_id(16) domain_attr.domain_code = domain_code domain_attr.attr_name = attr_name domain_attr.attr_value = self.get_argument(attr_name) domain_attr.attr_desc = '' domain_attr.sync_ver = tools.gen_sync_ver() self.db.add(domain_attr) else: domain_attr.attr_value = self.get_argument(attr_name) dispatch.pub(db_cache.CACHE_SET_EVENT, settings.wlanattr_cache_key(domain_attr.attr_name), domain_attr.attr_value, 600) self.add_oplog(u'操作员(%s)修改wlan参数' % self.current_user.username) self.db.commit() self.redirect('/admin/wlan/domain/detail?domain_id=%s' % domain.id)
def test_add_update_delete_bas(self): node = self.add_node() bas = None with make_db(self.db) as db: serv = BasService(db, self.aes, config=self.config) ret = serv.add( Storage({ 'ip_addr': '127.0.0.2', 'nas_id': '12121211', 'nodes': [node.id], 'dns_name': '', 'bas_name': 'taurusxac', 'bas_secret': '123456', 'vendor_id': '0', 'coa_port': '3799', 'sync_ver': tools.gen_sync_ver() })) if hasattr(serv, 'last_error'): print serv.last_error bas = self.warp(ret) raise bas or AssertionError with make_db(self.db) as db: serv = BasService(db, self.aes, config=self.config) ret = serv.update( Storage({ 'id': bas.id, 'ip_addr': '127.1.0.1', 'nas_id': '12121211', 'nodes': [node.id], 'dns_name': '', 'bas_name': 'taurusxac2', 'bas_secret': '123456', 'vendor_id': '0', 'coa_port': '3799', 'sync_ver': tools.gen_sync_ver() })) if hasattr(serv, 'last_error'): print serv.last_error bas = self.warp(ret) raise bas or AssertionError with make_db(self.db) as db: serv = BasService(db, self.aes, config=self.config) ret = serv.delete(bas.id) if hasattr(serv, 'last_error'): print serv.last_error raise ret or AssertionError return
def update(self, formdata, **kwargs): """用户账号策略修改 :param formdata: 密码修改参数表 :type formdata: dict formdata params: :param account_number: 用户账号 :type account_number: string :param ip_address: 用户IP地址 :type ip_address: string - x.x.x.x :param install_address: 用户安装地址 :type install_address: string :param domain: 用户域,对BRAS的特定扩展 :type domain: string :param user_concur_number: 用户在线数限制 :type user_concur_number: int :param bind_mac: 用户是否绑定mac :type bind_mac: int - 0 不绑定 1 绑定 :param bind_vlan: 用户是否绑定vlan :type bind_vlan: int 0 不绑定 1 绑定 :param account_desc: 用户描述 :type account_desc: string """ try: account_number = self.parse_arg(formdata, 'account_number', rule=rules.not_null) user_concur_number = self.parse_arg(formdata, 'user_concur_number', rule=rules.is_number) bind_mac = self.parse_arg(formdata, 'bind_mac', rule=rules.is_number) bind_vlan = self.parse_arg(formdata, 'bind_vlan', rule=rules.is_number) ip_address = self.parse_arg(formdata, 'ip_address') install_address = self.parse_arg(formdata, 'install_address') domain = self.parse_arg(formdata, 'domain') account_desc = self.parse_arg(formdata, 'account_desc') account = self.db.query(models.TrAccount).get(account_number) node_id = self.db.query(models.TrCustomer.node_id).filter(models.TrCustomer.customer_id == models.TrAccount.customer_id, models.TrAccount.account_number == account_number).scalar() if ip_address is not None: account.ip_address = ip_address if install_address is not None: account.install_address = install_address account.user_concur_number = user_concur_number account.bind_mac = bind_mac account.bind_vlan = bind_vlan if domain is not None: account.domain = domain if account_desc is not None: account.account_desc = account_desc account.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改上网账号信息:%s' % account.account_number) self.db.commit() dispatch.pub(CACHE_DELETE_EVENT, account_cache_key(account.account_number), async=True) return True except Exception as err: self.db.rollback() self.last_error = u'用户修改失败:%s' % utils.safeunicode(err.message) logger.error(self.last_error, tag='account_update_error', username=formdata.get('account_number')) return False return
def update_billing(self, billing): billing['sync_ver'] = tools.gen_sync_ver() acctount_table = models.TrAccount.__table__ acctount_attr_table = models.TrAccountAttr.__table__ online_table = models.TrOnline.__table__ with self.dbengine.begin() as conn: conn.execute(acctount_table.update().where(acctount_table.c.account_number == billing.account_number).values(time_length=billing.time_length, flow_length=billing.flow_length)) conn.execute(online_table.update().where(online_table.c.nas_addr == billing.nas_addr).where(online_table.c.acct_session_id == billing.acct_session_id).values(billing_times=billing.acct_session_time, input_total=billing.input_total, output_total=billing.output_total))
def post(self): order_id = self.get_argument('order_id') note = self.db.query( models.TrCustomerNote).filter_by(order_id=order_id).first() note.print_times = note.print_times + 1 note.sync_ver = tools.gen_sync_ver() self.add_oplog(u'打印票据:%s' % note.note_id) self.db.commit() self.render_json(code=0)
def add_oplog(self, message): ops_log = models.TrOperateLog() ops_log.id = utils.get_uuid() ops_log.operator_name = self.current_user.username ops_log.operate_ip = self.current_user.ipaddr ops_log.operate_time = utils.get_currtime() ops_log.operate_desc = message ops_log.sync_ver = tools.gen_sync_ver() self.db.add(ops_log)
def add_attr(self, pid, attr_name, attr_value, attr_desc, attr_type=0): attr = models.TrProductAttr() attr.id = utils.get_uuid() attr.product_id = pid attr.attr_type = attr_type attr.attr_name = attr_name attr.attr_value = attr_value attr.attr_desc = attr_desc attr.sync_ver = tools.gen_sync_ver() self.db.add(attr)
def add_account_fixdflows(self, account_number, flows): attr = models.TrAccountAttr() attr.id = utils.get_uuid() attr.account_number = account_number attr.attr_type = 0 attr.attr_name = 'fixd_flows' attr.attr_value = flows attr.attr_desc = '用户固定流量' attr.sync_ver = tools.gen_sync_ver() self.db.add(attr)
def post(self): form = issues_forms.issues_process_form() if not form.validates(source=self.get_params()): return self.render('base_form', form=form) iflow = models.TrIssuesFlow() iflow.id = tools.gen_num_id(16) iflow.issues_id = form.d.issues_id iflow.accept_time = utils.get_currtime() iflow.accept_status = form.d.accept_status iflow.accept_result = form.d.accept_result iflow.operator_name = self.current_user.username iflow.sync_ver = tools.gen_sync_ver() self.db.add(iflow) issues = self.db.query(models.TrIssues).get(iflow.issues_id) issues.status = iflow.accept_status issues.sync_ver = tools.gen_sync_ver() self.add_oplog(u'处理工单%s' % iflow.issues_id) self.db.commit() self.redirect('/admin/issues/detail?issues_id=%s' % iflow.issues_id)
def update(self, formdata, nodes=[], **kwargs): try: bas = self.db.query(models.TrBas).get(formdata.id) bas.ip_addr = formdata.ip_addr if 'nas_id' in formdata: bas.nas_id = formdata.nas_id if 'dns_name' in formdata: bas.dns_name = formdata.dns_name if 'bas_name' in formdata: bas.bas_name = formdata.bas_name if 'vendor_id' in formdata: bas.vendor_id = formdata.vendor_id if 'bas_secret' in formdata: bas.bas_secret = formdata.bas_secret if 'coa_port' in formdata: bas.coa_port = formdata.coa_port if 'portal_vendor' in formdata: bas.portal_vendor = formdata.portal_vendor if 'ac_port' in formdata: bas.ac_port = formdata.ac_port bas.sync_ver = tools.gen_sync_ver() self.db.query(models.TrBasNode).filter_by(bas_id=bas.id).delete() for node_id in nodes: basnode = models.TrBasNode() basnode.bas_id = bas.id basnode.node_id = node_id basnode.sync_ver = tools.gen_sync_ver() self.db.add(basnode) self.add_oplog(u'修改接入设备信息:%s' % bas.ip_addr) self.db.commit() dispatch.pub(CACHE_DELETE_EVENT, bas_cache_key(bas.nas_id), async=True) dispatch.pub(CACHE_DELETE_EVENT, bas_cache_key(bas.ip_addr), async=True) return bas except Exception as err: self.db.rollback() logger.exception(err, tag='bas_update_error') self.last_error = u'修改接入设备失败:%s' % utils.safeunicode(err) return False
def import_product(imetadata, ometadata, rate=32, imetadata20=None): """ \xe7\x89\x88\xe6\x9c\xac20\xe6\xb2\xa1\xe6\x9c\x89 free_auth \xe5\xb1\x9e\xe6\x80\xa7\xef\xbc\x8c\xe9\x9c\x80\xe8\xa6\x81\xe5\x81\x9a\xe9\xa2\x9d\xe5\xa4\x96\xe5\xa4\x84\xe7\x90\x86 """ try: results = [] with imetadata.bind.begin() as db: for row in db.execute(imetadata.tables['tr_product'].select()): item = dict(row) item['id'] = newid(item['id']) item['sync_ver'] = tools.gen_sync_ver() results.append(item) with ometadata.bind.begin() as db: db.execute(_sql('delete from tr_product')) for rs in cut_result(results, rate=rate): with ometadata.bind.begin() as db: db.execute(ometadata.tables['tr_product'].insert().values(rs)) db.execute( _sql('delete from tr_product where product_policy=6')) print '- Append into table tr_product %s rows' % len(rs) except: print 'import v211 error , try import v20' results = [] with imetadata20.bind.begin() as db: for row in db.execute(imetadata20.tables['tr_product'].select()): item = dict(row) item['id'] = newid(item['id']) item['sync_ver'] = tools.gen_sync_ver() item['free_auth'] = 0 item['free_auth_uprate'] = 0 item['free_auth_downrate'] = 0 results.append(item) with ometadata.bind.begin() as db: db.execute(_sql('delete from tr_product')) for rs in cut_result(results, rate=rate): with ometadata.bind.begin() as db: db.execute(ometadata.tables['tr_product'].insert().values(rs)) db.execute( _sql('delete from tr_product where product_policy=6')) print '- Append into table tr_product %s rows' % len(rs)
def post(self): form = print_tpl_forms.print_tpl_update_form() if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) tpl = self.db.query(models.TrPrintTemplate).get(form.d.id) tpl.tpl_name = form.d.tpl_name tpl.tpl_content = utils.safeunicode(form.d.tpl_content) tpl.sync_ver = tools.gen_sync_ver() self.db.query( models.TrPrintTemplateTypes).filter_by(tpl_id=tpl.id).delete() for tpl_type in self.get_arguments('tpl_types'): tpltype = models.TrPrintTemplateTypes() tpltype.tpl_id = tpl.id tpltype.tpl_type = tpl_type tpltype.sync_ver = tools.gen_sync_ver() self.db.add(tpltype) self.add_oplog(u'修改票据模板信息:%s' % utils.safeunicode(form.d.tpl_name)) self.db.commit() self.redirect('/admin/printtpl', permanent=False)
def post(self): form = domain_form.domain_update_vform() if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) domain = self.db.query(models.TrDomain).get(form.d.id) domain.tpl_name = form.d.tpl_name domain.domain_desc = form.d.domain_desc domain.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改域信息:%s' % domain.domain_code) self.db.commit() self.redirect('/admin/wlan/domain', permanent=False)
def post(self): areas = [ (a.id, n + ' -> ' + a.area_name) for n, a in self.get_opr_areas() ] form = builder_forms.builder_update_form(areas) if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) builder = self.db.query(models.TrBuilder).get(form.d.id) builder.builder_name = form.d.builder_name builder.builder_phone = form.d.builder_phone builder.sync_ver = tools.gen_sync_ver() self.db.query(models.TrAreaBuilder).filter_by(builder_id=builder.id).delete() for area_id in self.get_arguments('areas'): area_builder = models.TrAreaBuilder() area_builder.area_id = area_id area_builder.builder_id = builder.id area_builder.sync_ver = tools.gen_sync_ver() self.db.add(area_builder) self.add_oplog(u'修改服务人员:%s' % utils.safeunicode(form.d.builder_name)) self.db.commit() self.redirect('/admin/builder', permanent=False)
def post(self): form = charges_forms.charge_update_form() if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) charge = self.db.query(models.TrCharges).get(form.d.charge_code) charge.charge_name = form.d.charge_name charge.charge_value = utils.yuan2fen(form.d.charge_value) charge.charge_desc = form.d.charge_desc charge.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改收费项信息:%s' % utils.safeunicode(form.d.charge_name)) self.db.commit() self.redirect('/admin/charge', permanent=False)
def post(self): form = content_tpl_forms.content_tpl_update_form() if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) tpl = self.db.query(models.TrContentTemplate).get(form.d.id) tpl.tpl_type = form.d.tpl_type tpl.tpl_id = form.d.tpl_id tpl.tpl_content = form.d.tpl_content tpl.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改模板信息:%s' % form.d.tpl_type) self.db.commit() self.redirect('/admin/contenttpl', permanent=False)
def post(self): form = account_rule_forms.account_rule_update_form() if not form.validates(source=self.get_params()): return self.render('base_form.html', form=form) rule = self.db.query(models.TrAccountRule).get(form.d.id) rule.rule_name = form.d.rule_name rule.user_prefix = form.d.user_prefix rule.user_suffix_len = int(form.d.user_suffix_len) rule.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改账号生成规则信息:%s' % utils.safeunicode(form.d.rule_name)) self.db.commit() self.redirect('/admin/account_rule', permanent=False)
def event_ppmf_user_renew(self, account_number, product_id): with make_db(self.db) as db: try: account = db.query(models.TrAccount).get(account_number) product = db.query(models.TrProduct).get(product_id) if not product: logger.error(u'执行流量包月续费时,用户[%s]资费id[%s]不存在' % (account_number, product_id)) return if product.fee_price > account.balance: logger.error(u'执行流量包月续费时,用户[%s]余额不足' % account_number) return old_balance = account.balance old_flows = account.flow_length account.balance -= product.fee_price account.flow_length = product.fee_flows account.sync_ver = tools.gen_sync_ver() accept_log = models.TrAcceptLog() accept_log.id = utils.get_uuid() accept_log.accept_type = 'auto_renew' accept_log.accept_source = 'task' accept_log.account_number = account_number accept_log.accept_time = utils.get_currtime() accept_log.operator_name = 'admin' accept_log.accept_desc = u'用户[%s]流量包月套餐续费, 续费前余额为(%s)元,流量为(%s)G,续费后余额为(%s)元,流量为(%s)G' % ( account_number, utils.fen2yuan(old_balance), utils.kb2gb(old_flows), utils.fen2yuan( account.balance), utils.kb2gb(account.flow_length)) accept_log.stat_year = accept_log.accept_time[0:4] accept_log.stat_month = accept_log.accept_time[0:7] accept_log.stat_day = accept_log.accept_time[0:10] accept_log.sync_ver = tools.gen_sync_ver() self.db.add(accept_log) self.db.commit() logger.info(u'用户[%s]流量包月套餐续费完成' % account_number, trace='event') except Exception as err: logger.exception(err) logger.error(u'用户[%s]流量包月套餐续费失败' % account_number, trace='event')
def add(self, formdata, nodes=[], **kwargs): try: if not formdata.ip_addr: raise ValueError(u'接入设备地址不能为空') if self.db.query(models.TrBas.id).filter_by( ip_addr=formdata.ip_addr).count() > 0: raise ValueError(u'接入设备地址已经存在') if self.db.query(models.TrBas.id).filter_by( nas_id=formdata.nas_id).count() > 0: raise ValueError(u'接入设备标识已经存在') bas = models.TrBas() bas.id = utils.get_uuid() bas.nas_id = formdata.get('nas_id', '') bas.ip_addr = formdata.ip_addr bas.dns_name = formdata.get('dns_name', '') bas.bas_name = formdata.bas_name bas.vendor_id = formdata.vendor_id bas.bas_secret = formdata.bas_secret bas.coa_port = formdata.coa_port bas.portal_vendor = formdata.portal_vendor bas.ac_port = formdata.ac_port bas.time_type = formdata.get('time_type', 0) bas.sync_ver = tools.gen_sync_ver() self.db.add(bas) for node_id in nodes: basnode = models.TrBasNode() basnode.bas_id = bas.id basnode.node_id = node_id basnode.sync_ver = tools.gen_sync_ver() self.db.add(basnode) self.add_oplog(u'新增接入设备信息:%s' % bas.ip_addr) self.db.commit() return bas except Exception as err: self.db.rollback() logger.exception(err, tag='bas_add_error') self.last_error = u'接入设备创建失败:%s' % utils.safeunicode(err) return False
def post(self): account_number = self.current_user.username user = self.db.query( models.TrAccount).filter_by(account_number=account_number).first() user.mac_addr = '' user.vlan_id1 = 0 user.vlan_id2 = 0 user.sync_ver = tools.gen_sync_ver() self.db.commit() dispatch.pub(db_cache.CACHE_DELETE_EVENT, account_cache_key(account_number), async=True) return self.render_json(msg=u'解绑成功')
def import_charges(imetadata, ometadata, rate=32, **kwargs): results = [] with imetadata.bind.begin() as db: for row in db.execute(imetadata.tables['tr_charges'].select()): item = dict(row) item['sync_ver'] = tools.gen_sync_ver() results.append(item) for rs in cut_result(results, rate=rate): with ometadata.bind.begin() as db: db.execute(_sql('delete from tr_charges')) db.execute(ometadata.tables['tr_charges'].insert().values(rs)) print '- Append into table tr_charges %s rows' % len(rs)
def post(self): form = bas_forms.bas_attr_update_form() if not form.validates(source=self.get_params()): return self.render('basattr_form.html', form=form) attr = self.db.query(models.TrBasAttr).get(form.d.id) attr.attr_name = form.d.attr_name attr.attr_value = form.d.attr_value attr.attr_desc = form.d.attr_desc attr.sync_ver = tools.gen_sync_ver() self.add_oplog(u'修改BAS属性信息:%s' % attr.attr_name) self.db.commit() dispatch.pub(CACHE_DELETE_EVENT, bas_attr_cache_key(form.d.bas_id, attr.attr_name), async=True) dispatch.pub(ROSSYNC_RELOAD, form.d.bas_id, async=True) self.redirect('/admin/bas/detail?bas_id=%s' % form.d.bas_id)
def test_add_and_update_node(self): node = None with make_db(self.db) as db: serv = NodeService(db, self.aes, config=self.config) ret = serv.add(Storage({'node_name': 'node2', 'node_desc': '\xe6\xb5\x8b\xe8\xaf\x95\xe5\x8c\xba\xe5\x9f\x9f2', 'rule_id': '0', 'sync_ver': tools.gen_sync_ver()})) if hasattr(serv, 'last_error'): print serv.last_error node = self.warp(ret) raise node or AssertionError with make_db(self.db) as db: serv = NodeService(db, self.aes, config=self.config) ret = serv.update(Storage({'id': node.id, 'node_name': '\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbf\xae\xe6\x94\xb9\xe5\x8c\xba\xe5\x9f\x9f', 'node_desc': '\xe6\xb5\x8b\xe8\xaf\x95\xe4\xbf\xae\xe6\x94\xb9\xe5\x8c\xba\xe5\x9f\x9f', 'rule_id': '0', 'sync_ver': tools.gen_sync_ver()})) if hasattr(serv, 'last_error'): print serv.last_error raise self.warp(ret) or AssertionError return
def update_account_attr(self, account_number, name, value, attr_type = 0): attr = self.db.query(models.TrAccountAttr).filter_by(attr_name=name).first() if not attr: attr = models.TrAccountAttr() attr.id = utils.get_uuid() attr.account_number = account_number attr.attr_type = attr_type attr.attr_name = name attr.attr_value = value attr.attr_desc = name attr.sync_ver = tools.gen_sync_ver() self.db.add(attr) else: attr.attr_value = value