<会議室購読サイト>購読ページ


完了ページ


[予定]ボタンをクリックして購読する場合


予約ボタンを押して入る場合です.
日付と会議室を選択し、詳細入力ページをクリックして情報を入力します.
今日より過去を選択すると、ALERTウィンドウが表示され、訂正情報が要求されます.
開始時間を選択すると、自動的に終了時間が1時間後に設定されます.
組織者と参加者の検索はajaxを使用して非同期でクエリーを行います.

スペースをクリックモードペインで[予定]をクリックした場合


最初の画面とは異なり、時間、日付、会議室の値を入力し、詳細をアクティブにします.

予定の時間は下の写真のようにグレーで表示されるはずでしたが、動画には表示されていなかったので、スクリーンショットを持ってきました.
この機能はajaxも使用されています.
表に既に存在する値と時間値を比較すると、色はグレーに変更されます.

views.py


次の関数はclassで宣言された関数です.
2つのテーブルに同じ時間値をそれぞれ格納します.
rez time showとrez time infoテーブルに保存されるのは、end timeが値を保存するのと保存しないのとの違いのみです.
このように保存する理由は、上から切り取った画像と関係があります.
rez time showはajaxのために作成されたテーブルで、所定の時間をグレーで表示します.
rez time infoは保存ステータスページで使用されるため、end timeは保存できません.保存後、表(フロントユーザーが見た部分)から見ると、実際の会議時間より+30分も予約されているように見えます.
それ以外にも、他の機能にもそれぞれ使用されていますが、代表的な理由は、上記の2つの場合にテーブルを別々に格納することです.
パフォーマンス上、buck createは保存時に使用されます.
for文に複数のオブジェクトを作成すると、save()メソッドのたびにDBに接続が確立され、insert構文が実行されます.つまり、重複数==接続数は、サービス負荷が大きすぎて障害が発生する可能性があります.
この場合、buckoperationが使用されます.このbuckleでは、複数のレコードの作成と更新時に1回のコネクタのみを使用してinsertまたはupdateを実行できます.
class AddRezView(View):

    def insertTimeInfo(self, str_time, end_time, rez_date, room_name, rezno):
        insert_list = []
        insert_list2 = []

        for time in self.time_list:
            str_time = int(str_time)
            end_time = int(end_time)
            time.key = int(time.key)
            if str_time <= time.key and time.key < end_time :
                insert_list.append(RezTimeInfo(
                            rezno = rezno,
                            room_name = room_name,
                            rez_date = rez_date,
                            time = time.key
                            ))
            if str_time <= time.key and time.key <= end_time :
                insert_list2.append(RezTimeShow(
                            rezno = rezno,
                            room_name = room_name,
                            rez_date = rez_date,
                            time = time.key
                            ))
        RezTimeInfo.objects.using('bi').bulk_create(insert_list)
        RezTimeShow.objects.using('bi').bulk_create(insert_list2)
予約後、今日の日付ではなく日付ページを表示するように要求されました.
httpResponseRedirectではデータを送信できないためrenderを使用しています.
そのため、リフレッシュするたびにデータが保存される現象が発生します.
これを防止するために、form検証を行う前にfor文を使用して重複値をチェックし、重複する場合はhttpResponseRedirectを使用してlistページに戻るように設定します.
ユーザが初回予約時に同じ値を送信することを防止するためにjqueryとajaxを用いて操作するので,予約時にリバウンドが発生する心配はない.
for i in rezlist :
            if i.rez_date == rez_date and i.room_name == room_name and i.str_time == str_time :
                return HttpResponseRedirect(reverse('reservation:list'))

        if form.is_valid():
            data.save(using='bi')
            rezno = RezMeetingroom.objects.using('bi').latest('rezno').rezno
            self.insertTimeInfo(str_time, end_time, rez_date, room_name, rezno)
            rezinfo = ViRezlist.objects.using('bi').filter(rez_date=rez_date)
            return render(request, 'reservation/r_rez_list.html', {'sysdate' : rez_date, 'user':user[0], 'rezinfo' : rezinfo, 'meetingroom':meetingroom, 'time_list' : time_list})
        else:
            return HttpResponse(form.errors)

実施内容


プロジェクト名称:社内会議室予約サイト


主なタスク:

  • プロジェクト計画
  • DB設計
  • ホームページ(計画会議照会)
  • 開発
  • リザーブページ
  • 役割:

  • Oracle、Aquery、SQL DVeloperを使用してデータベースERDをモデリングする
  • Django Formを使用してデータ会議室保存データを作成
  • buck createを使用して
  • を実装し、一度に大量のデータを入れたときに接続を維持し、負荷を回避します.
  • モードウィンドウを使用して
  • を実装し、計画会議でクリックして詳細を表示します.
  • JavaScriptを使用して、参加者の検出時に名前の自動補完を実現
  • Ajaxは
  • を実施し、日付変更時にその日付の保持データを非同期形式でロードして表示する.
  • DBとセッションIDを比較登録したユーザは、自分で作成した会議
  • のみを修正できる.
  • タブレット専用のページを作成し、セッション終了時に異常処理を実行することにより、自動的に再ログインして専用ページ
  • に移行する.

    技術スタック:

  • Python
  • Django
  • Javascript
  • Linux
  • Oracle
  • 作業時間:

  • 201.07~21.08(5週)
  • 開発者:

  • 2人
  • 詳細:


    社内の会議室を手配できるウェブサイトを作成しました.
    既存のサーバとDjango環境にappを追加しました.
    会議室を予約するために、会議室を訪問し、前のページに記録されている不便を解消してください.
    オフィスの場所で簡単に予約できます.
    そこでいくつかの重要な機能を開発し,機能を追加するための内部フィードバックを得た.
    現在、社内で非常に役立ち、フィードバックが必要かどうかを判断するために開発と修正を行っています.