From f1ab54c1f0b2ec547af04a4e02ca6ebb4f9f918e Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 01:09:40 +0200 Subject: [PATCH 1/5] Add accesspoint model --- roofis2/roomservice/admin.py | 6 ++++-- roofis2/roomservice/models.py | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/roofis2/roomservice/admin.py b/roofis2/roomservice/admin.py index 5ef9967..b871638 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 # Register your models here. admin.site.register(Staff) @@ -9,5 +10,6 @@ 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) diff --git a/roofis2/roomservice/models.py b/roofis2/roomservice/models.py index dd6c465..7f2a5f7 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() @@ -52,6 +52,8 @@ class Room(models.Model): floor = models.SmallIntegerField() admin = models.ForeignKey(BookingGroup, on_delete=models.SET_DEFAULT, default=1) service_staff = models.ForeignKey(Staff, on_delete=models.PROTECT) + latitude = models.FloatField() + longitude = models.FloatField() def __str__(self): return '{} - {}'.format(self.building.name, self.room_number) @@ -91,3 +93,11 @@ 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) From eebf03d9a9b56d526bd955c08cf0ca5be76a1fad Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 01:10:27 +0200 Subject: [PATCH 2/5] Change logging settings --- roofis2/core/settings.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/roofis2/core/settings.py b/roofis2/core/settings.py index c3e59da..eaf8366 100644 --- a/roofis2/core/settings.py +++ b/roofis2/core/settings.py @@ -177,11 +177,11 @@ LOGGING = { # }, }, 'loggers': { - 'respool': { - 'handlers': ['console'], - 'level': 'INFO', - }, - 'respool.management.sample_data_creation': { + # 'roomservice': { + # 'handlers': ['console'], + # 'level': 'INFO', + # }, + 'roomservice.management.sample_data_creation': { 'handlers': ['console'], 'level': 'DEBUG' } From 173283f8686c7094d58447f8eb9527114ca6725f Mon Sep 17 00:00:00 2001 From: Tobias Haegele Date: Sat, 9 Jun 2018 02:03:16 +0200 Subject: [PATCH 3/5] foo --- roofis2/roomservice/views.py | 1 + roofis2/templates/booking.jinja | 173 ++++++++++++++++++++++++++++++-- 2 files changed, 167 insertions(+), 7 deletions(-) diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 6219d83..2c03dda 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -9,6 +9,7 @@ def home(request): def booking(request): + belegung = Room.objects.get() return render(request, 'booking.jinja', {"title": "rooF(i)S is love rooF(i)S is live!!"}) diff --git a/roofis2/templates/booking.jinja b/roofis2/templates/booking.jinja index 03c1a38..f68d9ea 100644 --- a/roofis2/templates/booking.jinja +++ b/roofis2/templates/booking.jinja @@ -1,10 +1,169 @@ {% 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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TimeMondayTuesdayWednesdayThursdayFridaySaturdaySunday
6:00 - 7:00
7:00 - 8:00
8:00 - 9:00
9:00 - 10:00
10:00 - 11:00
11:00 - 12:00
12:00 - 13:00
13:00 - 14:00
14:00 - 15:00
15:00 - 16:00
16:00 - 17:00
17:00 - 18:00
18:00 - 19:00
19:00 - 20:00
20:00 - 6:00
{% endblock %} \ No newline at end of file From 056ced3c4ab4b4ea3f3b58a78d54604ef589c993 Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 03:18:05 +0200 Subject: [PATCH 4/5] Add sample data importer --- roofis2/roomservice/management/__init__.py | 0 .../management/commands/__init__.py | 0 .../management/commands/import_test_data.py | 9 ++ .../sample_data_creation/__init__.py | 0 .../sample_data_creation/data_creator.py | 131 ++++++++++++++++++ roofis2/roomservice/models.py | 4 +- 6 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 roofis2/roomservice/management/__init__.py create mode 100644 roofis2/roomservice/management/commands/__init__.py create mode 100644 roofis2/roomservice/management/commands/import_test_data.py create mode 100644 roofis2/roomservice/management/sample_data_creation/__init__.py create mode 100644 roofis2/roomservice/management/sample_data_creation/data_creator.py 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..fc33706 --- /dev/null +++ b/roofis2/roomservice/management/sample_data_creation/data_creator.py @@ -0,0 +1,131 @@ +from roomservice.models import RoomType, Room, NumEquipment, Building, Location, Equipment, Booking, BookingGroup, \ + Staff +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())) + + +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))) diff --git a/roofis2/roomservice/models.py b/roofis2/roomservice/models.py index 7f2a5f7..20380b6 100644 --- a/roofis2/roomservice/models.py +++ b/roofis2/roomservice/models.py @@ -42,7 +42,7 @@ class Staff(models.Model): class Room(models.Model): - building = models.ForeignKey(Building, 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() @@ -52,8 +52,6 @@ class Room(models.Model): floor = models.SmallIntegerField() admin = models.ForeignKey(BookingGroup, on_delete=models.SET_DEFAULT, default=1) service_staff = models.ForeignKey(Staff, on_delete=models.PROTECT) - latitude = models.FloatField() - longitude = models.FloatField() def __str__(self): return '{} - {}'.format(self.building.name, self.room_number) From fbf97be04064f153272bee8e328d3e76ff1daa2d Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 03:40:49 +0200 Subject: [PATCH 5/5] Finished gernerating script --- .../sample_data_creation/data_creator.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/roofis2/roomservice/management/sample_data_creation/data_creator.py b/roofis2/roomservice/management/sample_data_creation/data_creator.py index fc33706..3e2176e 100644 --- a/roofis2/roomservice/management/sample_data_creation/data_creator.py +++ b/roofis2/roomservice/management/sample_data_creation/data_creator.py @@ -1,5 +1,5 @@ from roomservice.models import RoomType, Room, NumEquipment, Building, Location, Equipment, Booking, BookingGroup, \ - Staff + Staff, AccessPoint from django.contrib.auth.models import User import logging import random @@ -52,6 +52,10 @@ def create(): 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())) + def create_locations(names): for name in names: @@ -129,3 +133,12 @@ def create_num_equipment(): 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()