def test_get_friends_number(self): hero_1 = self.hero account_2 = self.accounts_factory.create_account() hero_2 = logic.load_hero(account_id=account_2.id) account_3 = self.accounts_factory.create_account() hero_3 = logic.load_hero(account_id=account_3.id) person_1 = self.place_1.persons[0] person_2 = self.place_1.persons[-1] hero_1.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) hero_1.premium_state_end_at = datetime.datetime.now( ) + datetime.timedelta(seconds=60) logic.save_hero(hero_1) hero_2.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) logic.save_hero(hero_2) hero_3.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) hero_3.premium_state_end_at = datetime.datetime.now( ) + datetime.timedelta(seconds=60) logic.save_hero(hero_3) account_4 = self.accounts_factory.create_account(is_fast=True) hero_4 = logic.load_hero(account_id=account_4.id) hero_4.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) logic.save_hero(hero_4) account_5 = self.accounts_factory.create_account() hero_5 = logic.load_hero(account_id=account_5.id) hero_5.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) hero_5.ban_state_end_at = datetime.datetime.now() + datetime.timedelta( seconds=60) logic.save_hero(hero_5) account_6 = self.accounts_factory.create_account() hero_6 = logic.load_hero(account_id=account_6.id) hero_6.preferences.set(relations.PREFERENCE_TYPE.FRIEND, person_1) hero_6.active_state_end_at = datetime.datetime.now( ) - datetime.timedelta(seconds=60) logic.save_hero(hero_6) self.assertEqual( set([ h.id for h in HeroPreferences.get_friends_of(person_1, all=False) ]), set([hero_1.id, hero_3.id])) self.assertEqual( set([ h.id for h in HeroPreferences.get_friends_of(person_1, all=True) ]), set([hero_1.id, hero_2.id, hero_3.id]))
def place_info_persons_data(place): data = [] for person in place.persons: building = storage.buildings_storage.get_by_person_id(person.id) connections = [(connection_type.value, person_id) for connection_type, person_id in persons_storage.social_connections.get_person_connections(person)] connections.sort() person_data = {'id': person.id, 'name': person.name, 'gender': person.gender.value, 'race': person.race.value, 'type': person.type.value, 'unfreeze_in': person.time_before_unfreeze.total_seconds(), 'mastery': {'value': person.mastery, 'name': person.mastery_verbose}, 'power': { 'percents': person.power / place.total_persons_power if place.total_persons_power > 0 else 0, 'positive_bonus': person.power_positive, 'negative_bonus': person.power_negative }, 'building': building.id if building else None, 'connections': connections, 'keepers': {'friends': [hero.account_id for hero in HeroPreferences.get_friends_of(person, all=place.depends_from_all_heroes)], 'enemies': [hero.account_id for hero in HeroPreferences.get_enemies_of(person, all=place.depends_from_all_heroes)]} } data.append(person_data) return data
def place_info_persons_data(place): data = [] for person in place.persons: building = storage.buildings_storage.get_by_person_id(person.id) connections = [ (connection_type.value, person_id) for connection_type, person_id in persons_storage.social_connections.get_person_connections(person) ] connections.sort() person_data = { 'id': person.id, 'name': person.name, 'gender': person.gender.value, 'race': person.race.value, 'type': person.type.value, 'unfreeze_in': person.time_before_unfreeze.total_seconds(), 'mastery': { 'value': person.mastery, 'name': person.mastery_verbose }, 'power': { 'percents': person.power / place.total_persons_power if place.total_persons_power > 0 else 0, 'positive_bonus': person.power_positive, 'negative_bonus': person.power_negative }, 'building': building.id if building else None, 'connections': connections, 'keepers': { 'friends': [ hero.account_id for hero in HeroPreferences.get_friends_of( person, all=place.depends_from_all_heroes) ], 'enemies': [ hero.account_id for hero in HeroPreferences.get_enemies_of( person, all=place.depends_from_all_heroes) ] } } data.append(person_data) return data