diff --git a/Building_list/admin.py b/Building_list/admin.py index 353d74f..8b99d8c 100644 --- a/Building_list/admin.py +++ b/Building_list/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import Building, Lecture, Reservation +from .models import Room, Lecture, Reservation -admin.site.register(Building) +admin.site.register(Room) admin.site.register(Lecture) admin.site.register(Reservation) diff --git a/Building_list/form.py b/Building_list/form.py new file mode 100644 index 0000000..e69de29 diff --git a/Building_list/migrations/0001_initial.py b/Building_list/migrations/0001_initial.py index 5f21d5e..3717163 100644 --- a/Building_list/migrations/0001_initial.py +++ b/Building_list/migrations/0001_initial.py @@ -1,6 +1,5 @@ -# Generated by Django 3.1 on 2020-08-28 01:43 +# Generated by Django 3.1 on 2020-08-28 10:30 -from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -10,20 +9,17 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( - name='Lecture', + name='Room', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('number', models.CharField(default='', max_length=10)), - ('floor', models.CharField(default='', max_length=10)), - ('class_time', models.CharField(default='', max_length=20)), - ('available_time', models.CharField(default='', max_length=20)), ('on_off', models.CharField(choices=[('사용중', '사용중'), ('빈강의실', '빈강의실')], default='빈강의실', max_length=50)), - ('day_of_the_week', models.CharField(default='', max_length=20)), + ('day_of_the_week', models.CharField(choices=[('월', '월'), ('화', '화'), ('수', '수'), ('목', '목'), ('금', '금'), ('토', '토'), ('일', '일')], default='월', max_length=20)), + ('available_time', models.TimeField(default='')), ], ), migrations.CreateModel( @@ -31,17 +27,21 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('purpose', models.TextField(default='', max_length=100)), - ('use_time', models.CharField(default='', max_length=20)), - ('lecture', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lecture_list', to='Building_list.lecture')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to=settings.AUTH_USER_MODEL)), + ('start_time', models.TimeField(default='')), + ('finish_time', models.TimeField(default='')), + ('floor', models.TextField(default='', max_length=10)), + ('room', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reservation_room', to='Building_list.room')), ], ), migrations.CreateModel( - name='Building', + name='Lecture', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.TextField(default='', max_length=200)), - ('lecture', models.ManyToManyField(to='Building_list.Lecture')), + ('name', models.TextField(default='', max_length=100)), + ('start_time', models.TimeField(default='')), + ('finish_time', models.TimeField(default='')), + ('floor', models.TextField(default='', max_length=10)), + ('room', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lecture_room', to='Building_list.room')), ], ), ] diff --git a/Building_list/migrations/0002_auto_20200828_1050.py b/Building_list/migrations/0002_auto_20200828_1050.py deleted file mode 100644 index 8c0bac5..0000000 --- a/Building_list/migrations/0002_auto_20200828_1050.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1 on 2020-08-28 01:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('Building_list', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture', - name='day_of_the_week', - field=models.CharField(choices=[('월', '월'), ('화', '화'), ('수', '수'), ('목', '목'), ('금', '금'), ('토', '토'), ('일', '일')], default='월', max_length=20), - ), - ] diff --git a/Building_list/migrations/0002_auto_20200828_2145.py b/Building_list/migrations/0002_auto_20200828_2145.py new file mode 100644 index 0000000..9236351 --- /dev/null +++ b/Building_list/migrations/0002_auto_20200828_2145.py @@ -0,0 +1,27 @@ +# Generated by Django 3.1 on 2020-08-28 21:45 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Building_list', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='lecture', + name='floor', + ), + migrations.AddField( + model_name='room', + name='floor', + field=models.TextField(default='', max_length=10), + ), + migrations.AlterField( + model_name='room', + name='day_of_the_week', + field=models.CharField(choices=[('mon', '월'), ('tue', '화'), ('wed', '수'), ('thu', '목'), ('fri', '금')], default='월', max_length=20), + ), + ] diff --git a/Building_list/migrations/0003_lecture_number.py b/Building_list/migrations/0003_lecture_number.py new file mode 100644 index 0000000..3e1b93c --- /dev/null +++ b/Building_list/migrations/0003_lecture_number.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1 on 2020-08-28 23:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Building_list', '0002_auto_20200828_2145'), + ] + + operations = [ + migrations.AddField( + model_name='lecture', + name='number', + field=models.CharField(default='', max_length=10), + ), + ] diff --git a/Building_list/models.py b/Building_list/models.py index 5686473..f5337f3 100644 --- a/Building_list/models.py +++ b/Building_list/models.py @@ -1,45 +1,73 @@ from django.db import models from django.conf import settings +from django.utils import timezone +from datetime import datetime, timedelta, date FlAG = [ ('사용중', '사용중'), ('빈강의실', '빈강의실'), ] -WEEK = [ - ('월', '월'), - ('화', '화'), - ('수', '수'), - ('목', '목'), - ('금', '금'), - ('토', '토'), - ('일', '일'), +WEEK = [ #첫번재가 장고, 두번째가 탬플릿 + ('mon', '월'), + ('tue', '화'), + ('wed', '수'), + ('thu', '목'), + ('fri', '금'), ] -class Lecture(models.Model): - #호 +class Room(models.Model): + # 호 number = models.CharField(max_length=10, default='') - #층 - floor = models.CharField(max_length=10, default='') - #수업시간(24시 기준) - class_time = models.CharField(max_length=20, default='') - #사용가능시간 - available_time = models.CharField(max_length=20, default='') - #사용여부 + # 사용여부 on_off = models.CharField(max_length=50, choices=FlAG, default='빈강의실') #요일 day_of_the_week = models.CharField(max_length=20, choices=WEEK, default='월') + #사용 가능 시간 + available_time = models.TimeField(default='') + #층 + floor = models.TextField(max_length=10, default='') -class Building(models.Model): - #건물이름 - name = models.TextField(max_length=200, default='') - #강의 모델 - lecture = models.ManyToManyField(Lecture) + def __str__(self): + return self.number+"호/ "+self.day_of_the_week+ "요일" + +class Lecture(models.Model): + # 룸 모델 + room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name="lecture_room") + # 강의 명 + name = models.TextField(max_length=100, default='') + #수업 시작 시간 + start_time = models.TimeField(default='') + #수업 종료 시간 + finish_time = models.TimeField(default='') + #강의 순서 + number = models.CharField(max_length=10, default='') + + def __str__(self): + return self.name + + def created_string(self): + time_now = timezone.now().time() + + time = datetime.combine(date.min, self.start_time)-datetime.combine(date.min, time_now) + if time < timedelta(minutes=1): + return 'dfadf' + elif time < timedelta(hours=1): + return str(int(time.seconds / 60)) + '분 전' + elif time < timedelta(days=1): + return str(int(time.seconds / 3600)) + '시간 전' + else: + return 'false' class Reservation(models.Model): - # 강의 모델 - lecture = models.ForeignKey(Lecture, on_delete=models.CASCADE, related_name="lecture_list") - # 목적 + # 룸 모델 + room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name="reservation_room") + # 강의 명 purpose = models.TextField(max_length=100, default='') - # 사용시간 - use_time = models.CharField(max_length=20, default='') - # 유저모델 - user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='photos') + #예약 시작 시간 + start_time = models.TimeField(default='') + #예약 종료 시간 + finish_time = models.TimeField(default='') + #층 + floor = models.TextField(max_length=10, default='') + + def __str__(self): + return self.name \ No newline at end of file diff --git a/Building_list/templates/Building_list/building_list.html b/Building_list/templates/Building_list/building_list.html new file mode 100644 index 0000000..e7d0045 --- /dev/null +++ b/Building_list/templates/Building_list/building_list.html @@ -0,0 +1,8 @@ +{% load static %} + +{% block title %} +{% endblock %} + +{% block content %} + 04 교육과학관 +{% endblock %} \ No newline at end of file diff --git a/Building_list/templates/Building_list/option_check.html b/Building_list/templates/Building_list/option_check.html new file mode 100644 index 0000000..82c3a0d --- /dev/null +++ b/Building_list/templates/Building_list/option_check.html @@ -0,0 +1,32 @@ +{% load static %} + +{% block title %} +{% endblock %} + +{% block content %} +
+
+ {% csrf_token %} +
+

옵션 선택

+

전체해지

+ +
+

요일

+
+ + + + + +
+

층 수

+
+ + + + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/Building_list/templates/Building_list/room_detail.html b/Building_list/templates/Building_list/room_detail.html new file mode 100644 index 0000000..b88f9d0 --- /dev/null +++ b/Building_list/templates/Building_list/room_detail.html @@ -0,0 +1,17 @@ +{% load static %} + +{% block title %} +{% endblock %} + +{% block content %} +
+ {% if lectures %} + {% for temp in lectures %} +
+

{{ temp.name }}

+

{{ temp.created_string }}

+
+ {% endfor %} + {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/Building_list/templates/Building_list/room_list.html b/Building_list/templates/Building_list/room_list.html new file mode 100644 index 0000000..e244302 --- /dev/null +++ b/Building_list/templates/Building_list/room_list.html @@ -0,0 +1,18 @@ +{% load static %} + +{% block title %} +{% endblock %} + +{% block content %} +
+ {% if rooms %} + {% for temp in rooms %} +
+

{{ temp.number }}

+

{{ temp.available_time }}

+

{{ temp.on_off }}

+
+ {% endfor %} + {% endif %} +
+{% endblock %} \ No newline at end of file diff --git a/Building_list/urls.py b/Building_list/urls.py index b7f8d66..c5b570a 100644 --- a/Building_list/urls.py +++ b/Building_list/urls.py @@ -1,7 +1,12 @@ from django.urls import path, include from django.conf.urls.static import static from django.conf import settings +from .views import * app_name = "Building_list" urlpatterns = [ + path('', building_list, name='building_list'), + path('option_check/', option_check, name='option_check'), + path('room_list/', room_list, name='room_list'), + path('room_detail//', room_detail, name='room_detail'), ] \ No newline at end of file diff --git a/Building_list/views.py b/Building_list/views.py index 91ea44a..5628be7 100644 --- a/Building_list/views.py +++ b/Building_list/views.py @@ -1,3 +1,34 @@ from django.shortcuts import render +from .models import Reservation,Room,Lecture -# Create your views here. + +def building_list(request): + return render(request, "Building_list/building_list.html") + +def option_check(request): + return render(request, "Building_list/option_check.html") + +def room_list(request): + if request.method == 'POST': + day_of_the_week = request.POST['day_of_the_week'] + floors = request.POST['floor'] + + rooms = Room.objects.all() + lectures = Lecture.objects.all() + room_dict = {} + for i in range(0, rooms.__len__()): + temp = rooms[i] + if (temp.day_of_the_week == day_of_the_week) and (temp.floor == floors): + room_dict[temp] = i + + return render(request, "Building_list/room_list.html", {"rooms": room_dict}) + +def room_detail(request, room_id): + lectures = Lecture.objects.all() + lecture_dict = {} + for i in range(0, lectures.__len__()): + tmp = lectures[i] + if tmp.room == Room.objects.get(id=room_id): + lecture_dict[tmp] = i + + return render(request, "Building_list/room_detail.html", {"lectures": lecture_dict}) \ No newline at end of file diff --git a/Kuing/settings.py b/Kuing/settings.py index e3fcbb2..49feb0b 100644 --- a/Kuing/settings.py +++ b/Kuing/settings.py @@ -113,7 +113,7 @@ USE_L10N = True -USE_TZ = True +USE_TZ = False # Static files (CSS, JavaScript, Images) diff --git a/db.sqlite3 b/db.sqlite3 index b98a143..0663020 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/layout/base.html b/layout/base.html index b9fb469..1b6bb40 100644 --- a/layout/base.html +++ b/layout/base.html @@ -7,6 +7,7 @@ +