@@ -906,7 +906,7 @@ async def handle_list_admin_ops(data, receiver_id, signer_id, receiptId):
906906 }
907907
908908 activity , activity_created = await Activity .objects .aupdate_or_create (
909- type = "List_Admin_Ops " , defaults = activity
909+ type = "Add_List_Admin " , defaults = activity
910910 )
911911 except Exception as e :
912912 logger .error (f"Failed to remove list admin, Error: { e } " )
@@ -1612,7 +1612,7 @@ def process_project_event(event_data, chain_id="stellar"):
16121612 project .admins .add (admin )
16131613
16141614 # Associate team members
1615- for team_member_data in project_data [ 'team_members' ] :
1615+ for team_member_data in project_data . get ( 'team_members' , []) :
16161616 team_member , _ = Account .objects .get_or_create (id = team_member_data ['value' ])
16171617 project .team_members .add (team_member )
16181618
@@ -1888,6 +1888,146 @@ def update_round_payout(event_data, tx_hash, chain_id="stellar"):
18881888 logger .error (f"Error updating Payout. { str (e )} " )
18891889 return False
18901890
1891+
1892+
1893+
1894+ def handle_stellar_list (data , contract_id , timestamp , chain_id = "stellar" ):
1895+ # receipt = block.receipts().filter(receiptId=receiptId)[0]
1896+ try :
1897+ logger .info ("upserting involveed accts..." )
1898+
1899+ owner_address = data .get ('owner' )
1900+ chain = Chain .objects .get (name = chain_id )
1901+ Account .objects .get_or_create (defaults = {"chain" :chain },id = owner_address )
1902+
1903+
1904+ logger .info (f"creating list..... { data } " )
1905+
1906+ listObject = List .objects .create (
1907+ on_chain_id = data ["id" ],
1908+ chain = chain ,
1909+ owner_id = data ["owner" ],
1910+ default_registration_status = data ["default_registration_status" ][0 ],
1911+ name = data ["name" ],
1912+ description = data ["description" ],
1913+ cover_image_url = data ["cover_img_url" ],
1914+ admin_only_registrations = data ["admin_only_registrations" ],
1915+ created_at = datetime .fromtimestamp (data ["created_ms" ] / 1000 ),
1916+ updated_at = datetime .fromtimestamp (data ["updated_ms" ] / 1000 ),
1917+ )
1918+
1919+ if data .get ("admins" ):
1920+ for admin_id in data ["admins" ]:
1921+ admin_object , _ = Account .objects .get_or_create (defaults = {"chain" :chain },
1922+ id = admin_id ,
1923+ )
1924+ listObject .admins .add (admin_object )
1925+ logger .info (f"created list for chain { chain .name } ....." )
1926+ return True
1927+ except Exception as e :
1928+ logger .error (f"Failed to handle new list, Error: { e } " )
1929+ return False
1930+
1931+
1932+ def handle_stellar_list_update (data , contract_id , timestamp , chain_id = "stellar" ):
1933+ try :
1934+ logger .info (f"updating list from result..... { data } " )
1935+
1936+ listObject = List .objects .filter (on_chain_id = data ["id" ]).update (
1937+ owner_id = data ["owner" ],
1938+ default_registration_status = data ["default_registration_status" ][0 ],
1939+ name = data ["name" ],
1940+ description = data ["description" ],
1941+ cover_image_url = data ["cover_image_url" ],
1942+ admin_only_registrations = data ["admin_only_registrations" ],
1943+ created_at = datetime .fromtimestamp (data ["created_at" ] / 1000 ),
1944+ updated_at = datetime .fromtimestamp (data ["updated_at" ] / 1000 ),
1945+ )
1946+ return True
1947+ except Exception as e :
1948+ logger .error (f"Failed to handle list update, Error: { e } " )
1949+ return False
1950+
1951+
1952+ def handle_new_stellar_list_registration (data , contract_id , tx_hash , chain_id = "stellar" ):
1953+ logger .info (f"new Project data: { data } " )
1954+ # Prepare data for insertion
1955+ chain = Chain .objects .get (name = chain_id )
1956+ parent_list = List .objects .get (on_chain_id = data ["list_id" ])
1957+ try :
1958+ project = Account .objects .get_or_create ({"chain" :chain , "id" : data ["registrant_id" ]})
1959+ except Exception as e :
1960+ logger .error (f"Encountered error trying to get create acct: { e } " )
1961+
1962+ logger .info (f"creating new List registration" )
1963+
1964+ try :
1965+ _ = ListRegistration .objects .create (
1966+ ** {
1967+ "id" : data ["id" ],
1968+ "registrant_id" : data ["registrant_id" ],
1969+ "list_id" : parent_list .id ,
1970+ "status" : data ["status" ],
1971+ "submitted_at" : datetime .fromtimestamp (data ["submitted_ms" ] / 1000 ),
1972+ "updated_at" : datetime .fromtimestamp (data ["updated_ms" ] / 1000 ),
1973+ "registered_by_id" : data ["registered_by" ],
1974+ "admin_notes" : data .get ("admin_notes" ),
1975+ "registrant_notes" : data .get ("registrant_notes" ),
1976+ "tx_hash" : tx_hash ,
1977+ }
1978+ )
1979+ except Exception as e :
1980+ logger .error (f"Encountered error trying to create list: { e } " )
1981+
1982+ # Insert activity
1983+ try :
1984+ defaults = {
1985+ "signer_id" : data ["registered_by" ],
1986+ "receiver_id" : contract_id ,
1987+ "timestamp" : data ["submitted_ms" ],
1988+ "tx_hash" : tx_hash ,
1989+ }
1990+
1991+ activity , activity_created = Activity .objects .update_or_create (
1992+ action_result = data , type = "Register" , defaults = defaults
1993+ )
1994+ return True
1995+ except Exception as e :
1996+ logger .error (f"Encountered error trying to insert activity: { e } " )
1997+ return False
1998+
1999+
2000+ def handle_stellar_list_admin_ops (data , contract_id , timestamp , tx_hash ):
2001+ try :
2002+ round_id , admins = data [0 ], data [1 ]
2003+ logger .info (f"updating admins: { admins } for round { round_id } " )
2004+ round_obj = Round .objects .get (on_chain_id = round_id ) # select related?
2005+ chain = Chain .objects .get (name = "stellar" )
2006+
2007+ for acct in admins :
2008+ admin , _ = Account .objects .get_or_create (defaults = {"chain" :chain },id = acct )
2009+ contains = round_obj .admins .acontains (admin )
2010+ if not contains :
2011+ round_obj .admins .add (admin )
2012+ for admin in round_obj .admins .all ():
2013+ if not admin .id in admins :
2014+ round_obj .admins .remove (admin )
2015+
2016+ activity = {
2017+ "signer_id" : round_obj .owner .id ,
2018+ "receiver_id" : contract_id ,
2019+ "timestamp" : timestamp ,
2020+ "tx_hash" : tx_hash ,
2021+ }
2022+
2023+ activity , activity_created = Activity .objects .update_or_create (
2024+ type = "Add_List_Admin" , defaults = activity
2025+ )
2026+ return True
2027+ except Exception as e :
2028+ logger .error (f"Failed to remove list admin, Error: { e } " )
2029+ return False
2030+
18912031# Campaign Event Indexing Methods
18922032
18932033async def handle_new_campaign (data : dict , created_at ):
0 commit comments