Example #1
0
	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