Example #1
0
def fetch_exclude_deposit_money_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'exclude_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    exclude_amount = data.get("exclude_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = take_credit_helpers.get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)
    team_deposit = get_team_deposit(team)

    error_response = get_error_response(team, team_deposit, exclude_amount,
                                        operator)
    if error_response:
        error_response['success'] = False
        return error_response

    increase_card_money_amount_to_exclude_amount(team_card, exclude_amount)
    decrease_deposit_invest_amount_to_exclude_amount(team_deposit,
                                                     exclude_amount)
    return {"success": True}
Example #2
0
def fetch_transfer_money_response(request, give_money):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ("card_type", "card", "money_amount")
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields
    )
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')
    money_amount = data.get('money_amount')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    error_response = get_error_response(money_amount)
    if error_response:
        error_response['success'] = False
        return error_response

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    if give_money:
        team_card.money_amount += money_amount
    else:
        team_card.money_amount -= money_amount

    team_card.save()
    return {"success": True}
Example #3
0
def fetch_deposit_info_response(request):
    check_card_response = check_card.fetch_check_card_response(request)
    if not check_card_response.get('success'):
        return check_card_response

    data = json.loads(request.body.decode("utf-8"))
    card_type = data.get("card_type")
    card = data.get("card")

    team = check_card.get_team_by_card(card_type, card)
    deposit_info = get_deposit_info(team)
    return deposit_info
Example #4
0
def fetch_buy_share_response(request):
    current_half_year = Timing.objects.all()[0].current_half_year
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'share_type', 'amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    share_type_to_buy = data.get('share_type')
    amount_to_buy = data.get('amount')

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)
    share_type = ShareType.objects.filter(name=share_type_to_buy)
    if not share_type:
        return {'success': False, 'error': 'Такого типа акций нет'}
    share_type = share_type[0]

    stock_price = share_type.stock_price.filter(half_year=current_half_year)
    if not stock_price:
        return {'success': False, 'error': 'У акций не заполнены расценки'}
    current_price = stock_price[0].buy_price

    error_response = get_error_response(share_type, amount_to_buy,
                                        current_price, team_card)
    if error_response:
        error_response['success'] = False
        return error_response

    decrease_card_money_amount_to_buyed_shares_price(team_card, current_price,
                                                     amount_to_buy)

    deal = ShareDeal.objects.filter(team=team, share_type=share_type)
    if deal:
        deal[0].amount += amount_to_buy
        deal[0].save()
    else:
        deal = create_new_deal(team, share_type, amount_to_buy)

    return {'success': True}
def fetch_sell_share_response(request):
    current_half_year = Timing.objects.all()[0].current_half_year
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'share_type', 'amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get('card_type')
    card = data.get('card')

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response:
        card_error_response['success'] = False
        return card_error_response

    share_type_to_sell = data.get("share_type")
    amount_to_sell = data.get('amount')

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    share_type = ShareType.objects.filter(name=share_type_to_sell)
    if not share_type:
        return {'success': False, 'error': 'Такого типа акций нет'}
    share_type = share_type[0]

    stock_price = share_type.stock_price.filter(half_year=current_half_year)
    if not stock_price:
        return {'success': False, 'error': 'У акций не заполнены расценки'}
    current_price = stock_price[0].sell_price

    deal = ShareDeal.objects.filter(team=team, share_type=share_type)
    if not deal:
        return {'success': False, 'error': 'Команда не покупала таких акций'}
    deal = deal[0]

    error_response = get_error_response(amount_to_sell, deal)
    if error_response:
        error_response['success'] = False
        return error_response

    increase_card_money_amount_to_sold_shares_price(team_card, current_price,
                                                    amount_to_sell)
    decrease_deal_share_type_amount(deal, amount_to_sell)

    return {'success': True}
Example #6
0
def get_share_info(data):
    team = check_card.get_team_by_card(data)
    share_info = {
        'team_name': team.name,
        'team_owner': team.owner,
        'team_money_amount': team.card.money_amount,
        'team_bank': {
            'bank_id': team.bank.id,
            'bank_name': team.bank.name,
        },
        'team_shares': None
    }
    team_shares = get_team_shares(team)
    if team_shares:
        share_info['team_shares'] = team_shares
    return share_info
Example #7
0
def fetch_invest_money_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'invest_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields
    )
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    invest_amount = data.get("invest_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = take_credit.get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    error_response = get_error_response(team, invest_amount, operator)
    if error_response:
        error_response['success'] = False
        return error_response

    decrease_team_card_money_amount_to_invest_amount(team_card, invest_amount)

    team_deposit = get_team_deposit(team)
    if not team_deposit:
        team_deposit = create_new_deposit(team, invest_amount)
    else:
        team_deposit.invest_amount += invest_amount
        team_deposit.save()

    if not team_deposit._state.db:
        return {
            "success": False,
            "error": "Депозит не был добавлен в базу данных"
        }

    return {"success": True}
def fetch_confirm_transaction_response(request):
    check_card_response = check_card.fetch_check_card_response(request)
    if not check_card_response.get('success'):
        return check_card_response

    data = json.loads(request.body.decode("utf-8"))
    card_type = data.get('card_type')
    card = data.get('card')

    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    won_money_amount = get_team_won_money(team)
    if not won_money_amount:
        return {'success': False, 'won_money_amount': 0}

    transfer_won_money_to_card(team_card, won_money_amount)
    return {'success': True, 'won_money_amount': won_money_amount}
def get_credit_info(card_type, card):
    team = check_card.get_team_by_card(card_type, card)
    credit_info = {
        'team_name': team.name,
        'team_owner': team.owner,
        'team_money_amount': team.card.money_amount,
        'team_bank': {
            'bank_id': team.bank.id,
            'bank_name': team.bank.name,
        },
        'team_credit': None
    }
    team_credit = get_team_credit(team)
    if team_credit:
        credit_info['team_credit'] = {
            'debt_amount': team_credit.debt_amount,
            'term': team_credit.term,
            'last_change': team_credit.last_change
        }
    return credit_info
Example #10
0
def get_error_response(name, owner, faculty, group, bank, card_type, card):
    card_error_response = check_card.get_card_error_response(
        card_type, card, check_has_card_team=False)
    if card_error_response.get('error'):
        return card_error_response

    response = {}
    if not helpers.is_unique_field('name', name, Team):
        response['error'] = 'Команда с именем "%s" уже существует' % name

    elif not helpers.is_value_positive_integer(bank):
        response['error'] = 'Неверный формат банка'

    elif not is_object_exist(object_id=bank, object_model=Bank):
        response['error'] = 'Такого банка не существует'

    if check_card.get_team_by_card(card_type, card):
        response['error'] = 'Команда с такой картой уже существует'

    return response
Example #11
0
def fetch_make_bet_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'bet_amount')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    bet_amount = data.get("bet_amount")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    station_admin = get_station_admin(request)
    station = station_admin.station
    team = check_card.get_team_by_card(card_type, card)

    error_response = get_error_response(team, station, bet_amount)
    if error_response:
        error_response['success'] = False
        return error_response

    team_card = check_card.get_team_card(team)
    exclude_bet_amount_from_card(team_card, bet_amount)

    transaction = create_new_transaction(team, station, bet_amount)
    if not transaction._state.db:
        return JsonResponse({
            "success":
            False,
            "error":
            "Транзакция не была добавлена в базу данных"
        })

    return {"success": True}
def fetch_take_credit_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'credit_amount', 'term')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")
    credit_amount = data.get("credit_amount")
    term = data.get("term")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    operator = get_operator(request)
    team = check_card.get_team_by_card(card_type, card)
    team_card = check_card.get_team_card(team)

    error_response = get_error_response(team, team_card, credit_amount, term,
                                        operator)
    if error_response:
        error_response['success'] = False
        return error_response

    transfer_credit_amount_to_team_card(team_card, credit_amount)
    credit = create_new_credit(team, credit_amount, term)
    if not credit._state.db:
        return {
            "success": False,
            "error": "Кредит не был добавлен в базу данных"
        }

    return {"success": True}
def fetch_victory_response(request):
    data = json.loads(request.body.decode("utf-8"))

    expected_fields = ('card_type', 'card', 'victory')
    not_received_fields = helpers.get_not_recieved_fields(
        data, expected_fields)
    if not_received_fields:
        return helpers.get_not_received_all_expected_fields_error_response(
            not_received_fields)

    card_type = data.get("card_type")
    card = data.get("card")

    card_error_response = check_card.get_card_error_response(card_type, card)
    if card_error_response.get('error'):
        card_error_response['success'] = False
        return card_error_response

    victory = data.get("victory")

    error_response = get_error_response(victory)
    if error_response:
        error_response['success'] = False
        return error_response

    team = check_card.get_team_by_card(card_type, card)
    station_admin = get_station_admin(request)
    station = station_admin.station
    current_transaction = get_current_transaction(team, station)

    if not victory:
        current_transaction.victory = False
        current_transaction.processed = True
    else:
        current_transaction.victory = True
        current_transaction.processed = False

    current_transaction.save()
    return {"success": True}
Example #14
0
def fetch_share_info_response(request):
    check_card_response = check_card.fetch_check_card_response(request)
    if not check_card_response.get('success'):
        return check_card_response

    data = json.loads(request.body.decode("utf-8"))
    card_type = data.get('card_type')
    card = data.get('card')

    team = check_card.get_team_by_card(card_type, card)
    share_info = {
        'team_name': team.name,
        'team_owner': team.owner,
        'team_money_amount': team.card.money_amount,
        'team_bank': {
            'bank_id': team.bank.id,
            'bank_name': team.bank.name,
        },
        'team_shares': None
    }
    team_shares = get_team_shares(team)
    if team_shares:
        share_info['team_shares'] = team_shares
    return share_info