def get_clients_on_switch(self, inp): """ Возвращает всех зарезервированных клиентов на свитче """ ip = check_ip(inp) field = 'NDA.NET_ADDRESS' if ip else 'EQM.DEVICE_NAME' value = ip if ip else check_sysname(inp) if not value: msg = 'Не распознал условие поиска!' return { 'status': Status.ERROR, 'db' : 'orange', 'msg' : msg } where = "{0} = '{1}'".format(field, value) query = ''' SELECT NA.NET_ADDRESS, PE.AGREEMENT_NUMBER, DP.DEVICE_PORT_ID, DP.PORT_NAME, NDA.NET_ADDRESS SWIP '''.format(where) status, rows = self.fetchall(query) if status != 0: msg = 'Ошибка выполнения запроса к базе данных!' return { 'status': Status.ERROR, 'db' : 'orange', 'msg' : msg } tmp = {} swip = '' for row in rows: sw_port = extract_port(row[3]) tmp[sw_port] = [row[0], row[1], row[2]] if row[4]: swip = row[4] if not tmp: msg = 'На свитче нет абонентов!' return { 'status': Status.EMPTY, 'db' : 'orange', 'msg' : msg } if not swip: msg = 'Не смог получить ip свитча!' print(msg) return { 'status': Status.ERROR, 'db' : 'orange', 'msg' : msg } return { 'status' : Status.SUCCESS, 'data' : tmp, 'swip' : swip }
def get_user_params(self, bill=None, ip=None): """ возвращает из оранжа улицу и имя свитча, в который воткнут клиент """ if ip: where = "NA.NET_ADDRESS='{0}'".format(ip) elif bill: where = "PE.AGREEMENT_NUMBER='{0}'".format(bill) else: msg = 'Неверное условие поиска!' return dumps({ 'status': Status.ERROR, 'db' : 'orange', 'msg' : msg }) query = ''' SELECT AS IP, -- 0 AS MASK, -- 1 AS GW, -- 2 AS SWIP, -- 3 AS PORT, -- 4 AS SYSNAME, -- 5 AS ADDR, -- 6 AS DISTRICT, -- 7 AS ARNAME -- 8 ) '''.format(where) status, row = self.fetchone(query) if status != 0: msg = 'Ошибка выполнения запроса к базе данных!' return dumps({ 'status': Status.ERROR, 'db' : 'orange', 'msg' : msg }) if not row: return dumps({ 'status' : Status.EMPTY, 'db' : 'orange' }) client_ip = row[0] mask = row[1] short_mask = mask[-2:] long_mask = MASKS[short_mask] ip_mask = "<span id='orange-ip-addr'>{0}</span> / <a href='#' id='cidr' data-value='{1}'>{2}</a>".format(client_ip, long_mask, short_mask) gateway = row[2] sw_ip = row[3] sw_port = extract_port(row[4]) switch_and_port = '<a href="#" id="swIp" data-ip="{0}">{0}</a> : '.format(sw_ip) switch_and_port += '<span id="swPort" data-value="{0}"">{0}</span>'.format(sw_port) data = { 'dhcp_ip' : ip_mask, 'dhcp_gw' : gateway, 'dhcp_swp' : switch_and_port, 'ora_sysname' : row[5], 'ora_addr' : row[6], 'ora_district' : row[7], 'ora_arname' : row[8] } return dumps({ 'status' : Status.SUCCESS, 'data' : data })