from time import time from nullptr.util import * from .system_member import SystemMember size_names = ['SMALL','MODERATE','LARGE'] class Survey(SystemMember): identifier = 'signature' type: str = '' deposits: list[str] = [] size: int = 0 expires: int = 0 expires_str: str = '' exhausted: bool = False @classmethod def ext(cls): return 'svy' def path(self): sector, system, waypoint, signature = self.symbol.split('-') return f'atlas/{sector}/{system[0:1]}/{system}/{waypoint}-{signature}.{self.ext()}' def is_expired(self): return time() > self.expires or self.exhausted def api_dict(self): return { 'signature': self.symbol, 'symbol': str(self.waypoint), 'deposits': [{'symbol': d} for d in self.deposits], 'expiration': self.expires_str, 'size': size_names[self.size] } def update(self, d): sz = must_get(d, 'size') self.size = size_names.index(sz) self.deposits = [d['symbol'] for d in must_get(d, 'deposits')] self.seta('expires',d, 'expiration',parse_timestamp) self.seta('expires_str',d, 'expiration') def f(self, detail=1): result = self.symbol if detail > 1: result += ' ' + ','.join(self.deposits) minutes = max(self.expires - time(), 0) //60 result += ' ' + str(int(minutes)) + 'm' return result