コード例 #1
0
def register_reservation(request, user_id):
    """
    予約情報を登録する
    :param request: request
    :param mail_address: 宿泊登録者のメールアドレス
    :return: ユーザー一覧画面
    """

    if request.method == "POST":
        lottery_flag = request.POST.get("lottery_flag", None)
        check_in_date = datetime.date.fromisoformat(
            request.POST.get("check_in_date", ""))
        check_out_date = datetime.date.fromisoformat(
            request.POST.get("check_out_date", ""))
        number_of_rooms = request.POST.get("number_of_rooms", "")
        number_of_guests = request.POST.get("number_of_guests", "")
        purpose = request.POST.get("purpose", "")

        # 抽選フラグが"1"の場合、抽選エンティティを作成
        if lottery_flag:
            LotDao.create_res_by_in_and_out(user_id, check_in_date,
                                            check_out_date, number_of_rooms,
                                            number_of_guests, purpose)

        # 抽選フラグが指定されていない場合、予約エンティティを作成
        else:
            ResDao.create_res_by_in_and_out(user_id, check_in_date,
                                            check_out_date, number_of_rooms,
                                            number_of_guests, purpose)

    # 表示するユーザー情報を取得
    users = UserDao.get_users()

    return HttpResponseRedirect(reverse('test_reservation', args=(user_id, )))
コード例 #2
0
def cancel_res_app(request):
    """抽選申込をキャンセル"""
    reservation_id = request.POST.get("reservation_id", "")

    if reservation_id:
        LotDao.delete_by_reservation_id(reservation_id)
        LodginDao.delete_by_reservation_id(reservation_id)

    return init_my_page_screen(request)
コード例 #3
0
def confirm_res_app(request):
    """テスト用予約の確定(本申込期間)"""
    #TODO delete this method
    reservation_id = request.POST.get("reservation_id", "")

    if reservation_id:
        ResDao.create_res_by_lottery(reservation_id)
        LotDao.delete_by_reservation_id(reservation_id)
        return HttpResponseRedirect(reverse('test_reservation', {"error": ""}))

    return TemplateResponse(request, URL_REBGST003)
コード例 #4
0
def turn_lottery_into_reservation(request, user_id):
    """TODO 削除予定
    抽選エンティティを予約エンティティへ変換する
    :param request:
    :param user_id:
    :param reservation_id:
    :return:
    """
    reservation_id = int(request.POST.get("reservation_id", 0))
    print("reservation_idは", reservation_id)
    ResDao.create_res_by_lottery(reservation_id)
    LotDao.delete_by_reservation_id(reservation_id)
    return HttpResponseRedirect(reverse('test_reservation', args=(user_id, )))
コード例 #5
0
def test_delete_user(request):
    """
    ユーザIDに紐づくユーザーを削除する
    :param user_id: ユーザID
    :return:
    """
    user_id = int(request.POST.get("user_id", 0))
    if user_id:
        UserDao.delete_user_by_user_id(user_id)
        ResDao.delete_by_user_id(user_id)
        LotDao.delete_by_user_id(user_id)
        LodginDao.delete_by_user_id(user_id)

    return HttpResponseRedirect(reverse('test_database'))
コード例 #6
0
def delete_lottery_or_reservation(request, user_id):
    """
    予約IDに紐づく予約or抽選情報を削除する
    :param request:
    :param user_id:
    :return:
    """
    reservation_id = int(request.POST.get("reservation_id", 0))
    if reservation_id:
        ResDao.delete_by_reservation_id(reservation_id)
        LotDao.delete_by_reservation_id(reservation_id)
        LodginDao.delete_by_reservation_id(reservation_id)

    return HttpResponseRedirect(reverse('test_reservation', args=(user_id, )))
コード例 #7
0
    def create_login_user_res_info_by_user_id(user_id: int) -> list:
        """ログインユーザに紐づく抽選、宿泊情報を取得"""

        # 返却結果
        result = []

        # 対象ユーザに紐づく抽選、予約情報を取得
        reservations = ResDao.get_res_list(user_id)
        lotteries = LotDao.get_res_list(user_id)

        # 抽選情報の辞書型を作成
        for lottery in lotteries:
            lottery_dict = {JsonFactory.RES_ID: lottery.reservation_id,
                            JsonFactory.APP_STATUS: 0,
                            JsonFactory.IN_DATE: lottery.check_in_date,
                            JsonFactory.OUT_DATE: lottery.check_out_date,
                            JsonFactory.NUM_ROOMS: lottery.number_of_rooms,
                            JsonFactory.EXPIRE: EMPTY_STR,
                            JsonFactory.PRIORITY: lottery.priority}
            result.append(lottery_dict)

        # 予約情報の辞書型を作成
        for reservation in reservations:
            reservation_dict = {JsonFactory.RES_ID: reservation.reservation_id,
                                JsonFactory.APP_STATUS: reservation.request_status + 1,
                                JsonFactory.IN_DATE: reservation.check_in_date,
                                JsonFactory.OUT_DATE: reservation.check_out_date,
                                JsonFactory.NUM_ROOMS: reservation.number_of_rooms,
                                JsonFactory.EXPIRE: reservation.expire_date, JsonFactory.PRIORITY: EMPTY_STR}
            result.append(reservation_dict)

        return result
コード例 #8
0
def init_my_page_screen(request):
    """ログイン画面からログイン処理を実施。"""

    if not __is_login_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "セッションが切断されました"})

    login_user_res_info = []

    user_id = request.session[LOG_USR]
    if user_id:
        # ユーザの全ての予約・抽選を取得
        login_user_res_info.extend(
            ResDao.get_loginuserres_dto_by_user_id(user_id))
        login_user_res_info.extend(
            LotDao.get_loginuserres_dto_by_user_id(user_id))

        # 本日以降チェックアウト予定の予約・抽選のみ出力
        today = datetime.date.today()
        login_user_res_info = list(
            filter(lambda i: i.check_out_date >= today, login_user_res_info))

        # チェックイン日で降順に出力
        login_user_res_info = sorted(login_user_res_info,
                                     key=attrgetter('check_in_date'),
                                     reverse=True)

    return TemplateResponse(request, URL_REBGST003,
                            {"login_user_res_info": login_user_res_info})
コード例 #9
0
def push_res_app_button(request):
    """予約を実施

    """
    user_id = request.session[LOG_USR]

    from django.http import QueryDict
    dic = QueryDict(request.body, encoding='utf-8')
    check_in_date = datetime.date.fromisoformat(dic.get('check_in_date'))
    check_out_date = datetime.date.fromisoformat(dic.get('check_out_date'))
    number_of_rooms = int(dic.get('number_of_rooms'))
    purpose = dic.get('purpose')

    error = ""

    #注意:現時点では宿泊人数を使用しないため、常に0を入力
    number_of_guests = 0

    # 抽選期間か2次申込期間かを取得
    app_status_code = __get_app_status_code(check_in_date)

    # 予約月度が過去月度の場合、エラー情報を画面に返却
    if app_status_code == ERROR:
        error = "予約申込対象期間外です"

    # 抽選の場合
    if app_status_code == LOTTERY:
        if not LotDao.user_already_applied(user_id, check_in_date):
            LotDao.create_res_by_in_and_out(user_id, check_in_date,
                                            check_out_date, number_of_rooms,
                                            number_of_guests, purpose)
        else:
            error = "該当日は申込済みです"

    # 二次申込の場合
    elif app_status_code == SECOND_APP:
        if not ResDao.create_res_as_second_reservation(
                user_id, check_in_date, check_out_date, number_of_rooms,
                number_of_guests, purpose):
            error = "二次申込が出来ませんでした"

    from django.http.response import JsonResponse
    return JsonResponse(error, safe=False)
コード例 #10
0
def delete_user(request):
    """(管理者専用)ユーザ情報を更新する"""

    # セッション情報に管理者IDが存在するか確認。存在しなければログイン画面へ遷移
    if not __is_admini_user(request):
        return TemplateResponse(request, URL_REBGST001,
                                {"error": "管理者権限がありません"})

    if request.method == "POST":
        user_id = request.POST.get("user_id", "")
        if user_id:
            UserDao.delete_user_by_user_id(user_id)
            ResDao.delete_by_user_id(user_id)
            LotDao.delete_by_user_id(user_id)
            LodginDao.delete_by_user_id(user_id)

        # 全ユーザ情報を取得
        users = UserDao.get_users()

    return TemplateResponse(request, URL_REBADM001, {"users": users})
コード例 #11
0
def test_reservation(request, user_id):
    """
    テスト用の予約作成画面へ遷移する
    :param request: request
    :param mail_address: 宿泊対象者のメールアドレス
    :return: 対象ユーザーの宿泊予約一覧画面
    """

    # 対象のユーザーネームを取得
    user = UserDao.get_user(user_id)

    # 対象のユーザーアドレスに紐づく宿泊日付を取得
    reservations = ResDao.get_res_list(user_id)
    lotterys = LotDao.get_res_list(user_id)

    return TemplateResponse(
        request, TEST_RES_SCREEN, {
            "reservations": reservations,
            "lotterys": lotterys,
            "username": user.username
        })