diff --git a/roofis2/core/settings.py b/roofis2/core/settings.py index 46b8759..723eb26 100644 --- a/roofis2/core/settings.py +++ b/roofis2/core/settings.py @@ -177,11 +177,16 @@ LOGGING = { # }, }, 'loggers': { + # 'roomservice': { + # 'handlers': ['console'], + # 'level': 'INFO', + # }, + 'roomservice': { 'handlers': ['console'], 'level': 'INFO', }, - 'respool.management.sample_data_creation': { + 'roomservice.management.sample_data_creation': { 'handlers': ['console'], 'level': 'DEBUG' } diff --git a/roofis2/roomservice/admin.py b/roofis2/roomservice/admin.py index 5ef9967..f6f7645 100644 --- a/roofis2/roomservice/admin.py +++ b/roofis2/roomservice/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from .models import Staff, Room, RoomType, BookingGroup, Booking, Equipment, Location, Buildings, NumEquipment +from .models import Staff, Room, RoomType, BookingGroup, Booking, Equipment, Location, Building, NumEquipment, \ + AccessPoint, Favorite # Register your models here. admin.site.register(Staff) @@ -9,5 +10,7 @@ admin.site.register(BookingGroup) admin.site.register(Booking) admin.site.register(Equipment) admin.site.register(Location) -admin.site.register(Buildings) +admin.site.register(Building) admin.site.register(NumEquipment) +admin.site.register(AccessPoint) +admin.site.register(Favorite) diff --git a/roofis2/roomservice/management/__init__.py b/roofis2/roomservice/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/roofis2/roomservice/management/commands/__init__.py b/roofis2/roomservice/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/roofis2/roomservice/management/commands/import_test_data.py b/roofis2/roomservice/management/commands/import_test_data.py new file mode 100644 index 0000000..0eb1add --- /dev/null +++ b/roofis2/roomservice/management/commands/import_test_data.py @@ -0,0 +1,9 @@ +from django.core.management.base import BaseCommand +from roomservice.management.sample_data_creation import data_creator + + +class Command(BaseCommand): + help = "Creates sample data and inserts it to db" + + def handle(self, *args, **options): + data_creator.create() diff --git a/roofis2/roomservice/management/sample_data_creation/__init__.py b/roofis2/roomservice/management/sample_data_creation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/roofis2/roomservice/management/sample_data_creation/data_creator.py b/roofis2/roomservice/management/sample_data_creation/data_creator.py new file mode 100644 index 0000000..75f750f --- /dev/null +++ b/roofis2/roomservice/management/sample_data_creation/data_creator.py @@ -0,0 +1,153 @@ +from roomservice.models import RoomType, Room, NumEquipment, Building, Location, Equipment, Booking, BookingGroup, \ + Staff, AccessPoint, Favorite +from django.contrib.auth.models import User +import logging +import random +import datetime + +logger = logging.getLogger(__name__) + +LOCATIONS = ['Bamberg', 'Erlangen', 'Crailsheim', 'Hamburg', 'Chemnitz', 'Dresden', 'Sebnitz', 'Gunzenhausen', + 'Nürnberg'] +BUILDINGS = ['253', '274', '134', '256', '142', '432', '652', '333', '233', '444', '332'] +ROOMTYPE = ['Office', 'Conference Room', 'Teaching Room'] +BOOKING_GROUP = ['Boss', 'SectionA', 'SectionB', 'SectionC', 'Standard'] +EQUIPMENT = ['Beamer', 'Flipchart'] + + +def create(): + logger.info('Location Count: {}'.format(Location.objects.count())) + create_locations(LOCATIONS) + logger.info('Location Count: {}'.format(Location.objects.count())) + + logger.info('Building Count: {}'.format(Building.objects.count())) + create_buildings(BUILDINGS) + logger.info('Building Count: {}'.format(Building.objects.count())) + + logger.info('RoomType Count: {}'.format(RoomType.objects.count())) + create_room_type(ROOMTYPE) + logger.info('RoomType Count: {}'.format(RoomType.objects.count())) + + logger.info('BookingGroup Count: {}'.format(BookingGroup.objects.count())) + create_booking_group(BOOKING_GROUP) + logger.info('BookingGroup Count: {}'.format(BookingGroup.objects.count())) + + logger.info('Equipment Count: {}'.format(Equipment.objects.count())) + create_equipment(EQUIPMENT) + logger.info('Equipment Count: {}'.format(Equipment.objects.count())) + + logger.info('Staff Count: {}'.format(Staff.objects.count())) + create_staff() + logger.info('Staff Count: {}'.format(Staff.objects.count())) + + logger.info('Room Count: {}'.format(Room.objects.count())) + create_room() + logger.info('Room Count: {}'.format(Room.objects.count())) + + logger.info('Booking Count: {}'.format(Booking.objects.count())) + create_booking() + logger.info('Booking Count: {}'.format(Booking.objects.count())) + + logger.info('NumEquipment Count: {}'.format(NumEquipment.objects.count())) + create_num_equipment() + logger.info('NumEquipment Count: {}'.format(NumEquipment.objects.count())) + + logger.info('AccessPoint Count: {}'.format(AccessPoint.objects.count())) + create_access_point() + logger.info('AccessPoint Count: {}'.format(AccessPoint.objects.count())) + + logger.info('Favorites Count: {}'.format(Favorite.objects.count())) + create_favorite() + logger.info('Favorites Count: {}'.format(Favorite.objects.count())) + + +def create_locations(names): + for name in names: + location, _ = Location.objects.get_or_create(name=name) + + +def create_buildings(names): + for name in names: + building, _ = Building.objects.get_or_create(name=name, location=random.choice(Location.objects.all())) + + +def create_room_type(types): + for type in types: + building, _ = RoomType.objects.get_or_create(type=type) + + +def create_booking_group(names): + for name in names: + booking_group, _ = BookingGroup.objects.get_or_create(name=name) + + +def create_equipment(names): + for name in names: + equipment, _ = Equipment.objects.get_or_create(name=name) + + +def create_staff(): + for i in range(1, 30): + user, _ = User.objects.get_or_create(username='MannFrau{}'.format(i), email='mann{}@frau.de'.format(i), + password='1234abcdef#') + staff, _ = Staff.objects.get_or_create(user=random.choice(User.objects.all())) + staff.booking_group.add(random.choice(BookingGroup.objects.all())) + # booking_group = random.choice(BookingGroup.objects.all()) + staff.save() + + +def create_room(): + for i in range(1, 40): + room, _ = Room.objects.get_or_create(building=random.choice(Building.objects.all()), + room_number=random.randint(100, 956), + capacity=random.randint(10, 400), seating=random.randint(0, 1), + barrier_free=random.randint(0, 1), cooling=random.randint(0, 1), + room_type=random.choice(RoomType.objects.all()), + floor=random.randint(1, 6), + admin=random.choice(BookingGroup.objects.all()), + service_staff=random.choice(Staff.objects.all())) + + +def create_booking(): + for i in range(1, 80): + year = random.choice(range(2018, 2019)) + month = random.choice(range(1, 12)) + day = random.choice(range(1, 28)) + random_start_date = datetime.datetime(year, month, day) + + delta = random.choice(range(0, 2)) + random_enddate_date = random_start_date + datetime.timedelta(delta) + + hour = random.choice(range(6, 22)) + minute = random.choice(range(1, 59)) + start_time = datetime.datetime(year, month, day, hour=hour, minute=minute) + + delta = random.choice(range(0, 3)) + end_time_time = start_time + datetime.timedelta(hours=delta) + + booking, _ = Booking.objects.get_or_create(room=random.choice(Room.objects.all()), + staff=random.choice(Staff.objects.all()), + start_date=random_start_date, end_date=random_enddate_date, + start_time=start_time, end_time=end_time_time, + intervall=random.choice(range(0, 3))) + + +def create_num_equipment(): + for i in range(1, 80): + num_equipment = NumEquipment.objects.get_or_create(room=random.choice(Room.objects.all()), + equipment=random.choice(Equipment.objects.all()), + count=random.choice(range(1, 3))) + + +def create_access_point(): + for i in range(1, 25): + access_point, _ = AccessPoint.objects.get_or_create(mac_address=''.join( + random.choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'], k=12)), ) + for i in range(1, random.randint(1, 4)): + access_point.rooms.add(random.choice(Room.objects.all())) + access_point.save() + + +def create_favorite(): + for staff in Staff.objects.all(): + favorite, _ = Favorite.objects.get_or_create(staff=staff, room=random.choice(Room.objects.all())) diff --git a/roofis2/roomservice/models.py b/roofis2/roomservice/models.py index dd6c465..6ff2ec7 100644 --- a/roofis2/roomservice/models.py +++ b/roofis2/roomservice/models.py @@ -10,7 +10,7 @@ class Location(models.Model): return '{}'.format(self.name) -class Buildings(models.Model): +class Building(models.Model): name = models.CharField(max_length=16) location = models.ForeignKey(Location, on_delete=models.CASCADE) @@ -42,7 +42,7 @@ class Staff(models.Model): class Room(models.Model): - building = models.ForeignKey(Buildings, on_delete=models.CASCADE) + building = models.ForeignKey('Building', on_delete=models.CASCADE) room_number = models.CharField(max_length=16) capacity = models.IntegerField() seating = models.BooleanField() @@ -91,3 +91,19 @@ class Booking(models.Model): def __str__(self): return '{} - {} - {}'.format(self.room.room_number, self.start_date.strftime('%Y - %m - %d'), self.end_date.strftime('%Y - %m - %d')) + + +class AccessPoint(models.Model): + mac_address = models.CharField(max_length=12) + rooms = models.ManyToManyField(Room) + + def __str__(self): + return '{}'.format(self.mac_address) + + +class Favorite(models.Model): + staff = models.ForeignKey(Staff, on_delete=models.CASCADE) + room = models.ForeignKey(Room, on_delete=models.CASCADE) + + def __str__(self): + return '{} - {}'.format(self.staff.user.username, self.room.room_number) diff --git a/roofis2/roomservice/urls.py b/roofis2/roomservice/urls.py index e60d212..dfbd2f9 100644 --- a/roofis2/roomservice/urls.py +++ b/roofis2/roomservice/urls.py @@ -3,8 +3,8 @@ from . import views app_name = 'roomservice' urlpatterns = [ - path('', views.home, name='home'), + path('', views.favorites, name='home'), path('adminpage', views.admin, name='admin'), path('booking', views.booking, name='booking'), - path('favorites', views.favorites, name='favorites'), + path('search', views.search, name='search'), ] diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 4967da9..041770e 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -4,8 +4,9 @@ import logging import datetime logger = logging.getLogger(__name__) + # Create your views here. -def home(request): +def search(request): rooms = Room.objects.all() return render(request, 'search.jinja', {"title":"rooF(i)S is love rooF(i)S is live!!", "rooms": rooms}) diff --git a/roofis2/static/css/style.css b/roofis2/static/css/style.css new file mode 100644 index 0000000..ca41812 --- /dev/null +++ b/roofis2/static/css/style.css @@ -0,0 +1,8 @@ +.fav { + height: 3.5em; + background: #5a6268; + border-radius: 30px; + line-height: 3.5em; + vertical-align: middle; + padding-left: -1em; +} \ No newline at end of file diff --git a/roofis2/templates/base.jinja b/roofis2/templates/base.jinja index 21c1728..2600cfe 100644 --- a/roofis2/templates/base.jinja +++ b/roofis2/templates/base.jinja @@ -5,7 +5,7 @@ {% block css_extra %}{% endblock %} {% block head %} - + {% block title %}{% endblock %} {% endblock %} diff --git a/roofis2/templates/favorites.jinja b/roofis2/templates/favorites.jinja index 03c1a38..6c70f0e 100644 --- a/roofis2/templates/favorites.jinja +++ b/roofis2/templates/favorites.jinja @@ -1,10 +1,20 @@ {% extends 'base.jinja' %} {% block content %} -

Ressourcenpool Bamberg

-

Impressum

-

Anbieter:
Max Mustermann
Musterstraße 1
96049 Bamberg

-

Kontakt:
Telefon: 0951/12345678
Telefax: 0951/1234567
E-Mail: mail@mustermann.de
Website: www.mustermann.de

-

 

-

Bei redaktionellen Inhalten:

-

Verantwortlich nach § 55 Abs.2 RStV
Moritz Schreiberling
Musterstraße 2
96049 Bamberg

+
+
+
+
+ {% for favorite in favorites %} +
{{favorite.room_number}}
+ {% endfor %} + +
fuck
+
this
+
god
+
damn
+
shit
+ +
+
+
{% endblock %} \ No newline at end of file diff --git a/roofis2/templates/search.jinja b/roofis2/templates/search.jinja index 19e8b79..0fcf368 100644 --- a/roofis2/templates/search.jinja +++ b/roofis2/templates/search.jinja @@ -28,11 +28,6 @@
-
-
- -
-
{% endblock %}