예제 #1
0
 def get(self):
     builder_id = self.get_argument('builder_id')
     self.db.query(models.TrBuilder).filter_by(id=builder_id).delete()
     self.db.query(models.TrAreaBuilder).filter_by(builder_id=builder_id).delete()
     self.add_oplog(u'删除服务人员:%s' % builder_id)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrBuilder.__tablename__, dict(id=builder_id)), async=True)
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAreaBuilder.__tablename__, dict(builder_id=builder_id)), async=True)
     self.redirect('/admin/builder', permanent=False)
예제 #2
0
 def get(self):
     area_id = self.get_argument('area_id')
     node_id = self.db.query(models.TrArea.node_id).filter_by(id=area_id).scalar()
     if self.db.query(models.TrCustomer.customer_id).filter_by(area_id=area_id).count() > 0:
         return self.render_error(msg=u'该社区下有用户,不允许删除')
     self.db.query(models.TrArea).filter_by(id=area_id).delete()
     self.db.query(models.TrAreaBuilder).filter_by(area_id=area_id).delete()
     self.add_oplog(u'删除社区信息:%s' % area_id)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrArea.__tablename__, dict(id=area_id)), async=True)
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAreaBuilder.__tablename__, dict(area_id=area_id)), async=True)
     self.redirect('/admin/area?node_id=%s' % node_id, permanent=False)
예제 #3
0
 def get(self):
     issues_id = self.get_argument('issues_id')
     self.db.query(models.TrIssues).filter_by(id=issues_id).delete()
     self.db.query(models.TrIssuesFlow).filter_by(issues_id=issues_id)
     self.add_oplog(u'删除工单%s' % issues_id)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrIssues.__tablename__,
                                       dict(id=issues_id)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrIssuesFlow.__tablename__,
                                       dict(issues_id=issues_id)),
                  async=True)
     self.redirect('/admin/issues/list')
예제 #4
0
 def get(self):
     charge_code = self.get_argument('charge_code')
     self.db.query(models.TrCharges).filter_by(charge_code=charge_code).delete()
     self.add_oplog(u'删除收费项信息:%s' % charge_code)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrCharges.__tablename__, dict(charge_code=charge_code)), async=True)
     self.redirect('/admin/charge', permanent=False)
예제 #5
0
 def get(self):
     tpl_id = self.get_argument('tpl_id')
     self.db.query(models.TrContentTemplate).filter_by(id=tpl_id).delete()
     self.add_oplog(u'删除模板信息:%s' % tpl_id)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrContentTemplate.__tablename__, dict(id=tpl_id)), async=True)
     self.redirect('/admin/contenttpl', permanent=False)
예제 #6
0
 def get(self):
     operator_id = self.get_argument('operator_id')
     opr = self.db.query(models.TrOperator).get(operator_id)
     self.db.query(models.TrOperatorRule).filter_by(
         operator_name=opr.operator_name).delete()
     self.db.query(models.TrOperator).filter_by(id=operator_id).delete()
     self.add_oplog(u'删除操作员%s信息' % utils.safeunicode(opr.operator_name))
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrOperatorRule.__tablename__,
                                       dict(id=operator_id)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrOperator.__tablename__,
                                       dict(id=operator_id)),
                  async=True)
     self.redirect('/admin/operator', permanent=False)
예제 #7
0
 def get(self):
     customer_id = self.get_argument('customer_id')
     if not customer_id:
         return self.render_error(msg=u'无效的客户ID')
     account = self.db.query(models.TrAccount).filter_by(customer_id=customer_id).first()
     account_number = account.account_number
     self.db.query(models.TrAcceptLog).filter_by(account_number=account_number).delete()
     self.db.query(models.TrAccountAttr).filter_by(account_number=account_number).delete()
     self.db.query(models.TrBilling).filter_by(account_number=account_number).delete()
     self.db.query(models.TrTicket).filter_by(account_number=account_number).delete()
     self.db.query(models.TrOnline).filter_by(account_number=account_number).delete()
     self.db.query(models.TrAccount).filter_by(account_number=account_number).delete()
     self.db.query(models.TrCustomerOrder).filter_by(account_number=account_number).delete()
     self.add_oplog(u'删除用户账号%s' % account_number)
     self.db.query(models.TrCustomer).filter_by(customer_id=customer_id).delete()
     self.add_oplog(u'删除用户资料 %s' % customer_id)
     self.db.commit()
     dispatch.pub(evset.ACCOUNT_DELETE_EVENT, account_number, async=True)
     dispatch.pub(evset.CACHE_DELETE_EVENT, account_cache_key(account_number), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAcceptLog.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccountAttr.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrBilling.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOnline.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccount.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrCustomerOrder.__tablename__, dict(account_number=account_number)), async=True)
     dispatch.pub(evset.DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrCustomer.__tablename__, dict(customer_id=customer_id)), async=True)
     return self.redirect('/admin/customer')
예제 #8
0
 def get(self):
     rule_id = self.get_argument('rule_id')
     if self.db.query(models.TrNode).filter_by(rule_id=rule_id).count() > 0:
         return self.render_error(msg=u'账号生成规则已经被区域关联,请先取消关联。')
     self.db.query(models.TrAccountRule).filter_by(id=rule_id).delete()
     self.add_oplog(u'删除账号生成规则信息:%s' % rule_id)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccountRule.__tablename__, dict(id=rule_id)), async=True)
     self.redirect('/admin/account_rule', permanent=False)
예제 #9
0
 def get(self):
     attr_id = self.get_argument('attr_id')
     attr = self.db.query(models.TrBasAttr).get(attr_id)
     bas_id = attr.bas_id
     self.db.query(models.TrBasAttr).filter_by(id=attr_id).delete()
     self.add_oplog(u'删除BAS属性信息:%s' % attr.attr_name)
     self.db.commit()
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrBasAttr.__tablename__, dict(id=attr_id)), async=True)
     self.redirect('/admin/bas/detail?bas_id=%s' % bas_id)
예제 #10
0
    def delete(self, node_id, **kwargs):
        try:
            node = self.get_safe_node(node_id)
            if self.db.query(models.TrCustomer.customer_id).filter_by(
                    node_id=node_id).count() > 0:
                raise ValueError(u'该区域节点下有用户,不允许删除')
            self.db.query(models.TrNode).filter_by(id=node_id).delete()
            abuuilders = []
            for area in self.db.query(
                    models.TrArea).filter_by(node_id=node_id):
                abuuilders.append(area_id=area.id)
                self.db.query(
                    models.TrAreaBuilder).filter_by(area_id=area.id).delete()

            self.db.query(
                models.TrNodeAttr).filter_by(node_id=node_id).delete()
            self.db.query(models.TrArea).filter_by(node_id=node_id).delete()
            dispatch.pub(DBSYNC_STATUS_ADD,
                         models.warp_sdel_obj(models.TrNode.__tablename__,
                                              dict(id=node_id)),
                         async=True)
            dispatch.pub(DBSYNC_STATUS_ADD,
                         models.warp_sdel_obj(models.TrArea.__tablename__,
                                              dict(node_id=node_id)),
                         async=True)
            dispatch.pub(DBSYNC_STATUS_ADD,
                         models.warp_sdel_obj(models.TrNodeAttr.__tablename__,
                                              dict(node_id=node_id)),
                         async=True)
            for abid in abuuilders:
                dispatch.pub(DBSYNC_STATUS_ADD,
                             models.warp_sdel_obj(
                                 models.TrAreaBuilder.__tablename__,
                                 dict(area_id=abid)),
                             async=True)

            self.add_oplog(u'删除区域信息:%s' % node_id)
            self.db.commit()
            return True
        except Exception as err:
            self.db.rollback()
            logger.exception(err, tag='node_delete_error')
            self.last_error = u'删除区域失败:%s' % utils.safeunicode(err)
            return False
예제 #11
0
    def delete(self, account_number, **kwargs):
        """用户账号删除

        :param account_number:   用户账号
        :type account_number:    string
        """
        try:
            if not account_number:
                raise ValueError(u'账号不能为空')
            account = self.db.query(models.TrAccount).get(account_number)
            self.db.query(models.TrAcceptLog).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrAccountAttr).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrBilling).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrTicket).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrOnline).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrAccount).filter_by(account_number=account.account_number).delete()
            self.db.query(models.TrCustomerOrder).filter_by(account_number=account.account_number).delete()
            self.add_oplog(u'删除用户账号%s' % account.account_number)
            self.db.commit()
            dispatch.pub(ACCOUNT_DELETE_EVENT, account.account_number, async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAcceptLog.__tablename__, dict(account_number=account.account_number)), async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccountAttr.__tablename__, dict(account_number=account.account_number)), async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrBilling.__tablename__, dict(account_number=account.account_number)), async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOnline.__tablename__, dict(account_number=account.account_number)), async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccount.__tablename__, dict(account_number=account.account_number)), async=True)
            dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrCustomerOrder.__tablename__, dict(account_number=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_delete_error', username=account_number)
            return False
예제 #12
0
 def event_account_delete(self, account_number):
     logger.info('account delete event:{}'.format(account_number),
                 trace='event')
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrAcceptLog.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrAccountAttr.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrBilling.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrOnline.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrAccount.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrCustomerOrder.__tablename__,
                                       dict(account_number=account_number)),
                  async=True)
     dispatch.pub(db_cache.CACHE_DELETE_EVENT,
                  account_cache_key(account_number),
                  async=True)
예제 #13
0
 def get(self):
     pool_id = self.get_argument('pool_id')
     pool_name = self.db.query(
         models.TrAddrPool.pool_name).filter_by(id=pool_id).scalar()
     self.db.query(models.TrAddrPool).filter_by(id=pool_id).delete()
     self.add_oplog(u'删除地址池信息:%s' % pool_name)
     self.db.commit()
     dispatch.pub(ROSSYNC_DEL_POOL, pool_name, async=True)
     dispatch.pub(DBSYNC_STATUS_ADD,
                  models.warp_sdel_obj(models.TrAddrPool.__tablename__,
                                       dict(id=pool_id)),
                  async=True)
     self.redirect('/admin/addrpool', permanent=False)
예제 #14
0
 def delete(self, agency_id, **kwargs):
     try:
         agency = self.db.query(models.TrAgency).get(agency_id)
         if not agency:
             raise ValueError(u'代理商不存在')
         if self.db.query(models.TrCustomer).filter_by(agency_id=agency_id).count() > 0:
             return ValueError(u'代理商下有用户,不允许删除')
         opr = self.db.query(models.TrOperator).filter_by(operator_name=agency.operator_name).first()
         if opr:
             self.db.query(models.TrOperatorRule).filter_by(operator_name=opr.operator_name).delete()
             self.db.query(models.TrOperator).filter_by(id=opr.id).delete()
         self.db.query(models.TrAgency).filter_by(id=agency_id).delete()
         self.add_oplog(u'删除代理商%s信息' % utils.safeunicode(agency.agency_name))
         self.db.commit()
         dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOperatorRule.__tablename__, dict(operator_name=agency.operator_name)), async=True)
         dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOperator.__tablename__, dict(id=opr.id)), async=True)
         dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAgency.__tablename__, dict(id=agency_id)), async=True)
         return True
     except Exception as err:
         self.db.rollback()
         logger.exception(err, tag='agency_delete_error')
         self.last_error = u'代理商删除失败:%s' % utils.safeunicode(err)
         return False
예제 #15
0
 def delete(self, bas_id, **kwargs):
     try:
         self.db.query(models.TrBas).filter_by(id=bas_id).delete()
         self.add_oplog(u'删除接入设备信息:%s' % bas_id)
         self.db.commit()
         dispatch.pub(DBSYNC_STATUS_ADD,
                      models.warp_sdel_obj(models.TrBas.__tablename__,
                                           dict(id=bas_id)),
                      async=True)
         return True
     except Exception as err:
         self.db.rollback()
         logger.exception(err, tag='bas_delete_error')
         self.last_error = u'删除接入设备失败:%s' % utils.safeunicode(err)
         return False
예제 #16
0
 def delete(self, product_id, **kwargs):
     try:
         if product_id.startswith('HOLD-000000-'):
             raise Exception(u'该套餐是系统保留资费套餐,不允许删除')
         if self.db.query(models.TrAccount).filter_by(
                 product_id=product_id).count() > 0:
             raise Exception(u'该套餐有用户使用,不允许删除')
         self.db.query(models.TrProduct).filter_by(id=product_id).delete()
         self.db.query(models.TrProductCharges).filter_by(
             product_id=product_id).delete()
         self.db.query(models.TrProductAttr).filter_by(
             product_id=product_id).delete()
         opsdesc = u'删除资费信息:%s' % product_id
         self.add_oplog(opsdesc)
         self.db.commit()
         dispatch.pub(DBSYNC_STATUS_ADD,
                      models.warp_sdel_obj(models.TrProduct.__tablename__,
                                           dict(id=product_id)),
                      async=True)
         dispatch.pub(DBSYNC_STATUS_ADD,
                      models.warp_sdel_obj(
                          models.TrProductCharges.__tablename__,
                          dict(product_id=product_id)),
                      async=True)
         dispatch.pub(DBSYNC_STATUS_ADD,
                      models.warp_sdel_obj(
                          models.TrProductAttr.__tablename__,
                          dict(product_id=product_id)),
                      async=True)
         self.update_cache_event(product_id)
         return True
     except Exception as err:
         self.db.rollback()
         logger.exception(err, tag='product_delete_error')
         self.last_error = u'操作失败:%s' % utils.safeunicode(err)
         return False
예제 #17
0
 def event_clear_online(self, account_number, nas_addr, acct_session_id):
     try:
         with make_db(self.db) as db:
             logger.info('event clear expire online [username:{0}] {1} {2}'.format(account_number, nas_addr, acct_session_id), username=account_number)
             nas = db.query(models.TrBas).filter_by(ip_addr=nas_addr).first()
             if nas_addr and not nas:
                 db.query(models.TrOnline).filter_by(nas_addr=nas_addr, acct_session_id=acct_session_id).delete()
                 db.commit()
                 dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOnline.__tablename__, dict(nas_addr=nas_addr, acct_session_id=acct_session_id)), async=True)
                 return
             online = db.query(models.TrOnline).filter_by(nas_addr=nas_addr, acct_session_id=acct_session_id).first()
             clear_req = self.get_request(online)
             radius_acct_stop.RadiusAcctStop(self.dbengine, self.mcache, self.aes, clear_req).acctounting()
             logger.info(u'系统触发用户过期清理成功: [username:%s] OnlineInfo: %s ' % (str(account_number), json.dumps(clear_req)), trace='event', username=account_number)
     except Exception as err:
         logger.exception(err)
예제 #18
0
 def event_unlock_online(self, account_number, nas_addr, acct_session_id):
     with make_db(self.db) as db:
         logger.info('event unlock online [username:{0}] {1} {2}'.format(account_number, nas_addr, acct_session_id), username=account_number)
         nas = db.query(models.TrBas).filter_by(ip_addr=nas_addr).first()
         if nas_addr and not nas:
             db.query(models.TrOnline).filter_by(nas_addr=nas_addr, acct_session_id=acct_session_id).delete()
             db.commit()
             dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrOnline.__tablename__, dict(nas_addr=nas_addr, acct_session_id=session_id)), async=True)
             return
         online = db.query(models.TrOnline).filter_by(nas_addr=nas_addr, acct_session_id=acct_session_id).first()
         dm_params = dict(User_Name=account_number, Framed_IP_Address=online.framed_ipaddr, Acct_Session_Id=acct_session_id)
         if int(self.get_param_value('radius_coa_send_nasaddr', 0)):
             dm_params['NAS_IP_Address'] = nas.ip_addr
         deferd = authorize.disconnect(int(nas.vendor_id or 0), self.dictionary, nas.bas_secret, nas.ip_addr, coa_port=int(nas.coa_port or 3799), debug=True, **dm_params).addCallback(self.onSendResp, self.get_request(online)).addErrback(self.onSendError, self.get_request(online))
         logreq = u'nas_addr=%s;coa_port=%s; username=%s; session_id=%s' % (nas.ip_addr,
          int(nas.coa_port or 3799),
          account_number,
          acct_session_id)
         logger.info(u'%s - 系统触发用户强制下线请求: CoaRequest: %s ' % logreq, trace='event', username=account_number)
예제 #19
0
 def update_user_expire(self, new_expire):
     table = models.TrAccount.__table__
     with self.dbengine.begin() as conn:
         stmt = table.update().where(table.c.account_number == self.account.account_number).values(expire_date=new_expire, status=1, sync_ver=tools.gen_sync_ver())
         conn.execute(stmt)
     dispatch.pub(DBSYNC_STATUS_ADD, models.warp_sdel_obj(models.TrAccount.__tablename__, dict(account_number=self.account.account_number)), async=True)