def _updateData(self): if self.fortCtrl.getFort().level >= FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel: defenceDivisionName = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME) else: defenceDivisionName = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME) defenceStart, defenceEnd = self.fortCtrl.getFort().getDefencePeriod() if self._type == FortRosterIntroWindow.TYPE_FORT_UPGRADE: bgIcon = RES_FORT.MAPS_FORT_ABSOLUTEROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTE_HEADER) else: bgIcon = RES_FORT.MAPS_FORT_CHAMPIONROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPION_HEADER) offDay = self.fortCtrl.getFort().getOffDayStr() if self.fortCtrl.getFort().isOffDayEnabled() else None if offDay is not None: defenceDescription = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_OFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd), offDay=offDay, ) else: defenceDescription = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_NOOFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd), ) fortLevel = self.fortCtrl.getFort().level self.as_setDataS( { "windowTitle": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_WINDOWTITLE), "bgIcon": bgIcon, "header": header, "defenceTitle": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCETITLE), "defenceIcon": RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE, "defenceDescription": defenceDescription, "defenceDivisionName": defenceDivisionName, "defenceDivisionIcon": getDivisionIcon( fortLevel, FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, determineAlert=False ), "attackTitle": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ATTACKTITLE), "attackIcon": _ms(RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE), "championDivisionDescription": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONDESCRIPTION), "championDivisionName": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME), "championDivisionIcon": getDivisionIcon( FORT_BATTLE_DIVISIONS.CHAMPION.minFortLevel, fortLevel, determineAlert=True ), "absoluteDivisionDescription": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONDESCRIPTION), "absoluteDivisionName": _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME), "absoluteDivisionIcon": getDivisionIcon( FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, fortLevel, determineAlert=True ), "acceptBtnLabel": _ms(MENU.AWARDWINDOW_OKBUTTON), } ) setRosterIntroWindowSetting(self._type) return
def _populatePreviewBlock(self): fort = self.fortCtrl.getFort() localDateTime = time_utils.getDateTimeInLocal(self.__selectedDate) targetDayStartTimestamp, _ = time_utils.getDayTimeBoundsForLocal(self.__selectedDate) eventItems, dateInfo, noEventsText = [], None, None dateString = _ms(MENU.DATETIME_SHORTDATEFORMATWITHOUTYEAR, weekDay=_ms('#menu:dateTime/weekDays/full/%d' % localDateTime.isoweekday()), monthDay=localDateTime.day, month=toLower(_ms('#menu:dateTime/months/full/%d' % localDateTime.month))) if fort.isOnVacationAt(self.__selectedDate): noEventsText = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_EMPTY_VACATION, date=fort.getVacationDateStr()) elif not self._isValidTime(self.__selectedDate): noEventsText = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_EMPTY_NOTAVAILABLE) else: for dayStartTimestamp, battles in self._getBattlesByDay().iteritems(): if dayStartTimestamp == targetDayStartTimestamp: for battle in sorted(battles): startTimestamp = battle.getStartTime() battleHasEnded = battle.isEnded() opponentsClanInfo = battle.getOpponentClanInfo() if battle.getType() == BATTLE_ITEM_TYPE.ATTACK: if battleHasEnded: icon = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEPAST else: icon = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE titleTpl = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_ITEM_TITLE_OFFENCE) else: if battleHasEnded: icon = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEPAST else: icon = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE titleTpl = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_ITEM_TITLE_DEFENCE) tankIconVO = getDivisionIcon(battle.defenderFortLevel, battle.attackerFortLevel, determineAlert=battle.getType() == BATTLE_ITEM_TYPE.ATTACK) if battle.isWin(): background = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_BATTLEFORTVICTORY resultLabel = 'win' elif battle.isLose(): background = RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_BATTLEFORTDEFEAT resultLabel = 'lose' else: background, resultLabel = (None, None) eventItem = {'icon': icon, 'title': titleTpl % {'clanName': '[%s]' % opponentsClanInfo[1]}, 'clanID': opponentsClanInfo[0], 'direction': _ms(FORTIFICATIONS.GENERAL_DIRECTION, value=_ms('#fortifications:General/directionName%d' % battle.getDirection())), 'timeInfo': _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_ITEM_TIMEINFO) % {'startTime': BigWorld.wg_getShortTimeFormat(startTimestamp), 'endTime': BigWorld.wg_getShortTimeFormat(startTimestamp + time_utils.ONE_HOUR)}, 'background': background, 'tankIconVO': tankIconVO, 'showTankIcon': not battleHasEnded} if battleHasEnded and resultLabel: resultText = makeHtmlString('html_templates:lobby/fortifications', 'battleResult', {'result': _ms(MENU.finalstatistic_commonstats_resultlabel(resultLabel))}) eventItem.update({'result': resultText}) eventItems.append(eventItem) if not len(eventItems): noEventsText = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_EMPTY_NOEVENTS) if len(eventItems) > 0: dateInfo = _ms(FORTIFICATIONS.FORTCALENDARWINDOW_EVENTSLIST_INFO_BATTLESCOUNT, eventsCount=len(eventItems)) self.as_updatePreviewDataS({'dateString': dateString, 'dateInfo': dateInfo, 'noEventsText': noEventsText, 'events': eventItems})
def _updateData(self): if not self.fortCtrl.getFort().isDefenceHourEnabled(): self.destroy() raise self.fortCtrl.getFort().isDefenceHourEnabled() or AssertionError return else: if self.fortCtrl.getFort().level >= FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel: defenceDivisionName = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME) else: defenceDivisionName = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME) defenceStart, defenceEnd = self.fortCtrl.getFort().getDefencePeriod() if self._type == FortRosterIntroWindow.TYPE_FORT_UPGRADE: bgIcon = RES_FORT.MAPS_FORT_ABSOLUTEROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTE_HEADER) else: bgIcon = RES_FORT.MAPS_FORT_CHAMPIONROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPION_HEADER) offDay = self.fortCtrl.getFort().getOffDayStr() if self.fortCtrl.getFort().isOffDayEnabled() else None if offDay is not None: defenceDescription = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_OFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd), offDay=offDay) else: defenceDescription = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_NOOFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd)) fortLevel = self.fortCtrl.getFort().level self.as_setDataS({'windowTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_WINDOWTITLE), 'bgIcon': bgIcon, 'header': header, 'defenceTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCETITLE), 'defenceIcon': RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE, 'defenceDescription': defenceDescription, 'defenceDivisionName': defenceDivisionName, 'defenceDivisionIcon': getDivisionIcon(fortLevel, FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, determineAlert=False), 'attackTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ATTACKTITLE), 'attackIcon': _ms(RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE), 'championDivisionDescription': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONDESCRIPTION), 'championDivisionName': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME), 'championDivisionIcon': getDivisionIcon(FORT_BATTLE_DIVISIONS.CHAMPION.minFortLevel, fortLevel, determineAlert=True), 'absoluteDivisionDescription': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONDESCRIPTION), 'absoluteDivisionName': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME), 'absoluteDivisionIcon': getDivisionIcon(FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, fortLevel, determineAlert=True), 'acceptBtnLabel': _ms(MENU.AWARDWINDOW_OKBUTTON)}) return
def _prepareAndSetData(self): battles = [] invalidateCbDelay = sys.maxint fort = self.fortCtrl.getFort() self.__clearCallback() for battleItem in self.__applyBattlesFilter( fort.getAttacksIn(timePeriod=time_utils.ONE_DAY)): battles.append( (battleItem, i18n.makeString( FORTIFICATIONS. FORTCLANBATTLELIST_RENDERBATTLENAME_CLANBATTLEOFFENCE, clanName=self.__getFmtClanName(battleItem)), RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE, TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_OFFENSE)) for battleItem in self.__applyBattlesFilter( fort.getDefencesIn(timePeriod=time_utils.ONE_DAY)): battles.append( (battleItem, i18n.makeString( FORTIFICATIONS. FORTCLANBATTLELIST_RENDERBATTLENAME_CLANBATTLEDEFENCE, clanName=self.__getFmtClanName(battleItem)), RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE, TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_DEFENSE)) result = [] for battleItem, descr, icon, typeTip in sorted( battles, key=operator.itemgetter(0)): startTime, startTimeLeft = battleItem.getStartTime( ), battleItem.getStartTimeLeft() fortBattle = fort.getBattle(battleItem.getBattleID()) if fortBattle is not None: startTime, startTimeLeft = fortBattle.getRoundStartTime( ), fortBattle.getRoundStartTimeLeft() if fortBattle.isBattleRound(): startTimeLeft = 0 if startTimeLeft > time_utils.QUARTER_HOUR: invalidateCbDelay = min( invalidateCbDelay, startTimeLeft - time_utils.QUARTER_HOUR) elif startTimeLeft > 0: invalidateCbDelay = min(invalidateCbDelay, startTimeLeft) if startTimeLeft <= 0: infoTip = TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_ISINBATTLE else: infoTip = '' if battleItem.isHot() and startTimeLeft > 0: timerData = { 'timeBeforeBattle': startTimeLeft, 'htmlFormatter': text_styles.alert('###') } else: timerData = None battleHourFmt = i18n.makeString( '#fortifications:fortBattleDirectionPopover/battleDurationFmt') battleHourLabel = text_styles.main( battleHourFmt % { 'prevHour': BigWorld.wg_getShortTimeFormat(startTime), 'nextHour': BigWorld.wg_getShortTimeFormat(startTime + time_utils.ONE_HOUR) }) divisionIcon = getDivisionIcon( battleItem.defenderFortLevel, battleItem.attackerFortLevel, determineAlert=battleItem.getType() == BATTLE_ITEM_TYPE.ATTACK) result.append({ 'description': descr, 'canJoin': battleItem.isHot(), 'battleInfo': self.__getBattleInfo(startTime, startTimeLeft), 'battleHour': battleHourLabel, 'battleTypeIcon': icon, 'fortBattleID': battleItem.getBattleID(), 'battleTypeTooltip': typeTip, 'battleInfoTooltip': infoTip, 'timer': timerData, 'divisionIcon': divisionIcon }) title = i18n.makeString( FORTIFICATIONS.GENERAL_DIRECTION, value=i18n.makeString('#fortifications:General/directionName%d' % self._direction)) nextBattles = i18n.makeString( FORTIFICATIONS.FORTBATTLEDIRECTIONPOPOVER_COMMINGBATTLES) nextBattlesLabel = ''.join( (text_styles.standard(nextBattles), text_styles.main(len(result)))) self.as_setDataS({ 'title': title, 'nextBattles': nextBattlesLabel, 'battlesList': result }) if invalidateCbDelay != sys.maxint: LOG_DEBUG('FortBattleDirectionPopover, load invalidation callback', invalidateCbDelay) self.__loadCallback(invalidateCbDelay)
def _prepareAndSetData(self): battles = [] invalidateCbDelay = sys.maxint fort = self.fortCtrl.getFort() self.__clearCallback() for battleItem in self.__applyBattlesFilter(fort.getAttacksIn(timePeriod=time_utils.ONE_DAY)): battles.append((battleItem, i18n.makeString(FORTIFICATIONS.FORTCLANBATTLELIST_RENDERBATTLENAME_CLANBATTLEOFFENCE, clanName=self.__getFmtClanName(battleItem)), RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE, TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_OFFENSE)) for battleItem in self.__applyBattlesFilter(fort.getDefencesIn(timePeriod=time_utils.ONE_DAY)): battles.append((battleItem, i18n.makeString(FORTIFICATIONS.FORTCLANBATTLELIST_RENDERBATTLENAME_CLANBATTLEDEFENCE, clanName=self.__getFmtClanName(battleItem)), RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE, TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_DEFENSE)) result = [] for battleItem, descr, icon, typeTip in sorted(battles, key=operator.itemgetter(0)): startTime, startTimeLeft = battleItem.getStartTime(), battleItem.getStartTimeLeft() fortBattle = fort.getBattle(battleItem.getBattleID()) if fortBattle is not None: startTime, startTimeLeft = fortBattle.getRoundStartTime(), fortBattle.getRoundStartTimeLeft() if fortBattle.isBattleRound(): startTimeLeft = 0 if startTimeLeft > time_utils.QUARTER_HOUR: invalidateCbDelay = min(invalidateCbDelay, startTimeLeft - time_utils.QUARTER_HOUR) elif startTimeLeft > 0: invalidateCbDelay = min(invalidateCbDelay, startTimeLeft) if startTimeLeft <= 0: infoTip = TOOLTIPS.FORTIFICATION_FORTBATTLEDIRECTIONPOPOVER_ISINBATTLE else: infoTip = '' if battleItem.isHot() and startTimeLeft > 0: timerData = {'timeBeforeBattle': startTimeLeft, 'htmlFormatter': text_styles.alert('###')} else: timerData = None battleHourFmt = i18n.makeString('#fortifications:fortBattleDirectionPopover/battleDurationFmt') battleHourLabel = text_styles.main(battleHourFmt % {'prevHour': BigWorld.wg_getShortTimeFormat(startTime), 'nextHour': BigWorld.wg_getShortTimeFormat(startTime + time_utils.ONE_HOUR)}) divisionIcon = getDivisionIcon(battleItem.defenderFortLevel, battleItem.attackerFortLevel, determineAlert=battleItem.getType() == BATTLE_ITEM_TYPE.ATTACK) result.append({'description': descr, 'canJoin': battleItem.isHot(), 'battleInfo': self.__getBattleInfo(startTime, startTimeLeft), 'battleHour': battleHourLabel, 'battleTypeIcon': icon, 'fortBattleID': battleItem.getBattleID(), 'battleTypeTooltip': typeTip, 'battleInfoTooltip': infoTip, 'timer': timerData, 'divisionIcon': divisionIcon}) title = i18n.makeString(FORTIFICATIONS.GENERAL_DIRECTION, value=i18n.makeString('#fortifications:General/directionName%d' % self._direction)) nextBattles = i18n.makeString(FORTIFICATIONS.FORTBATTLEDIRECTIONPOPOVER_COMMINGBATTLES) nextBattlesLabel = ''.join((text_styles.standard(nextBattles), text_styles.main(len(result)))) self.as_setDataS({'title': title, 'nextBattles': nextBattlesLabel, 'battlesList': result}) if invalidateCbDelay != sys.maxint: LOG_DEBUG('FortBattleDirectionPopover, load invalidation callback', invalidateCbDelay) self.__loadCallback(invalidateCbDelay) return
def _updateData(self): if self.fortCtrl.getFort( ).level >= FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel: defenceDivisionName = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME) else: defenceDivisionName = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME) defenceStart, defenceEnd = self.fortCtrl.getFort().getDefencePeriod() if self._type == FortRosterIntroWindow.TYPE_FORT_UPGRADE: bgIcon = RES_FORT.MAPS_FORT_ABSOLUTEROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTE_HEADER) else: bgIcon = RES_FORT.MAPS_FORT_CHAMPIONROSTERINTRO header = _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPION_HEADER) offDay = self.fortCtrl.getFort().getOffDayStr( ) if self.fortCtrl.getFort().isOffDayEnabled() else None if offDay is not None: defenceDescription = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_OFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd), offDay=offDay) else: defenceDescription = _ms( FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCEDESCRIPTION_NOOFFDAY, start=BigWorld.wg_getShortTimeFormat(defenceStart), end=BigWorld.wg_getShortTimeFormat(defenceEnd)) fortLevel = self.fortCtrl.getFort().level self.as_setDataS({ 'windowTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_WINDOWTITLE), 'bgIcon': bgIcon, 'header': header, 'defenceTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_DEFENCETITLE), 'defenceIcon': RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_DEFENCEFUTURE, 'defenceDescription': defenceDescription, 'defenceDivisionName': defenceDivisionName, 'defenceDivisionIcon': getDivisionIcon(fortLevel, FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, determineAlert=False), 'attackTitle': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ATTACKTITLE), 'attackIcon': _ms(RES_ICONS.MAPS_ICONS_LIBRARY_FORTIFICATION_OFFENCEFUTURE), 'championDivisionDescription': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONDESCRIPTION), 'championDivisionName': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_CHAMPIONDIVISIONNAME), 'championDivisionIcon': getDivisionIcon(FORT_BATTLE_DIVISIONS.CHAMPION.minFortLevel, fortLevel, determineAlert=True), 'absoluteDivisionDescription': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONDESCRIPTION), 'absoluteDivisionName': _ms(FORTIFICATIONS.ROSTERINTROWINDOW_ABSOLUTEDIVISIONNAME), 'absoluteDivisionIcon': getDivisionIcon(FORT_BATTLE_DIVISIONS.ABSOLUTE.minFortLevel, fortLevel, determineAlert=True), 'acceptBtnLabel': _ms(MENU.AWARDWINDOW_OKBUTTON) }) setRosterIntroWindowSetting(self._type)
def __makeData(self): fort = self.fortCtrl.getFort() data = {'numOfFavorites': len(fort.favorites), 'favoritesLimit': FORT_MAX_ELECTED_CLANS, 'canAttackDirection': self.fortCtrl.getPermissions().canPlanAttack(), 'canAddToFavorite': self.fortCtrl.getPermissions().canAddToFavorite(), 'isOurFortFrozen': self._isFortFrozen(), 'isSelected': self.__item is not None, 'haveResults': self.__hasResults} isWarDeclared = False isAlreadyFought = False if self.__item is not None: clanID = self.__item.getClanDBID() selectedDefenceHour = time_utils.getDateTimeInLocal(self.__selectedDefencePeriodStart).hour if self.__item.getLocalDefHour()[0] != selectedDefenceHour and not self.__weAreAtWar: warTime = '%s - %s' % (BigWorld.wg_getShortTimeFormat(self.__selectedDefencePeriodStart), BigWorld.wg_getShortTimeFormat(self.__selectedDefencePeriodEnd)) warPlannedIcon = makeHtmlString('html_templates:lobby/iconText', 'alert', {}) warPlannedMsg = makeHtmlString('html_templates:lobby/textStyle', 'alertText', {'message': warTime}) warPlannedTime = _ms(warPlannedIcon + ' ' + warPlannedMsg) data.update({'warPlannedTime': warPlannedTime, 'warPlannedTimeTT': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_WARTIME, warTime=warTime)}) if self.__weAreAtWar: closestAttack = self.__upcomingAttack or self.__attackInCooldown closestAttackTime = closestAttack.getStartTime() isWarDeclared = self.__upcomingAttack is not None isAlreadyFought = self.__attackInCooldown is not None and not self.__hasBeenCounterAttacked data.update({'isWarDeclared': isWarDeclared, 'isAlreadyFought': isAlreadyFought, 'warPlannedDate': BigWorld.wg_getLongDateFormat(closestAttackTime), 'warNextAvailableDate': BigWorld.wg_getLongDateFormat(closestAttackTime + time_utils.ONE_WEEK)}) isFrozen = fort.isFrozen() clanFortBattlesStats = self.__item.getStatistics().getBattlesStats() battlesCount = clanFortBattlesStats.getBattlesCount() battlesWinsEff = clanFortBattlesStats.getWinsEfficiency() MIN_VALUE = 0.01 clanAvgDefresValue = functions.roundToMinOrZero(clanFortBattlesStats.getProfitFactor(), MIN_VALUE) data.update({'dateSelected': BigWorld.wg_getLongDateFormat(self.__selectedDayStart), 'selectedDayTimestamp': self.__selectedDayStart, 'clanTag': '[%s]' % self.__item.getClanAbbrev(), 'clanName': self.__item.getClanName(), 'clanInfo': self.__item.getClanMotto(), 'clanId': clanID, 'clanEmblem': self.__clanEmblem, 'isFavorite': clanID in fort.favorites, 'isFrozen': isFrozen, 'selectedDateText': self.__getSelectedDateText(), 'clanBattles': {'value': BigWorld.wg_getNiceNumberFormat(battlesCount) if battlesCount else '--', 'icon': RES_ICONS.MAPS_ICONS_LIBRARY_DOSSIER_BATTLES40X32, 'ttHeader': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_BATTLES_HEADER), 'ttBody': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_BATTLES_BODY, wins=BigWorld.wg_getNiceNumberFormat(clanFortBattlesStats.getWinsCount()), defeats=BigWorld.wg_getNiceNumberFormat(clanFortBattlesStats.getLossesCount()))}, 'clanWins': {'value': '%s%%' % BigWorld.wg_getNiceNumberFormat(functions.roundToMinOrZero(battlesWinsEff, MIN_VALUE) * 100) if battlesWinsEff is not None else '--', 'icon': RES_ICONS.MAPS_ICONS_LIBRARY_DOSSIER_WINS40X32, 'ttHeader': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_WINS_HEADER), 'ttBody': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_WINS_BODY)}, 'clanAvgDefres': {'value': BigWorld.wg_getNiceNumberFormat(clanAvgDefresValue) if clanAvgDefresValue else '--', 'icon': RES_ICONS.MAPS_ICONS_LIBRARY_DOSSIER_DEFRESRATIO40X32, 'ttHeader': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_AVGDEFRES_HEADER), 'ttBody': _ms(TOOLTIPS.FORTIFICATION_FORTINTELLIGENCECLANDESCRIPTION_AVGDEFRES_BODY)}, 'directions': self.__getDirectionsData()}) if self.fortCtrl.getPermissions().canPlanAttack() and not isWarDeclared and not isAlreadyFought: attackerLevel = self.fortCtrl.getFort().level defenderLevel = self.__item.getLevel() data['divisionIcon'] = getDivisionIcon(defenderLevel, attackerLevel) self.as_setDataS(data) return