def GetSessionList(initiator): bdb = connect() lookup = AssetsManager.lookup_asset(bdb,"NewAttendanceSession") session_list = [] session_ids = [] presents = {} for entry in lookup: if entry['data']['AssetType'] == 'NewAttendanceSession' : if entry['data']['SessionInitiator'] == initiator: session_ids.append(entry['data']['SessionID']) presents[entry['data']['SessionID']] = 0 session_list.append({ "Name" : entry['data']['SessionName'] , "Date" : entry['data']['CreationDate'], "Time" : entry['data']['CreationTime'], "Present" : "0" }) lookup2 = AssetsManager.lookup_asset(bdb,"SessionPresence") print(lookup2) for entry in lookup2: if entry['data']['AssetType'] == 'SessionPresence' : id = entry['data']['SessionID'] if id in session_ids: presents[id] = presents[id] + 1 index = 0 for session_id in session_ids: session_list[index]['Present'] = presents[session_id] index = index + 1 return session_list[::-1]
def NewMember(did, keys): bdb = connect() lookup = AssetsManager.lookup_asset(bdb, "NewOrgMember") already_regs = False for item in lookup: block = AssetsManager.get_from_id(bdb, item['id']) transactions = AssetsManager.lookup_transactions(bdb, item['id']) transaction = transactions[len(transactions) - 1] owner_pk = transaction['outputs'][0]['public_keys'][0] mdi = transactions[0]['asset']['data']['MemberDigitalID'] if mdi == did: if owner_pk == keys.public_key: already_regs = True break if not already_regs: am = AssetsManager("CREATE", asset_data={ "asset_type": "NewMember", "values": { "MemberDigitalID": did } }, c_keys=keys, bdb=bdb) return am.create() return False
def TransferMember(asset_id, prevu_key, curru_key): bdb = connect() am = AssetsManager("TRANSFER", asset_id=asset_id, p_keys=prevu_key, c_keys=curru_key, bdb=bdb) return am.transfer()
def GetAssetID(digital_id, owner_keys): bdb = connect() lookup = AssetsManager.lookup_asset(bdb, digital_id) for asset in lookup: if asset['data']['AssetType'] == "NewOrgMember": transactions = AssetsManager.lookup_transactions( bdb, asset['id']) transaction = transactions[len(transactions) - 1] if transaction['outputs'][0]['public_keys'][ 0] == owner_keys.public_key: return asset['id'] return False
def NewSession(sess_name,sess_ini_did,org_id,keys): session_id = hmac.new(os.urandom(32).hex().encode('utf-8'),(sess_ini_did[:20]+org_id[-20:]).encode('utf-8'),hashlib.sha256).hexdigest() bdb = connect() am = AssetsManager("CREATE", asset_data={ "asset_type" : "NewAttendanceSession", "values" : { "SessionName" : sess_name, "SessionInitiator" : sess_ini_did, "Organization" : org_id, "SessionID" : session_id, "CreationDate" : datetime.datetime.now().strftime('%d/%m/%y'), "CreationTime" : datetime.datetime.now().strftime('%H:%M') } }, c_keys=keys, bdb=bdb) return (am.create(),session_id)
def GetOrgMemberList(org_keys): bdb = connect() lookup = AssetsManager.lookup_asset(bdb, "NewOrgMember") already_regs = False member_ids = [] for item in lookup: block = AssetsManager.get_from_id(bdb, item['id']) transactions = AssetsManager.lookup_transactions(bdb, item['id']) transaction = transactions[len(transactions) - 1] owner_pk = transaction['outputs'][0]['public_keys'][0] mdi = transactions[0]['asset']['data']['MemberDigitalID'] if owner_pk == org_keys.public_key: state_addr = DigitalIDStateAddress.for_new_user(mdi).address data = GetStateData(state_addr) member_ids.append((data['Name'], mdi)) return member_ids
def MarkPresence(sess_id,m_did,keys): bdb = connect() can_proceed = False lookup = AssetsManager.lookup_asset(bdb,"NewAttendanceSession") for entry in lookup: if entry['data']['AssetType'] == 'NewAttendanceSession' : if entry['data']['SessionID'] == sess_id: can_proceed = True break if can_proceed: am = AssetsManager("CREATE",asset_data={ "asset_type" : "Present", "values" : { "MarkedFor" : m_did, "SessionID" : sess_id } }, c_keys=keys, bdb=bdb) dx = am.create() print(dx) return dx else: return can_proceed