util.py (2666B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\util.py 2 import logging 3 from achievement_system.client.api.error import DefinitionNotFoundError 4 from achievement_system.client.api.repository import get_repository 5 from achievement_system.client.model.definition.category.roots import AchievementCategoryRoot 6 from achievement_system.common.const import LOGGER_NAME 7 from parameter_types.const import ParameterType 8 from parameter_types.parameter_controllers import get_parameter_controller 9 logger = logging.getLogger(LOGGER_NAME) 10 11 def get_controller_for_configured_parameter(definition, configuration): 12 try: 13 controller = get_parameter_controller(definition, configuration.get_values()) 14 return controller 15 except KeyError: 16 logger.exception('Failed to find Parameter Controller for parameter %s of type %s', definition.parameter_key, definition.parameter_type) 17 return None 18 19 20 def get_achievements_targeting_campaign(campaign_name): 21 CAMPAIGN_NAME_VALUE_TYPE = 'campaign_name' 22 overwritten_campaign_names = {'2026_q2_caldari_campaign_qa_testing': '2026_q2_caldari_campaign', 23 '2026_q2_gallente_campaign_qa_testing': '2026_q2_gallente_campaign'} 24 campaign_name = overwritten_campaign_names.get(campaign_name, campaign_name) 25 achievements = [] 26 try: 27 definitions = get_repository().definitions 28 category_identifier = definitions.get_root_category(AchievementCategoryRoot.TIME_LIMITED) 29 entries = definitions.get_achievement_entries_recursive(category_identifier) 30 for entry in entries: 31 contrib_method_id = entry.attributes.contribution_method.identifier 32 contrib_method_definition = definitions.get_contribution_method(contrib_method_id) 33 for param in entry.attributes.contribution_method.parameters: 34 if not _check_parameter_of_the_right_type(contrib_method_definition, param): 35 continue 36 if campaign_name in param.values.get(CAMPAIGN_NAME_VALUE_TYPE, []): 37 achievements.append(entry) 38 39 except DefinitionNotFoundError: 40 logger.warning('Unable to get achievements for campaign %s', campaign_name) 41 42 return achievements 43 44 45 def _check_parameter_of_the_right_type(contrib_method_definition, p): 46 param_definition = None 47 for p_def in contrib_method_definition.parameters: 48 if p.identifier == p_def.identifier: 49 param_definition = p_def 50 break 51 52 if param_definition and param_definition.attributes.param_type == ParameterType.CAMPAIGN_NAME: 53 return True 54 return False