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

job_dynamic_data.py (5240B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\jobboard\client\features\campaigns\job_dynamic_data.py
      2 from campaigns.client.v1.data_model.objective import ParticipantState
      3 UNDEFINED = -1
      4 
      5 class DynamicCampaignJobData(object):
      6 
      7     def __init__(self, repository, campaign_id, objective_id, isk_reward, lp_reward):
      8         self._repository = repository
      9         self._campaign_id = campaign_id
     10         self._objective_id = objective_id
     11         self._isk_reward = isk_reward
     12         self._lp_reward = lp_reward
     13 
     14     @property
     15     def _objective_stats(self):
     16         objective_stats_list = self._repository.get_objective_stats([self._objective_id])
     17         if objective_stats_list:
     18             return objective_stats_list[0]
     19 
     20     @property
     21     def has_valid_objective_stats_cache(self):
     22         return self._repository.objective_stats_have_valid_cache(self._objective_id)
     23 
     24     @property
     25     def has_valid_objective_participant_stats_cache(self):
     26         return self._repository.objective_participant_stats_have_valid_cache(self._objective_id)
     27 
     28     @property
     29     def has_valid_stats_caches(self):
     30         return self.has_valid_objective_stats_cache and self.has_valid_objective_participant_stats_cache
     31 
     32     @property
     33     def _participant_stats(self):
     34         stats_list = self._repository.get_campaign_participant_stats(self._campaign_id)
     35         for objective_stats in stats_list:
     36             if objective_stats.objective_id == self._objective_id:
     37                 return objective_stats
     38 
     39     @property
     40     def unclaimed_rewards(self):
     41         unredeemed = self._repository.get_unredeemed_rewards_for_objective(self._objective_id)
     42         return unredeemed
     43 
     44     @property
     45     def current_total_progress(self):
     46         objective_stats = self._objective_stats
     47         if not objective_stats:
     48             return 0
     49         return objective_stats.current_objective_progress
     50 
     51     @property
     52     def committed_participants(self):
     53         objective_stats = self._objective_stats
     54         if not objective_stats:
     55             return 0
     56         return objective_stats.committed_participants
     57 
     58     def has_current_total_progres_changed(self):
     59         return True
     60 
     61     @property
     62     def personal_progress(self):
     63         objective_participant_stats = self._participant_stats
     64         if objective_participant_stats:
     65             return objective_participant_stats.current_participant_progress
     66         return 0
     67 
     68     @property
     69     def has_claimable_rewards(self):
     70         return bool(self.unclaimed_rewards)
     71 
     72     @property
     73     def unclaimed_isk_info(self):
     74         unclaimed_info = UnclaimedCurrencyInfo()
     75         if self._isk_reward is None or not self._isk_reward.amount_per_interval:
     76             return unclaimed_info
     77         unclaimed_info.amount_per_interval = self._isk_reward.amount_per_interval
     78         unclaimed_info.interval_size = self._isk_reward.interval_size
     79         unclaimed_rewards = self.unclaimed_rewards
     80         if not unclaimed_rewards:
     81             return unclaimed_info
     82         for unclaimed in unclaimed_rewards:
     83             if not unclaimed.isk_intervals:
     84                 return unclaimed_info
     85             unclaimed_info.num_contributions += unclaimed.isk_intervals * self._isk_reward.interval_size
     86             unclaimed_info.unclaimed_value += unclaimed.isk_intervals * self._isk_reward.amount_per_interval
     87 
     88         return unclaimed_info
     89 
     90     @property
     91     def unclaimed_lp_info(self):
     92         unclaimed_info = UnclaimedCurrencyInfo()
     93         if self._lp_reward is None or not self._lp_reward.amount_per_interval:
     94             return unclaimed_info
     95         unclaimed_info.amount_per_interval = self._lp_reward.amount_per_interval
     96         unclaimed_info.interval_size = self._lp_reward.interval_size
     97         unclaimed_rewards = self.unclaimed_rewards
     98         if not unclaimed_rewards:
     99             return unclaimed_info
    100         for unclaimed in unclaimed_rewards:
    101             if not unclaimed.lp_intervals:
    102                 return unclaimed_info
    103             unclaimed_info.num_contributions += unclaimed.lp_intervals * self._lp_reward.interval_size
    104             unclaimed_info.unclaimed_value += unclaimed.lp_intervals * self._lp_reward.amount_per_interval
    105 
    106         return unclaimed_info
    107 
    108     @property
    109     def claimed_amount(self):
    110         return 0
    111 
    112     @property
    113     def _participant_state(self):
    114         objective_participant_stats = self._participant_stats
    115         if objective_participant_stats:
    116             return objective_participant_stats.participant_state
    117         return ParticipantState.UNSPECIFIED
    118 
    119     @property
    120     def is_participant_state_unknown(self):
    121         return self._participant_state == ParticipantState.UNSPECIFIED
    122 
    123     @property
    124     def is_committed(self):
    125         return self._participant_state == ParticipantState.COMMITTED
    126 
    127     @property
    128     def is_resigned(self):
    129         return self._participant_state == ParticipantState.RESIGNED
    130 
    131 
    132 class UnclaimedCurrencyInfo(object):
    133 
    134     def __init__(self, unclaimed_value = 0, num_contributions = 0, amount_per_interval = 0, interval_size = 1):
    135         self.unclaimed_value = unclaimed_value
    136         self.num_contributions = num_contributions
    137         self.amount_per_interval = amount_per_interval
    138         self.interval_size = interval_size