<会議室購読サイト>購読ページ
完了ページ
[予定]ボタンをクリックして購読する場合
予約ボタンを押して入る場合です.
日付と会議室を選択し、詳細入力ページをクリックして情報を入力します.
今日より過去を選択すると、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)
実施内容
プロジェクト名称:社内会議室予約サイト
主なタスク:
次の関数は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)
実施内容
プロジェクト名称:社内会議室予約サイト
主なタスク:
役割:
技術スタック:
作業時間:
開発者:
詳細:
社内の会議室を手配できるウェブサイトを作成しました.
既存のサーバとDjango環境にappを追加しました.
会議室を予約するために、会議室を訪問し、前のページに記録されている不便を解消してください.
オフィスの場所で簡単に予約できます.
そこでいくつかの重要な機能を開発し,機能を追加するための内部フィードバックを得た.
現在、社内で非常に役立ち、フィードバックが必要かどうかを判断するために開発と修正を行っています.
Reference
この問題について(<会議室購読サイト>購読ページ), 我々は、より多くの情報をここで見つけました https://velog.io/@eesiwoo/회의실예약사이트-예약페이지テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol