def show(self, uri, cols=None, fformat=False, limit=0): ur = Uri(self.dburi, self.db) us = User(self.dburi, self.db) ua = User_attrs(self.dburi, self.db) do = Domain(self.dburi, self.db) cr = Cred(self.dburi, self.db) try: uids = ur.get_uids(uri) except: try: uids = ur.get_uids_for_username(uri) except: try: uids = us.get(uri) except: u, d = split_sip_uri(uri) try: uids = [cr.get_uid(u, d)] except: try: uids = cr.get_uids_for_username(u) except: try: uids = cr.get_uids_for_username(uri) except: uids = [] dids = [] # get uris uris = [] for uid in uids: u, d = ur.show_uid(uid, ['uid', 'username', 'did'], fformat=fformat, limit=limit) uris += u for row in uris: dids.append(row[2]) # get credentials creds = [] for uid in uids: u, d = cr.show_uid(uid, ['uid', 'auth_username', 'realm', 'password'], fformat=fformat, limit=limit) creds += u for row in creds: try: did = do.get_did(row[2]) except: continue dids.append(did) dids = uniq(dids) domains = {} for did in dids: try: dom = do.get_domain(did) except: continue domains[did] = dom attrs = {} for uid in uids: ce = cond(CND_NO_DELETED, uid=uid) rows = ua.show_cnd(ce, ['name', 'value'], fformat, limit)[0] line = [] for row in rows: line.append('%s=%s' % tuple(row)) attrs[uid] = ', '.join(line) # show desc = [('uid',), ('source',), ('value',)] ret = [] for u in uris: dom = domains.get(u[2]) uri = '%s@%s' % (u[1], dom) uid = u[0] ret.append([uid, 'uri', uri ]) for c in creds: cred = 'username=%s realm=%s password=%s' % (c[1], c[2], c[3]) uid = c[0] ret.append([uid, 'credentials', cred ]) for uid, attr in attrs.items(): ret.append([uid, 'attr', attr ]) # limit output if limit > 0: ret = ret[:limit] return ret, desc