NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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