diff --git a/engineapi/engineapi/actions.py b/engineapi/engineapi/actions.py index 493d5c94..0f55b9d7 100644 --- a/engineapi/engineapi/actions.py +++ b/engineapi/engineapi/actions.py @@ -16,7 +16,7 @@ from sqlalchemy.engine import Row from web3 import Web3 from web3.types import ChecksumAddress -from .data import Score, LeaderboardScore, LeaderboardConfigUpdate +from .data import Score, LeaderboardScore, LeaderboardConfigUpdate, LeaderboardConfig from .contracts import Dropper_interface, ERC20_interface, Terminus_interface from .models import ( DropperClaimant, @@ -1508,10 +1508,11 @@ def list_leaderboards_resources( def get_leaderboard_config_entry( leaderboard_id: uuid.UUID, ) -> BugoutSearchResult: + query = f"#leaderboard_id:{leaderboard_id}" configs = bc.search( token=MOONSTREAM_ADMIN_ACCESS_TOKEN, journal_id=MOONSTREAM_LEADERBOARD_GENERATOR_JOURNAL_ID, - query=f"#leaderboard_id:{leaderboard_id}", + query=query, limit=1, ) @@ -1534,7 +1535,14 @@ def get_leaderboard_config( entry = get_leaderboard_config_entry(leaderboard_id) - return json.loads(entry.content) # type: ignore + content = json.loads(entry.content) # type: ignore + + if "status:active" not in entry.tags: + content["leaderboard_auto_update_active"] = False + else: + content["leaderboard_auto_update_active"] = True + + return content def update_leaderboard_config( @@ -1567,7 +1575,14 @@ def update_leaderboard_config( content=json.dumps(current_config.dict()), ) - return json.loads(entry.content) + new_config = json.loads(entry.content) + + if "status:active" not in entry.tags: + new_config["leaderboard_auto_update_active"] = False + else: + new_config["leaderboard_auto_update_active"] = True + + return new_config def activate_leaderboard_config( @@ -1606,15 +1621,11 @@ def deactivate_leaderboard_config( f"Leaderboard config {leaderboard_id} not active" ) - bc.delete_entries_tags( + bc.delete_tag( token=MOONSTREAM_ADMIN_ACCESS_TOKEN, journal_id=MOONSTREAM_LEADERBOARD_GENERATOR_JOURNAL_ID, - entries_tags=[ - { - "journal_entry_id": entry_config.entry_url.split("/")[-1], - "tags": ["status:active"], - } - ], + entry_id=entry_config.entry_url.split("/")[-1], + tag="status:active", ) @@ -1656,6 +1667,7 @@ def check_leaderboard_resource_permissions( headers = { "Authorization": f"Bearer {token}", } + # If user don't have at least read permission return 404 result = requests.get(url=permission_url, headers=headers, timeout=10) diff --git a/engineapi/engineapi/data.py b/engineapi/engineapi/data.py index 8d63d8bb..8a33d619 100644 --- a/engineapi/engineapi/data.py +++ b/engineapi/engineapi/data.py @@ -431,7 +431,8 @@ class LeaderboardScoresChangesResponse(BaseModel): class LeaderboardConfig(BaseModel): - leaderboard_id: UUID + leaderboard_id: str + leaderboard_auto_update_active: bool = False query_name: str params: Dict[str, int] normalize_addresses: bool