Merge branch 'master' of ssh://git.wiai.de:22222/mgoetz/roofis2

This commit is contained in:
Tobias Haegele 2018-06-09 04:55:26 +02:00
commit 937656c5d1
14 changed files with 221 additions and 21 deletions

View File

@ -177,11 +177,16 @@ LOGGING = {
# }, # },
}, },
'loggers': { 'loggers': {
# 'roomservice': {
# 'handlers': ['console'],
# 'level': 'INFO',
# },
'roomservice': { 'roomservice': {
'handlers': ['console'], 'handlers': ['console'],
'level': 'INFO', 'level': 'INFO',
}, },
'respool.management.sample_data_creation': { 'roomservice.management.sample_data_creation': {
'handlers': ['console'], 'handlers': ['console'],
'level': 'DEBUG' 'level': 'DEBUG'
} }

View File

@ -1,5 +1,6 @@
from django.contrib import admin 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. # Register your models here.
admin.site.register(Staff) admin.site.register(Staff)
@ -9,5 +10,7 @@ admin.site.register(BookingGroup)
admin.site.register(Booking) admin.site.register(Booking)
admin.site.register(Equipment) admin.site.register(Equipment)
admin.site.register(Location) admin.site.register(Location)
admin.site.register(Buildings) admin.site.register(Building)
admin.site.register(NumEquipment) admin.site.register(NumEquipment)
admin.site.register(AccessPoint)
admin.site.register(Favorite)

View File

@ -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()

View File

@ -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()))

View File

@ -10,7 +10,7 @@ class Location(models.Model):
return '{}'.format(self.name) return '{}'.format(self.name)
class Buildings(models.Model): class Building(models.Model):
name = models.CharField(max_length=16) name = models.CharField(max_length=16)
location = models.ForeignKey(Location, on_delete=models.CASCADE) location = models.ForeignKey(Location, on_delete=models.CASCADE)
@ -42,7 +42,7 @@ class Staff(models.Model):
class Room(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) room_number = models.CharField(max_length=16)
capacity = models.IntegerField() capacity = models.IntegerField()
seating = models.BooleanField() seating = models.BooleanField()
@ -91,3 +91,19 @@ class Booking(models.Model):
def __str__(self): def __str__(self):
return '{} - {} - {}'.format(self.room.room_number, self.start_date.strftime('%Y - %m - %d'), return '{} - {} - {}'.format(self.room.room_number, self.start_date.strftime('%Y - %m - %d'),
self.end_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)

View File

@ -3,8 +3,8 @@ from . import views
app_name = 'roomservice' app_name = 'roomservice'
urlpatterns = [ urlpatterns = [
path('', views.home, name='home'), path('', views.favorites, name='home'),
path('adminpage', views.admin, name='admin'), path('adminpage', views.admin, name='admin'),
path('booking', views.booking, name='booking'), path('booking', views.booking, name='booking'),
path('favorites', views.favorites, name='favorites'), path('search', views.search, name='search'),
] ]

View File

@ -4,8 +4,9 @@ import logging
import datetime import datetime
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# Create your views here. # Create your views here.
def home(request): def search(request):
rooms = Room.objects.all() rooms = Room.objects.all()
return render(request, 'search.jinja', {"title":"rooF(i)S is love rooF(i)S is live!!", "rooms": rooms}) return render(request, 'search.jinja', {"title":"rooF(i)S is love rooF(i)S is live!!", "rooms": rooms})

View File

@ -0,0 +1,8 @@
.fav {
height: 3.5em;
background: #5a6268;
border-radius: 30px;
line-height: 3.5em;
vertical-align: middle;
padding-left: -1em;
}

View File

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
{% block css_extra %}{% endblock %} {% block css_extra %}{% endblock %}
{% block head %} {% block head %}
<!--<link rel="stylesheet" href="./static/style.css" />--> <link rel="stylesheet" href="../static/css/style.css" />
<title>{% block title %}{% endblock %}</title> <title>{% block title %}{% endblock %}</title>
{% endblock %} {% endblock %}
<script src="{{ static('js/script.js') }}"></script> <script src="{{ static('js/script.js') }}"></script>

View File

@ -1,10 +1,20 @@
{% extends 'base.jinja' %} {% extends 'base.jinja' %}
{% block content %} {% block content %}
<h1>Ressourcenpool Bamberg</h1> <div class="row container">
<p><strong>Impressum</strong></p> <div class="col-2"></div>
<p>Anbieter:<br />Max Mustermann<br />Musterstraße 1<br />96049 Bamberg</p> <div class="col-9">
<p>Kontakt:<br />Telefon: 0951/12345678<br />Telefax: 0951/1234567<br />E-Mail: mail@mustermann.de<br />Website: www.mustermann.de</p> <div class="row">
<p> </p> {% for favorite in favorites %}
<p>Bei redaktionellen Inhalten:</p> <div class="well col-3" align="center"><div class="fav">{{favorite.room_number}}</div></div>
<p>Verantwortlich nach § 55 Abs.2 RStV<br />Moritz Schreiberling<br />Musterstraße 2<br />96049 Bamberg</p> {% endfor %}
<div class="well col-3" align="center"><div class="fav">fuck</div></div>
<div class="well col-3" align="center"><div class="fav">this</div></div>
<div class="well col-3" align="center"><div class="fav">god</div></div>
<div class="well col-3" align="center"><div class="fav">damn</div></div>
<div class="well col-3" align="center"><div class="fav">shit</div></div>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -28,11 +28,6 @@
</form> </form>
<div class="col"></div> <div class="col"></div>
</div> </div>
<div class="row">
<div class="col">
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}