def issues_add_form(oprs=[]): return btforms.Form(btforms.Textbox('account_number', rules.len_of(1, 32), description=u'用户账号', readonly='readonly', **input_style), btforms.Dropdown('issues_type', description=u'工单类型', args=issues_types.items(), **input_style), btforms.Textarea('content', rules.len_of(1, 1024), description=u'工单内容', rows=6, required='required', **input_style), btforms.Dropdown('builder_name', description=u'指派施工人员', args=oprs, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b> 提交 </b>', **button_style), action='/admin/issues/add', title=u'创建用户工单')()
def customer_update_form(nodes=[]): return btforms.Form(btforms.Hidden('account_number', description=u'用户账号'), btforms.Dropdown('node_id', description=u'区域*', args=nodes, required='required', **input_style), btforms.Dropdown('area_id', description=u'社区*', args=[], required='required', **input_style), btforms.Hidden('customer_id', description=u'mid', required='required', **input_style), btforms.Textbox('realname', rules.len_of(1, 64), description=u'用户姓名', required='required', **input_style), btforms.Hidden('customer_name', description=u'自助服务用户名', readonly='readonly', autocomplete='off', **input_style), btforms.Hidden('new_password', rules.len_of(0, 128), value='', description=u'自助服务密码(留空不修改)', **input_style), btforms.Textbox('email', rules.len_of(0, 128), description=u'电子邮箱', **input_style), btforms.Textbox('idcard', rules.len_of(0, 32), description=u'证件号码', **input_style), btforms.Textbox('mobile', rules.len_of(0, 32), description=u'用户手机号码', **input_style), btforms.Textbox('address', description=u'用户地址', hr=True, **input_style), btforms.Textarea('customer_desc', description=u'用户描述', rows=4, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'用户基本信息修改', action='/admin/customer/update')
def mps_form(): return btforms.Form(btforms.Textbox('mps_apiurl', description=u'微信公众号接口地址', **input_style), btforms.Password('mps_token', description=u'微信公众号令牌(Token)', **input_style), btforms.Textbox('mps_appid', description=u'微信公众号应用ID', **input_style), btforms.Password('mps_apisecret', description=u'微信公众号应用密钥', **input_style), btforms.Password('mps_encoding_aes_key', description=u'微信公众号消息加解密密钥', **input_style), btforms.Dropdown('mps_encrypt_mode', args=en_modes.items(), description=u'微信公众号消息加解密模式', **input_style), btforms.Textbox('mps_dnsv_upload', description=u'域名验证文件', type='button', **input_style), btforms.Textarea('mps_welcome_text', description=u'公众号欢迎信息', rows=5, hr=True, **input_style), btforms.Dropdown('mps_wxpay_enable', args=booleans.items(), description=u'启用微信支付', **input_style), btforms.Textbox('mps_wxpay_mch_id', description=u'微信支付商户号', **input_style), btforms.Password('mps_wxpay_key', description=u'微信支付Key', **input_style), btforms.Textbox('mps_wxpay_ip', description=u'微信支付商户网站IP', **input_style), btforms.Textbox('mps_wxpay_notify_url', description=u'微信支付结果通知URL', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'微信公众号配置管理', action='/admin/param/update?active=mpscfg')
def domain_update_vform(): return btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Dropdown('tpl_name', wlan_tpls.items(), rules.not_null, description=u'Hotspot 模版', required='required', **input_style), btforms.Textbox('domain_code', rules.not_null, readonly='readonly', description=u'认证域编码', required='required', **input_style), btforms.Textbox('domain_desc', rules.not_null, description=u'域描述', required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'修改认证域', action='/admin/wlan/domain/update')
def builder_add_form(areas=[]): return btforms.Form(btforms.Textbox('builder_name', rules.len_of(2, 128), description=u'服务人员姓名', required='required', **input_style), btforms.Textbox('builder_phone', rules.len_of(2, 128), description=u'服务人员电话', required='required', **input_style), btforms.Dropdown('areas', description=u'关联社区', args=areas, multiple='multiple', size=5, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'创建服务人员', htopic='builder', action='/admin/builder/add')
def account_update_form(): return btforms.Form(btforms.Textbox('account_number', description=u'用户账号', readonly='readonly', **input_style), btforms.Textbox('ip_address', description=u'用户IP地址', **input_style), btforms.Hidden('install_address', description=u'用户安装地址', required='required', **input_style), btforms.Hidden('new_password', description=u'认证密码(留空不修改)', **input_style), btforms.Textbox('user_concur_number', rules.is_number, description=u'用户并发数', required='required', **input_style), btforms.Dropdown('bind_mac', args=boolean.items(), description=u'是否绑定MAC', **input_style), btforms.Dropdown('bind_vlan', args=boolean.items(), description=u'是否绑定VLAN', **input_style), btforms.Textbox('domain', description=u'用户域', **input_style), btforms.Textarea('account_desc', description=u'用户描述', rows=4, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'用户策略修改', action='/admin/account/update')
def operator_update_form(nodes=[], products=[]): return btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Textbox('operator_name', description=u'操作员名称', readonly='readonly', **input_style), btforms.Textbox('operator_desc', rules.len_of(0, 255), description=u'操作员姓名', **input_style), btforms.Password('operator_pass', rules.len_of(0, 128), description=u'操作员密码(留空不修改)', autocomplete='off', **input_style), btforms.Dropdown('operator_status', description=u'操作员状态', args=opr_status_dict.items(), required='required', **input_style), btforms.Dropdown('operator_nodes', description=u'关联区域(多选)', args=nodes, required='required', multiple='multiple', size=4, **input_style), btforms.Dropdown('operator_products', description=u'关联资费(多选)', args=products, required='required', multiple='multiple', size=6, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'修改操作员', action='/admin/operator/update')
def domain_attr_form(products=[]): return btforms.Form(btforms.Textbox('domain_code', description=u'域编码', readonly='readonly', **input_style), btforms.Textbox('tpl_name', description=u'模版名', readonly='readonly', **input_style), btforms.Textbox('page_title', description=u'模版页面标题', **input_style), btforms.Dropdown('wlan_product_id', args=products, description=u'热点自动注册资费', **input_style), btforms.Dropdown('pwd_auth_eanble', args=booleans.items(), description=u'启用密码认证', **input_style), btforms.Dropdown('sms_auth_eanble', args=booleans.items(), description=u'启用短信认证', **input_style), btforms.Dropdown('wechat_auth_eanble', args=booleans.items(), description=u'启用微信认证', **input_style), btforms.Dropdown('qq_auth_eanble', args=booleans.items(), description=u'启用QQ认证', **input_style), btforms.Dropdown('free_auth_eanble', args=booleans.items(), description=u'启用免费认证', **input_style), btforms.Textbox('ssportal_url', description=u'自助服务链接', **input_style), btforms.Textbox('qrcode_url', description=u'二维码地址', **input_style), btforms.Textbox('copyright_text', description=u'页脚版权声明', **input_style), btforms.Textbox('ad1_img_url', description=u'广告图片地址1', **input_style), btforms.Textbox('ad2_img_url', description=u'广告图片地址2', **input_style), btforms.Textbox('ad3_img_url', description=u'广告图片地址3', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新配置</b>', **button_style), title=u'认证域参数配置', action='/admin/wlan/domain/attr/update')
def operator_add_form(nodes=[], products=[]): return btforms.Form(btforms.Textbox('operator_name', rules.len_of(2, 32), description=u'操作员名称', required='required', **input_style), btforms.Textbox('operator_desc', rules.len_of(0, 255), description=u'操作员姓名', **input_style), btforms.Password('operator_pass', rules.len_of(6, 128), description=u'操作员密码', required='required', **input_style), btforms.Dropdown('operator_status', description=u'操作员状态', args=opr_status_dict.items(), required='required', **input_style), btforms.Dropdown('operator_nodes', description=u'关联区域(多选)', args=nodes, required='required', multiple='multiple', size=4, **input_style), btforms.Dropdown('operator_products', description=u'关联资费(多选)', args=products, required='required', multiple='multiple', size=6, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'创建操作员', action='/admin/operator/add')
def node_update_form(rule_ids=[], bas_ids=[]): return btforms.Form(btforms.Hidden('id', description=u'区域ID'), btforms.Textbox('node_name', rules.len_of(2, 32), description=u'区域名称', **input_style), btforms.Dropdown('node_type', description=u'区域接入类型', args=node_types.items(), required='required', help=u'仅提供设备同步使用', **input_style), btforms.Dropdown('rule_id', description=u'账号生成规则', args=rule_ids, required='required', **input_style), btforms.Dropdown('bas_id', description=u'绑定接入设备', args=bas_ids, multiple='multiple', size=6, **input_style), btforms.Textarea('node_desc', rules.len_of(2, 128), description=u'区域描述', rows=3, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'修改区域', htopic='node', action='/admin/node/update')
def account_change_form(products=[]): return btforms.Form(btforms.Hidden('account_number', description=u'用户账号', required='required', **input_style), btforms.Dropdown('product_id', args=products, description=u'资费', required='required', **input_style), btforms.Textbox('add_value', rules.is_rmb, description=u'缴费金额', required='required', value='0', **input_style), btforms.Textbox('expire_date', rules.is_date, description=u'过期日期', value='0000-00-00', **input_style), btforms.Textbox('balance', rules.is_rmb, description=u'用户变更后余额', value='0.00', **input_style), btforms.Textbox('time_length', description=u'用户时长(小时)', value='0.00', **input_style), btforms.Textbox('flow_length', description=u'用户流量(G)', value='0', **input_style), btforms.Textarea('operate_desc', rules.len_of(0, 512), description=u'操作描述', rows=4, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'用户资费变更', action='/admin/account/change')
def mps_form(): return btforms.Form(btforms.Textbox('mps_apiurl', description=u'微信公众号接口地址', readonly='readonly', **input_style), btforms.Textbox('mps_appid', description=u'微信公众号应用ID', readonly='readonly', **input_style), btforms.Dropdown('mps_encrypt_mode', args=en_modes.items(), description=u'微信公众号消息加解密模式', **input_style), btforms.Textarea('mps_welcome_text', description=u'公众号欢迎信息', rows=5, readonly='readonly', **input_style), title=u'微信公众号配置管理(演示配置)', action='/admin/param/update?active=mpscfg')
def domain_add_vform(): return btforms.Form(btforms.Dropdown('tpl_name', wlan_tpls.items(), rules.not_null, description=u'Hotspot 模版', required='required', **input_style), btforms.Textbox('domain_code', rules.is_alphanum2(2, 16), description=u'认证域编码', required='required', **input_style), btforms.Textbox('domain_desc', rules.not_null, description=u'域描述', required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'增加无线认证域', action='/admin/wlan/domain/add')
def issues_process_form(): return btforms.Form(btforms.Hidden('issues_id', rules.len_of(1, 32), description=u'工单id', required='required', **input_style), btforms.Textarea('accept_result', rules.len_of(1, 1024), description=u'处理描述', rows=6, required='required', **input_style), btforms.Dropdown('accept_status', description=u'处理结果', args=process_status.items(), required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b> 处理用户工单 </b>', **button_style), action='/admin/issues/process', title=u'处理用户工单')()
} en_modes = {'normal': u'明文', 'compatible': u'兼容模式', 'safe': u'安全模式'} default_product_policy = { 'HOLD-000000-02': u'买断包月资费', 'HOLD-000000-10': u'买断包日资费', 'HOLD-000000-03': u'买断时长资费', 'HOLD-000000-05': u'买断流量资费' } if not os.environ.get('DEMO_VER'): sys_form = btforms.Form(btforms.Textbox('system_name', description=u'管理系统名称', help=u'管理系统名称,可以根据你的实际情况进行定制', **input_style), btforms.Dropdown('system_theme', args=themes.items(), description=u'系统风格样式', **input_style), btforms.Textbox('ssportal_title', description=u'网上营业厅名称', **input_style), btforms.Textbox('support_desc', description=u'技术服务支持声明', help=u'显示在管理登陆和网上营业厅页面底部', **input_style), btforms.Textbox('login_logo', description=u'登陆页面Logo(200x120)', **input_style), btforms.Textbox('login_bgimg', description=u'登陆页面背景图片(1920x600)', **input_style), btforms.Textbox('index_logo',
def bas_update_form(nodes = []): return btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Textbox('ip_addr', rules.is_ip, description=u'接入设备地址', **input_style), btforms.Textbox('bas_name', rules.len_of(2, 64), description=u'接入设备名称', required='required', **input_style), btforms.Textbox('nas_id', rules.len_of(4, 32), description=u'接入设备标识', help=u'动态IP专用', **input_style), btforms.Textbox('bas_secret', rules.is_alphanum2(4, 32), description=u'共享秘钥', required='required', **input_style), btforms.Dropdown('vendor_id', description=u'接入设备类型', args=bastype.items(), required='required', **input_style), btforms.Dropdown('portal_vendor', description=u'portal协议', args=portaltype.items(), required='required', **input_style), btforms.Textbox('ac_port', rules.is_number, description=u'无线控制器端口', default=2000, **input_style), btforms.Textbox('coa_port', rules.is_number, description=u'授权端口', default=3799, required='required', **input_style), btforms.Dropdown('time_type', description=u'时间类型', args=timetype.items(), required='required', **input_style), btforms.Dropdown('nodes', description=u'绑定区域(多选)', args=nodes, required='required', multiple='multiple', size=6, **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), attrs=dict(mselect=['nodes']), title=u'修改接入设备', htopic='bas', action='/admin/bas/update')
timetype = {0: u'标准时区,北京时间', 1: u'时区和时间同区'} bastype = {'0': u'标准', '3041': u'阿尔卡特', '2352': u'爱立信', '2011': u'华为', '25506': u'H3C', '3902': u'中兴', '14988': u'RouterOS/Smart6/神行者/Panabit', '10055': u'爱快路由', '30001': u'华为扩展1'} portaltype = {'0': u'无', 'cmccv1': u'中国移动 V1', 'cmccv2': u'中国移动 V2', 'huaweiv1': u'华为 V1', 'huaweiv2': u'华为 V2'} attr_types = {'ros_api_addr': u'RouterOS Api 地址', 'ros_api_port': u'RouterOS Api 端口', 'ros_api_user': u'RouterOS Api 用户', 'ros_api_pwd': u'RouterOS Api 密码'} def bas_add_form(nodes = []): return btforms.Form(btforms.Textbox('ip_addr', rules.is_ip, description=u'接入设备地址', **input_style), btforms.Textbox('bas_name', rules.len_of(2, 64), description=u'接入设备名称', required='required', **input_style), btforms.Textbox('nas_id', rules.len_of(4, 32), description=u'接入设备标识', help=u'动态IP专用', **input_style), btforms.Textbox('bas_secret', rules.is_alphanum2(4, 32), description=u'共享秘钥', required='required', **input_style), btforms.Dropdown('vendor_id', description=u'接入设备类型', args=bastype.items(), required='required', **input_style), btforms.Dropdown('portal_vendor', description=u'portal协议', args=portaltype.items(), required='required', **input_style), btforms.Textbox('coa_port', rules.is_number, description=u'授权端口', default=3799, required='required', **input_style), btforms.Textbox('ac_port', rules.is_number, description=u'无线控制器端口', default=2000, **input_style), btforms.Dropdown('time_type', description=u'时间类型', args=timetype.items(), required='required', **input_style), btforms.Dropdown('nodes', description=u'绑定区域(多选)', args=nodes, required='required', multiple='multiple', size=6, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), attrs=dict(mselect=['nodes']), title=u'创建接入设备', htopic='bas', action='/admin/bas/add') def bas_update_form(nodes = []): return btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Textbox('ip_addr', rules.is_ip, description=u'接入设备地址', **input_style), btforms.Textbox('bas_name', rules.len_of(2, 64), description=u'接入设备名称', required='required', **input_style), btforms.Textbox('nas_id', rules.len_of(4, 32), description=u'接入设备标识', help=u'动态IP专用', **input_style), btforms.Textbox('bas_secret', rules.is_alphanum2(4, 32), description=u'共享秘钥', required='required', **input_style), btforms.Dropdown('vendor_id', description=u'接入设备类型', args=bastype.items(), required='required', **input_style), btforms.Dropdown('portal_vendor', description=u'portal协议', args=portaltype.items(), required='required', **input_style), btforms.Textbox('ac_port', rules.is_number, description=u'无线控制器端口', default=2000, **input_style), btforms.Textbox('coa_port', rules.is_number, description=u'授权端口', default=3799, required='required', **input_style), btforms.Dropdown('time_type', description=u'时间类型', args=timetype.items(), required='required', **input_style), btforms.Dropdown('nodes', description=u'绑定区域(多选)', args=nodes, required='required', multiple='multiple', size=6, **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), attrs=dict(mselect=['nodes']), title=u'修改接入设备', htopic='bas', action='/admin/bas/update') bas_attr_add_form = btforms.Form(btforms.Hidden('bas_id', description=u'BAS编号'), btforms.Dropdown('attr_types', args=attr_types.items(), description=u'预定义属性', required='required', **input_style), btforms.Textbox('attr_name', rules.len_of(1, 255), description=u'属性名称', required='required', help=u'属性参考', **input_style), btforms.Textbox('attr_value', rules.len_of(1, 255), description=u'属性值', required='required', **input_style), btforms.Textbox('attr_desc', rules.len_of(1, 255), description=u'属性描述', required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'创建BAS属性', action='/admin/bas/attr/add') bas_attr_update_form = btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Hidden('bas_id', description=u'BAS编号'), btforms.Dropdown('attr_types', args=attr_types.items(), description=u'预定义属性', required='required', **input_style), btforms.Textbox('attr_name', rules.len_of(1, 255), description=u'属性名称', readonly='required', **input_style), btforms.Textbox('attr_value', rules.len_of(1, 255), description=u'属性值', required='required', **input_style), btforms.Textbox('attr_desc', rules.len_of(1, 255), description=u'属性描述', required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'修改BAS属性', action='/admin/bas/attr/update')
tpl_types = { 'open': u'开户', 'next': u'续费', 'change': u'变更', 'charge': u'充值', 'cancel': u'销户' } print_tpl_add_form = btforms.Form(btforms.Textbox('tpl_name', rules.len_of(2, 128), description=u'模板名', required='required', **input_style), btforms.Dropdown('tpl_types', description=u'打印类型(多选)', args=tpl_types.items(), required='required', multiple='multiple', size=5, **input_style), btforms.Textarea('tpl_content', rules.not_null, description=u'模板内容', rows=14, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'创建票据模板', action='/admin/printtpl/add')
button_style = {'class': 'btn btn-sm'} lbutton_style = {'class': 'btn btn-sm btn-link'} boolean = {0: u'否', 1: u'是'} booleans = {'0': u'否', '1': u'是'} timezones = {'CST-8': u'Asia/Shanghai'} loglevels = {'INFO': u'一般', 'DEBUG': u'调试', 'WARNING': u'警告', 'ERROR': u'错误'} """ if not os.environ.get('DEMO_VER') and os.environ.get('LICENSE_TYPE') != 'community': system_form = btforms.Form(btforms.Dropdown('debug', args=boolean.items(), description=u'开启DEBUG', help=u'开启此项,可以获取更多的系统日志纪录', **input_style), btforms.Dropdown('tz', args=timezones.items(), description=u'时区', **input_style), btforms.Textbox('license_upload', description=u'授权文件', type='button', **input_style), btforms.Button('reqlicense', type='button', html=u'<b>申请软件授权</b>', onclick='go_request_license()', **lbutton_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'系统配置管理', action='/admin/config/system/update') else: system_form = btforms.Form(btforms.Dropdown('debug', args=boolean.items(), description=u'开启DEBUG', help=u'开启此项,可以获取更多的系统日志纪录', **input_style), btforms.Dropdown('tz', args=timezones.items(), description=u'时区', **input_style), title=u'系统配置管理', action='/admin/config/system/update') """ system_form = btforms.Form(btforms.Dropdown('debug', args=boolean.items(), description=u'开启DEBUG', help=u'开启此项,可以获取更多的系统日志纪录', **input_style), btforms.Dropdown('tz', args=timezones.items(), description=u'时区', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'系统配置管理', action='/admin/config/system/update') dbtypes = {'mysql': u'mysql', 'sqlite': u'sqlite'} if not os.environ.get('DEMO_VER'): database_form = btforms.Form(btforms.Dropdown('echo',
def vcard_batch_form(): return btforms.Form(btforms.Dropdown('card_type', description=u'卡类型', args=cardtype.items(), required='required', **input_style), btforms.Dropdown('card_pwdtype', description=u'卡密码类型', args=pwdtype.items(), required='required', **input_style), btforms.Textbox('product_tag', rules.is_alphanum2(0, 32), description=u'资费标签(资费卡)', **input_style), btforms.Textbox('expire_date', rules.is_date, description=u'过期时间', required='required', **input_style), btforms.Textbox('credit', rules.is_number, description=u'储值余额(余额卡|元)', default=0, **input_style), btforms.Textbox('flowlen', rules.is_number, description=u'储值流量(余额卡|G)', default=0, **input_style), btforms.Textbox('timelen', rules.is_number, description=u'储值时长(时长卡|小时)', default=0, **input_style), btforms.Textbox('fee_price', rules.is_number, description=u'零售价(元)', default=0, required='required', **input_style), btforms.Textbox('num', rules.is_number, description=u'发行数量(最大100)', default=10, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'发行充值卡', action='/admin/vcard/batchadd')
description=u'免费授权最大下行速率(Mbps)', **input_style)) additem( btforms.Button('submit', type='submit', id='submit', html=u'<b>提交</b>', **button_style)) return form product_attr_add_form = btforms.Form(btforms.Hidden('product_id', description=u'资费编号'), btforms.Dropdown( 'attr_type', args=attrtype_dict.items(), description=u'属性类型', required='required', **input_style), btforms.Dropdown('attr_types', args=attr_types.items(), description=u'预定义属性', required='required', **input_style), btforms.Textbox('attr_name', rules.len_of(1, 255), description=u'属性名称', required='required', help=u'属性参考', **input_style), btforms.Textbox('attr_value', rules.len_of(1, 255),
def customer_open_form(nodes=[], products=[], agencies=[]): form = btforms.Form(title=u'用户正常开户', action='/admin/customer/open') items = form.inputs = [] items.append( btforms.Dropdown('node_id', description=u'区域*', args=nodes, required='required', **input_style)) items.append( btforms.Dropdown('area_id', description=u'社区*', args=[], required='required', **input_style)) items.append( btforms.Textbox('realname', rules.len_of(1, 64), description=u'用户姓名*', required='required', **input_style)) items.append( btforms.Textbox('idcard', rules.len_of(0, 18), description=u'证件号码*', **input_style)) items.append( btforms.Textbox('mobile', rules.len_of(0, 11), description=u'用户手机号码*', **input_style)) items.append(btforms.Textbox('email', description=u'电子邮箱*', **input_style)) items.append( btforms.Textbox('address', rules.len_of(1, 255), description=u'用户地址', hr=True, required='required', **input_style)) items.append( btforms.Textbox('account_number', description=u'用户账号*', required='required', **input_style)) items.append( btforms.Textbox('password', description=u'认证密码*', required='required', **input_style)) items.append( btforms.Button('button', type='button', onclick='reBuildAccount();', html=u'<b>生成账号密码</b>', **_btn_style)) items.append( btforms.Textbox('ip_address', description=u'用户IP地址', **input_style)) items.append( btforms.Dropdown('product_id', args=products, description=u'资费*', required='required', **input_style)) items.append( btforms.Dropdown('agency_id', args=agencies, description=u'代理商', **input_style)) items.append( btforms.Dropdown('charge_code', args=[], description=u'收费项', **input_style)) items.append( btforms.Textbox('months', description=u'月数(包月有效)', **input_style)) items.append( btforms.Textbox('days', description=u'天数(包日有效)', **input_style)) items.append( btforms.Textbox('giftdays', rules.is_number, description=u'赠送天数', help=u'包月资费,买断包月资费有效', value=0, required='required', **input_style)) items.append( btforms.Textbox('giftflows', rules.is_number, description=u'赠送流量(G)', help=u'流量包月资费有效', value=0, required='required', **input_style)) items.append( btforms.Textbox('fee_value', rules.is_rmb, description=u'缴费金额(套餐资费+收费项)*', required='required', **input_style)) items.append( btforms.Textbox('expire_date', rules.is_date, description=u'过期日期*', readonly='readonly', **input_style)) items.append( btforms.Hidden('status', value=1, description=u'用户状态', **input_style)) items.append( btforms.Dropdown('builder_name', args=[], description=u'指派施工人员', **input_style)) items.append( btforms.Textarea('customer_desc', description=u'备注信息', rows=4, **input_style)) items.append( btforms.Dropdown('billing_type', args=billing_types.items(), description=u'计费开始时间', **input_style)) items.append(btforms.Hidden('account_rule', description=u'账号生成规则')) items.append( btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style)) return form
def adconfig_form(nodes=[], **kwargs): form = btforms.Form(title=u'高级参数设置', action='/admin/param/update?active=adconfig') items = form.inputs = [] items.append( btforms.Dropdown('system_api_enable', args=booleans.items(), description=u'启用API接口', **input_style)) items.append( btforms.Textbox('system_ticket_expire_days', description=u'上网日志保留天数', **input_style)) items.append( btforms.Textbox('expire_notify_days', rules.is_number, description=u'到期提醒提前天数', **input_style)) items.append( btforms.Textbox('expire_ipaddr_pool', description=u'到期用户下发地址池', help=u'到期,余额不足用户下发,不使用可填写none', **input_style)) items.append( btforms.Dropdown('renew_time_type', args=renew_time_types.items(), description=u'续费模式', **input_style)) items.append( btforms.Dropdown('default_user_node_id', args=nodes, description=u'默认用户区域', help=u'自助开户使用', **input_style)) items.append( btforms.Textbox('billtask_last_day', rules.is_number, description=u'用户账单任务截止日期(1-28)', **input_style)) items.append( btforms.Dropdown('billing_fee_precision', args=fee_precisions.items(), description=u'后付费账单金额精度(元/分)', **input_style)) items.append( btforms.Dropdown('default_product_policy', args=default_product_policy.items(), description=u'自助注册默认资费', **input_style)) items.append( btforms.Dropdown('usrportal_smsvcode_required', args=booleans.items(), description=u'自助注册开户采用短信验证', **input_style)) items.append( btforms.Dropdown('usrportal_email_required', args=booleans.items(), description=u'自助注册开户采用邮件验证', **input_style)) items.append( btforms.Dropdown('ssportal_allow_release_bind', args=booleans.items(), description=u'自助服务允许清除Mac绑定', **input_style)) items.append( btforms.Dropdown('ssportal_allow_online_unlock', args=booleans.items(), description=u'自助服务允许下线操作', **input_style)) items.append( btforms.Textarea('ssportal_paydone_text', description=u'自助服务支付完成提示信息(支持html)', rows=5, **input_style)) items.append( btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style)) return form
def ppmflow_product_update_form(): return btforms.Form(btforms.Hidden('id', description=u'编号'), btforms.Textbox('product_name', rules.len_of(4, 64), description=u'资费名称', required='required', **input_style), btforms.Dropdown('ispub', args=boolean.items(), description=u'是否发布到自助订购套餐', **input_style), btforms.Textbox('fee_flows', rules.is_number3, description=u'授权流量(G)', value=0, **input_style), btforms.Textbox('fee_price', rules.is_rmb, description=u'资费价格(元)', required='required', **input_style), btforms.Textbox('flow_price', rules.is_rmb, description=u'流量充值单价(元/G)', required='required', **input_style), btforms.Textbox('max_giftflows', rules.is_number3, description=u'最大赠送流量值(G)', required='required', **input_style), btforms.Dropdown('product_status', args=product_status_dict.items(), description=u'资费状态', required='required', **input_style), btforms.Textbox('concur_number', rules.is_numberOboveZore, description=u'并发数控制(0表示不限制)', value='0', **input_style), btforms.Dropdown('bind_mac', args=boolean.items(), description=u'是否绑定MAC ', **input_style), btforms.Dropdown('bind_vlan', args=boolean.items(), description=u'是否绑定VLAN ', **input_style), btforms.Textbox('input_max_limit', rules.is_number3, description=u'最大上行速率(Mbps)', required='required', **input_style), btforms.Textbox('output_max_limit', rules.is_number3, description=u'最大下行速率(Mbps)', required='required', **input_style), btforms.Dropdown('free_auth', args=boolean.items(), description=u'支持到期免费授权', **input_style), btforms.Textbox('free_auth_uprate', rules.is_number3, description=u' 免费授权最大上行速率(Mbps)', **input_style), btforms.Textbox('free_auth_downrate', rules.is_number3, description=u'免费授权最大下行速率(Mbps)', **input_style), btforms.Button('submit', type='submit', id='submit', html=u'<b>提交</b>', **button_style), title=u'创建预付费包月流量套餐', action='/admin/product/ppmf/update')
def product_add_form(policy=0, charges=[], pools=[]): _policy = int(policy) form = btforms.Form(title=u'创建资费', action='/admin/product/add') form.inputs = [] additem = form.inputs.append additem( btforms.Textbox('product_id', rules.is_alphanum2(4, 32), description=u'资费编码', required='required', **input_style)) additem( btforms.Textbox('product_name', rules.len_of(4, 64), description=u'资费名称', required='required', **input_style)) additem( btforms.Dropdown('ispub', args=boolean.items(), description=u'是否发布到自助订购套餐', **input_style)) additem(btforms.Hidden('product_policy', value=policy, description=u'')) if _policy == PPMonth: form.desc = u'预付费包月:以每月单价为基础,用户可自由订购多月,到期即停止服务。' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'每月单价(元)', required='required', **input_style)) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) elif _policy == APMonth: form.desc = u'后付费包月:以每月单价为基础,先使用,下个月初期生成使用账单' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'每月单价(元)', required='required', **input_style)) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) elif _policy == BOMonth: form.desc = u'买断包月:以月为单位进行套餐打包(如包季度,半年,一年等),设定买断总价,用户一次性订购,到期即停止服务。' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'买断包月总价(元)', required='required', **input_style)) additem( btforms.Textbox('fee_months', rules.is_number, description=u'买断授权月数', value=0, **input_style)) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) elif _policy == BOTimes: form.desc = u'买断时长:一次性将固定的时长打包为套餐,提供用户一次性订购,在使用过程中实时扣除时间,扣完为止。(设备必须支持实时记帐),剩余时长为零时停止服务' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'买断时长总价(元)', required='required', **input_style)) additem( btforms.Textbox('fee_times', rules.is_number3, description=u'买断时长(小时)', value=0, **input_style)) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) elif _policy == BOFlows: form.desc = u'买断流量:一次性将固定的流量打包为套餐,提供用户一次性订购,在使用过程中实时扣除流量,扣完为止。(设备必须支持实时记帐),剩余流量为零时停止服务。' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'买断流量总价(元)', required='required', **input_style)) additem( btforms.Textbox('fee_flows', rules.is_number3, description=u'买断流量(G)', value=0, **input_style)) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) elif _policy == PPDay: form.desc = u'预付费包日:以每日单价为基础,用户可自由订购多日,到期即停止服务。' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'每日单价(元)', required='required', **input_style)) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_days', value=0, description=u'买断授权天数')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) elif _policy == BODay: form.desc = u'买断包日:以日为单位进行套餐打包(任意天数),设定买断总价,用户一次性订购,到期即停止服务。' additem( btforms.Textbox('fee_price', rules.is_rmb, description=u'买断包日总价(元)', required='required', **input_style)) additem( btforms.Textbox('fee_days', rules.is_number3, description=u'买断授权天数', value=0, **input_style)) additem(btforms.Hidden('fee_flows', value=0, description=u'买断流量(G)')) additem(btforms.Hidden('fee_times', value=0, description=u'买断时长(小时)')) additem(btforms.Hidden('fee_months', value=0, description=u'买断授权月数')) additem( btforms.Dropdown('product_charges', description=u'关联收费项(多选)', args=charges, multiple='multiple', size=6, **input_style)) additem( btforms.Dropdown('addr_pool', args=pools, description=u'地址池', **input_style)) additem( btforms.Textbox('concur_number', rules.is_numberOboveZore, description=u'同时在线数(0表示不限制)', value='0', **input_style)) additem( btforms.Dropdown('bind_mac', args=boolean.items(), description=u'是否绑定MAC ', **input_style)) additem( btforms.Dropdown('bind_vlan', args=boolean.items(), description=u'是否绑定VLAN ', **input_style)) additem( btforms.Textbox('input_max_limit', rules.is_number3, description=u'最大上行速率(Mbps)', required='required', **input_style)) additem( btforms.Textbox('output_max_limit', rules.is_number3, description=u'最大下行速率(Mbps)', required='required', **input_style)) additem( btforms.Dropdown('free_auth', args=boolean.items(), description=u'支持到期免费授权', **input_style)) additem( btforms.Textbox('free_auth_uprate', rules.is_number3, description=u' 免费授权最大上行速率(Mbps)', **input_style)) additem( btforms.Textbox('free_auth_downrate', rules.is_number3, description=u'免费授权最大下行速率(Mbps)', **input_style)) additem( btforms.Button('submit', type='submit', id='submit', html=u'<b>提交</b>', **button_style)) return form
def account_open_form(products=[]): return btforms.Form(btforms.Hidden('node_id', description=u'区域', **input_style), btforms.Hidden('customer_id', description=u'编号'), btforms.Textbox('realname', description=u'用户姓名', readonly='readonly', **input_style), btforms.Textbox('account_number', description=u'用户账号', required='required', **input_style), btforms.Textbox('password', description=u'认证密码', required='required', **input_style), btforms.Button('button', type='button', onclick='reBuildAccount();', html=u'<b>重新生成账号密码</b>', **_btn_style), btforms.Textbox('ip_address', description=u'用户IP地址', **input_style), btforms.Textbox('address', description=u'用户装机地址', required='required', **input_style), btforms.Dropdown('product_id', args=products, description=u'资费', required='required', **input_style), btforms.Textbox('months', rules.is_number, description=u'月数(包月有效)', required='required', **input_style), btforms.Textbox('giftdays', rules.is_number, description=u'赠送天数', value=0, required='required', **input_style), btforms.Textbox('fee_value', rules.is_rmb, description=u'缴费金额', required='required', **input_style), btforms.Textbox('expire_date', rules.is_date, description=u'过期日期', required='required', **input_style), btforms.Hidden('status', value=1, description=u'用户状态', **input_style), btforms.Textarea('account_desc', description=u'用户描述', rows=4, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'用户新开账号', action='/admin/account/open')
def agency_add_form(nodes = [], products = []): return btforms.Form(btforms.Textbox('agency_name', rules.len_of(1, 255), description=u'代理商名称', **input_style), btforms.Textbox('contact', rules.not_null, description=u'联系人', **input_style), btforms.Textbox('mobile', rules.len_of(1, 255), description=u'手机号码', **input_style), btforms.Textbox('amount', rules.is_rmb, description=u'初始余额', **input_style), btforms.Textbox('share_rate', rules.is_number, description=u'分成比例(0-100)', **input_style), btforms.Textbox('operator_name', rules.len_of(2, 32), description=u'操作员名称', required='required', **input_style), btforms.Password('operator_pass', rules.len_of(6, 128), description=u'操作员密码', required='required', **input_style), btforms.Dropdown('operator_nodes', description=u'关联区域(多选)', args=nodes, required='required', multiple='multiple', size=4, **input_style), btforms.Dropdown('operator_products', description=u'关联资费(多选)', args=products, required='required', multiple='multiple', size=6, **input_style), btforms.Textarea('agency_desc', description=u'代理商描述', rows=2, **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'代理商开户', action='/admin/agency/add')
#!/usr/bin/env python # coding=utf-8 from taurusxradius.taurusxlib import btforms from taurusxradius.taurusxlib.btforms import dataform from taurusxradius.taurusxlib.btforms import rules from taurusxradius.taurusxlib.btforms.rules import button_style, input_style from taurusxradius.modules.settings import * button_style = {'class': 'btn btn-sm'} tpl_types = {OpenNotify: u'用户开户通知模板', NextNotify: u'用户续费通知模板', ExpireNotify: u'用户到期通知模板', IssuesNotify: u'工单通知模板', VcodeNotify: u'验证码通知模板'} content_tpl_add_form = btforms.Form(btforms.Dropdown('tpl_type', args=tpl_types.items(), description=u'模板类型', required='required', **input_style), btforms.Textbox('tpl_id', rules.not_null, description=u'模板ID', required='required', **input_style), btforms.Textarea('tpl_content', rules.len_of(2, 1024), description=u'模板内容', rows=7, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style), title=u'创建模板', action='/admin/contenttpl/add') content_tpl_update_form = btforms.Form(btforms.Hidden('id', description=u'模板ID'), btforms.Dropdown('tpl_type', args=tpl_types.items(), description=u'模板类型', **input_style), btforms.Textbox('tpl_id', rules.not_null, description=u'模板ID', required='required', **input_style), btforms.Textarea('tpl_content', rules.len_of(2, 1024), description=u'模板内容', rows=7, required='required', **input_style), btforms.Button('submit', type='submit', html=u'<b>更新</b>', **button_style), title=u'修改模板', action='/admin/contenttpl/update')
def note_print_form(tpls = []): return btforms.Form(btforms.Dropdown('tpl_id', args=tpls, description=u'票据模板', required='required', **input_style), btforms.Textbox('note_id', rules.len_of(2, 32), description=u'票据凭证号', required='required', readonly='readonly', **input_style), btforms.Textbox('order_id', description=u'缴费订单号', readonly='readonly', **input_style), btforms.Textbox('customer_cname', description=u'客户姓名', required='required', readonly='readonly', **input_style), btforms.Textbox('account_number', description=u'上网账号', readonly='readonly', **input_style), btforms.Textbox('mobile', description=u'手机号码', required='required', readonly='readonly', **input_style), btforms.Textbox('install_address', description=u'客户安装地址', required='required', readonly='readonly', **input_style), btforms.Textbox('pay_type', description=u'付款方式', required='required', readonly='readonly', **input_style), btforms.Textbox('pay_date', description=u'付款日期', required='required', readonly='readonly', **input_style), btforms.Textbox('expire_date', description=u'到期日期', required='required', readonly='readonly', **input_style), btforms.Textbox('order_num', description=u'订购套餐数', required='required', readonly='readonly', **input_style), btforms.Textbox('fee_price', description=u'套餐单价', required='required', readonly='readonly', **input_style), btforms.Textbox('fee_total', description=u'套餐总价', required='required', readonly='readonly', **input_style), btforms.Textarea('remark', description=u'备注内容', rows=4, readonly='readonly', **input_style), btforms.Textbox('operator_name', description=u'收款人', readonly='readonly', **input_style), btforms.Button('doprint', type='button', onclick='doPrint();', html=u'<b>打印预览</b>', **button_style), title=u'用户票据打印', action='/admin/customer/note/print')
def customer_batch_open_form(nodes=[], products=[]): form = btforms.Form(title=u'用户批量开户', action='/admin/customer/batchopen') items = form.inputs = [] items.append( btforms.Dropdown('node_id', description=u'区域*', args=nodes, required='required', **input_style)) items.append( btforms.Dropdown('area_id', description=u'社区*', args=[], required='required', **input_style)) items.append( btforms.Dropdown('product_id', args=products, description=u'资费*', required='required', **input_style)) items.append( btforms.Dropdown('pwd_type', args=pwd_types.items(), description=u'密码类型', **input_style)) items.append( btforms.Textbox('password', description=u'认证密码*', **input_style)) items.append( btforms.Textbox('opennum', rules.is_number, description=u'数量(最大1000)*', required='required', **input_style)) items.append( btforms.Textbox('user_prefix', rules.is_alphanum2(1, 10), description=u'账号前缀*', required='required', **input_style)) items.append( btforms.Textbox('suffix_len', rules.is_number, description=u'序号长度*', required='required', **input_style)) items.append( btforms.Textbox('start_num', rules.is_number, description=u'开始序号*', required='required', **input_style)) items.append( btforms.Textbox('expire_date', rules.is_date, description=u'过期日期*', readonly='readonly', **input_style)) items.append( btforms.Hidden('billing_type', args=billing_types.items(), description=u'计费开始时间', **input_style)) items.append( btforms.Button('submit', type='submit', html=u'<b>提交</b>', **button_style)) return form