Ejemplo n.º 1
0
def debug_clear_service():
    if not project_settings.TESTS_RUNNING:
        return

    tt_api.sync_request(url=conf.game_settings.TT_ENERGY_DEBUG_CLEAR_SERVICE_URL,
                        data=bank_pb2.DebugClearServiceRequest(),
                        AnswerType=bank_pb2.DebugClearServiceResponse)
Ejemplo n.º 2
0
def change_cards(account_id,
                 operation_type,
                 to_add=(),
                 to_remove=(),
                 storage=relations.STORAGE.FAST):
    operations = []

    for card in to_remove:
        operations.append(
            storage_pb2.Operation(destroy=storage_pb2.OperationDestroy(
                item_id=card.uid.hex,
                owner_id=account_id,
                operation_type=operation_type)))

    for card in to_add:
        operations.append(
            storage_pb2.Operation(create=storage_pb2.OperationCreate(
                item_id=card.uid.hex,
                owner_id=account_id,
                storage_id=storage.value,
                base_type=card.item_base_type,
                full_type=card.item_full_type,
                data=s11n.to_json(card.serialize()),
                operation_type=operation_type)))

    tt_api.sync_request(url=conf.settings.TT_STORAGE_APPLY_URL,
                        data=storage_pb2.ApplyRequest(operations=operations),
                        AnswerType=storage_pb2.ApplyResponse)
Ejemplo n.º 3
0
def remove_old_system_messages():
    tt_api.sync_request(
        url=conf.settings.TT_REMOVE_OLD_MESSAGES_URL,
        data=personal_messages_pb2.RemoveOldMessagesRequest(
            accounts_ids=[accounts_logic.get_system_user_id()],
            barrier=conf.settings.SYSTEM_MESSAGES_LEAVE_TIME.total_seconds()),
        AnswerType=personal_messages_pb2.RemoveOldMessagesResponse)
Ejemplo n.º 4
0
    def cmd_debug_clear_service(self):
        if not project_settings.TESTS_RUNNING:
            return

        tt_api.sync_request(url=self.entry_point + 'debug-clear-service',
                            data=impacts_pb2.DebugClearServiceRequest(),
                            AnswerType=impacts_pb2.DebugClearServiceResponse)
Ejemplo n.º 5
0
def debug_clear_service():
    if not project_settings.TESTS_RUNNING:
        return

    tt_api.sync_request(url=conf.settings.TT_STORAGE_DEBUG_CLEAR_SERVICE_URL,
                        data=storage_pb2.DebugClearServiceRequest(),
                        AnswerType=storage_pb2.DebugClearServiceResponse)
Ejemplo n.º 6
0
    def cmd_scale_impacts(self, target_types, scale):
        data = impacts_pb2.ScaleImpactsRequest(
            target_types=[target_type.value for target_type in target_types],
            scale=scale)

        tt_api.sync_request(url=self.entry_point + 'scale-impacts',
                            data=data,
                            AnswerType=impacts_pb2.ScaleImpactsResponse)
Ejemplo n.º 7
0
def debug_clear_service():
    if not project_settings.TESTS_RUNNING:
        return

    tt_api.sync_request(
        url=conf.accounts_settings.TT_PLAYERS_TIMERS_DEBUG_CLEAR_SERVICE_URL,
        data=timers_pb2.DebugClearServiceRequest(),
        AnswerType=timers_pb2.DebugClearServiceResponse)
Ejemplo n.º 8
0
def change_cards_timer_speed(account_id, speed):
    try:
        tt_api.sync_request(
            url=conf.accounts_settings.TT_PLAYERS_TIMERS_CHANGE_SPEED,
            data=timers_pb2.ChangeSpeedRequest(
                owner_id=account_id,
                entity_id=0,
                type=relations.PLAYER_TIMERS_TYPES.CARDS_MINER.value,
                speed=speed),
            AnswerType=timers_pb2.ChangeSpeedResponse)
    except common_exceptions.TTAPIUnexpectedAPIStatus:
        raise exceptions.CanNotChangeCardsTimerSpeed()
Ejemplo n.º 9
0
def place_sell_lots(lots):

    raw_lots = []

    for lot in lots:
        raw_lots.append(
            market_pb2.Lot(item_type=lot.full_type,
                           item_id=lot.item_id.hex,
                           owner_id=lot.owner_id,
                           price=lot.price))

    tt_api.sync_request(url=conf.payments_settings.TT_PLACE_SELL_LOT_URL,
                        data=market_pb2.PlaceSellLotRequest(lots=raw_lots),
                        AnswerType=market_pb2.PlaceSellLotResponse)
Ejemplo n.º 10
0
def create_cards_timer(account_id):
    try:
        tt_api.sync_request(
            url=conf.accounts_settings.TT_PLAYERS_TIMERS_CREATE_TIMER,
            data=timers_pb2.CreateTimerRequest(
                owner_id=account_id,
                entity_id=0,
                type=relations.PLAYER_TIMERS_TYPES.CARDS_MINER.value,
                speed=logic_cards_constants.NORMAL_PLAYER_SPEED,
                border=logic_cards_constants.RECEIVE_TIME,
                resources=0,
                callback_data=''),
            AnswerType=timers_pb2.CreateTimerResponse)
    except common_exceptions.TTAPIUnexpectedAPIStatus:
        raise exceptions.CanNotCreateCardsTimer()
Ejemplo n.º 11
0
    def cmd_get_impacters_ratings(self, targets, actor_types, limit):
        data = impacts_pb2.GetImpactersRatingsRequest(
            targets=[
                impacts_pb2.Object(type=target_type.value, id=target_id)
                for target_type, target_id in targets
            ],
            actor_types=[actor_type.value for actor_type in actor_types],
            limit=limit)

        answer = tt_api.sync_request(
            url=self.entry_point + 'get-impacters-ratings',
            data=data,
            AnswerType=impacts_pb2.GetImpactersRatingsResponse)

        ratings = {}

        for answer_rating in answer.ratings:
            target = (OBJECT_TYPE(answer_rating.target.type),
                      answer_rating.target.id)
            rating = [
                PowerImpact(type=self.impact_type,
                            actor_type=OBJECT_TYPE(record.actor.type),
                            actor_id=record.actor.id,
                            target_type=target[0],
                            target_id=target[1],
                            amount=record.amount)
                for record in answer_rating.records
            ]

            ratings[target] = rating

        return ratings
Ejemplo n.º 12
0
def has_cards(account_id, cards_ids):
    answer = tt_api.sync_request(url=conf.settings.TT_STORAGE_HAS_ITEMS_URL,
                                 data=storage_pb2.HasItemsRequest(
                                     owner_id=account_id,
                                     items_ids=[id.hex for id in cards_ids]),
                                 AnswerType=storage_pb2.HasItemsResponse)
    return answer.has
Ejemplo n.º 13
0
def get_diary(account_id):
    answer = tt_api.sync_request(
        url=conf.heroes_settings.DIARY_URL,
        data=diary_pb2.DiaryRequest(account_id=account_id),
        AnswerType=diary_pb2.DiaryResponse)

    return answer.diary
Ejemplo n.º 14
0
def new_messages_number(account_id):
    answer = tt_api.sync_request(
        url=conf.settings.TT_NEW_MESSAGES_NUMBER_URL,
        data=personal_messages_pb2.NewMessagesNumberRequest(
            account_id=account_id),
        AnswerType=personal_messages_pb2.NewMessagesNumberResponse)
    return answer.number
Ejemplo n.º 15
0
def diary_version(account_id):
    answer = tt_api.sync_request(
        url=conf.heroes_settings.DIARY_VERSION_URL,
        data=diary_pb2.VersionRequest(account_id=account_id),
        AnswerType=diary_pb2.VersionResponse)

    return answer.version
Ejemplo n.º 16
0
def change_cards_storage(account_id, operation_type, cards, old_storage,
                         new_storage):
    operations = []

    for card in cards:
        operations.append(
            storage_pb2.Operation(
                change_storage=storage_pb2.OperationChangeStorage(
                    item_id=card.uid.hex,
                    owner_id=account_id,
                    old_storage_id=old_storage.value,
                    new_storage_id=new_storage.value,
                    operation_type=operation_type)))

    tt_api.sync_request(url=conf.settings.TT_STORAGE_APPLY_URL,
                        data=storage_pb2.ApplyRequest(operations=operations),
                        AnswerType=storage_pb2.ApplyResponse)
Ejemplo n.º 17
0
def item_type_prices(item_type, owner_id):
    answer = tt_api.sync_request(
        url=conf.payments_settings.TT_ITEM_TYPE_PRICES_URL,
        data=market_pb2.ItemTypePricesRequest(item_type=item_type,
                                              owner_id=owner_id),
        AnswerType=market_pb2.ItemTypePricesResponse)

    return dict(answer.prices), dict(answer.owner_prices)
Ejemplo n.º 18
0
def get_message(account_id, message_id):
    data = personal_messages_pb2.GetMessageRequest(account_id=account_id, message_id=message_id)

    answer = tt_api.sync_request(url=conf.settings.TT_GET_MESSAGE_URL,
                                 data=data,
                                 AnswerType=personal_messages_pb2.GetMessageResponse)

    if answer.HasField('message'):
        return answer.message

    return None
Ejemplo n.º 19
0
def get_conversation(account_id, partner_id, text=None, offset=None, limit=None):
    data = personal_messages_pb2.GetConversationRequest(account_id=account_id,
                                                        partner_id=partner_id,
                                                        text=text,
                                                        offset=offset,
                                                        limit=limit)

    answer = tt_api.sync_request(url=conf.settings.TT_GET_CONVERSATION_URL,
                                 data=data,
                                 AnswerType=personal_messages_pb2.GetConversationResponse)

    return answer.total, answer.messages
Ejemplo n.º 20
0
def get_sent_messages(account_id, text=None, offset=None, limit=None):
    data = personal_messages_pb2.GetMessagesRequest(account_id=account_id,
                                                    type=personal_messages_pb2.OwnerType.DESCRIPTOR.values_by_name['SENDER'].number,
                                                    text=text,
                                                    offset=offset,
                                                    limit=limit)

    answer = tt_api.sync_request(url=conf.settings.TT_GET_MESSAGES_URL,
                                 data=data,
                                 AnswerType=personal_messages_pb2.GetMessagesResponse)

    return answer.total, answer.messages
Ejemplo n.º 21
0
def list_sell_lots(owner_id):
    answer = tt_api.sync_request(
        url=conf.payments_settings.TT_LIST_SELL_LOTS_URL,
        data=market_pb2.ListSellLotsRequest(owner_id=owner_id),
        AnswerType=market_pb2.ListSellLotsResponse)
    return [
        objects.Lot(owner_id=owner_id,
                    full_type=lot.item_type,
                    item_id=uuid.UUID(lot.item_id),
                    price=lot.price,
                    created_at=datetime.datetime.fromtimestamp(lot.created_at))
        for lot in answer.lots
    ]
Ejemplo n.º 22
0
def history(page, records_on_page):
    answer = tt_api.sync_request(url=conf.payments_settings.TT_HISTORY_URL,
                                 data=market_pb2.HistoryRequest(
                                     page=page,
                                     records_on_page=records_on_page),
                                 AnswerType=market_pb2.HistoryResponse)
    records = [
        objects.LogRecord(item_type=record.item_type,
                          created_at=datetime.datetime.fromtimestamp(
                              record.created_at),
                          price=record.price) for record in answer.records
    ]
    return answer.page, answer.total_records, records
Ejemplo n.º 23
0
def statistics(time_from, time_till):
    answer = tt_api.sync_request(
        url=conf.payments_settings.TT_STATISTICS_URL,
        data=market_pb2.StatisticsRequest(
            time_from=time.mktime(time_from.timetuple()) +
            time_from.microsecond / 10**6,
            time_till=time.mktime(time_till.timetuple()) +
            time_till.microsecond / 10**6),
        AnswerType=market_pb2.StatisticsResponse)
    return {
        'sell_lots_placed': answer.sell_lots_placed,
        'sell_lots_closed': answer.sell_lots_closed,
        'turnover': answer.turnover
    }
Ejemplo n.º 24
0
    def handle(self, *args, **options):

        now = datetime.datetime.utcnow()

        for account in models.Account.objects.all().order_by('id').iterator():
            print('process account {}'.format(account.id))

            speed = logic_cards_constants.NORMAL_PLAYER_SPEED

            if now < account.premium_end_at:
                speed = logic_cards_constants.PREMIUM_PLAYER_SPEED

            tt_api.sync_request(
                url=conf.accounts_settings.TT_PLAYERS_TIMERS_CREATE_TIMER,
                data=timers_pb2.CreateTimerRequest(
                    owner_id=account.id,
                    entity_id=0,
                    type=relations.PLAYER_TIMERS_TYPES.CARDS_MINER.value,
                    speed=speed,
                    border=logic_cards_constants.RECEIVE_TIME,
                    resources=random.randint(
                        0, logic_cards_constants.RECEIVE_TIME - 1),
                    callback_data=''),
                AnswerType=timers_pb2.CreateTimerResponse)
Ejemplo n.º 25
0
def cancel_lot(item_type, price, owner_id):
    answer = tt_api.sync_request(
        url=conf.payments_settings.TT_CANCEL_SELL_LOT_URL,
        data=market_pb2.CancelSellLotRequest(item_type=item_type,
                                             price=price,
                                             number=1,
                                             owner_id=owner_id),
        AnswerType=market_pb2.CancelSellLotResponse)

    return [
        objects.Lot(owner_id=lot.owner_id,
                    full_type=lot.item_type,
                    item_id=uuid.UUID(lot.item_id),
                    price=lot.price) for lot in answer.lots
    ]
Ejemplo n.º 26
0
def load_cards(account_id):
    answer = tt_api.sync_request(
        url=conf.settings.TT_STORAGE_GET_ITEMS_URL,
        data=storage_pb2.GetItemsRequest(owner_id=account_id),
        AnswerType=storage_pb2.GetItemsResponse)

    cards = {}

    for item in answer.items:
        id = uuid.UUID(item.id)
        cards[id] = objects.Card.deserialize(uid=id,
                                             data=s11n.from_json(item.data),
                                             storage=relations.STORAGE(
                                                 item.storage_id))

    return cards
Ejemplo n.º 27
0
def get_owner_timers(account_id):
    answer = tt_api.sync_request(
        url=conf.accounts_settings.TT_PLAYERS_TIMERS_GET_OWNER_TIMERS,
        data=timers_pb2.GetOwnerTimersRequest(owner_id=account_id),
        AnswerType=timers_pb2.GetOwnerTimersResponse)
    return [
        objects.Timer(
            id=timer.id,
            owner_id=timer.owner_id,
            entity_id=timer.entity_id,
            type=relations.PLAYER_TIMERS_TYPES(timer.type),
            speed=timer.speed,
            border=timer.border,
            resources=timer.resources,
            resources_at=datetime.datetime.fromtimestamp(timer.resources_at),
            finish_at=datetime.datetime.fromtimestamp(timer.finish_at))
        for timer in answer.timers
    ]
Ejemplo n.º 28
0
    def cmd_get_actor_impacts(self, actor_type, actor_id, target_types):
        data = impacts_pb2.GetActorImpactsRequest(
            actor=impacts_pb2.Object(type=actor_type.value, id=actor_id),
            target_types=[target_type.value for target_type in target_types])

        answer = tt_api.sync_request(
            url=self.entry_point + 'get-actor-impacts',
            data=data,
            AnswerType=impacts_pb2.GetActorImpactsResponse)

        return [
            PowerImpact(type=self.impact_type,
                        actor_type=actor_type,
                        actor_id=actor_id,
                        target_type=OBJECT_TYPE(impact.target.type),
                        target_id=impact.target.id,
                        amount=impact.amount) for impact in answer.impacts
        ]
Ejemplo n.º 29
0
    def cmd_get_targets_impacts(self, targets):
        data = impacts_pb2.GetTargetsImpactsRequest(targets=[
            impacts_pb2.Object(type=target_type.value, id=target_id)
            for target_type, target_id in targets
        ])

        answer = tt_api.sync_request(
            url=self.entry_point + 'get-targets-impacts',
            data=data,
            AnswerType=impacts_pb2.GetTargetsImpactsResponse)

        return [
            PowerImpact(type=self.impact_type,
                        actor_type=None,
                        actor_id=None,
                        target_type=OBJECT_TYPE(impact.target.type),
                        target_id=impact.target.id,
                        amount=impact.amount) for impact in answer.impacts
        ]
Ejemplo n.º 30
0
def info(owner_id=None):
    request = market_pb2.InfoRequest()

    if owner_id is not None:
        request.owner_id = owner_id

    answer = tt_api.sync_request(url=conf.payments_settings.TT_INFO_URL,
                                 data=request,
                                 AnswerType=market_pb2.InfoResponse)

    data = []

    for info in answer.info:
        data.append(
            objects.ItemTypeSummary(full_type=info.item_type,
                                    sell_number=info.sell_number,
                                    min_sell_price=info.min_sell_price,
                                    max_sell_price=info.max_sell_price,
                                    owner_sell_number=info.owner_sell_number))

    return data
Ejemplo n.º 31
0
def diary_version(account_id):
    answer = tt_api.sync_request(url=conf.heroes_settings.DIARY_VERSION_URL,
                                 data=diary_pb2.VersionRequest(account_id=account_id),
                                 AnswerType=diary_pb2.VersionResponse)

    return answer.version
Ejemplo n.º 32
0
def get_diary(account_id):
    answer = tt_api.sync_request(url=conf.heroes_settings.DIARY_URL,
                                 data=diary_pb2.DiaryRequest(account_id=account_id),
                                 AnswerType=diary_pb2.DiaryResponse)

    return answer.diary