diff --git a/server.py b/server.py index 68d724982e534f67970262aaaf44b782728e08f2..4b67b77652252cc8cc61a4a36302ab8c76cc38aa 100755 --- a/server.py +++ b/server.py @@ -196,9 +196,11 @@ def auth(): # For use with nginx auth_request @mod_required def schedule(): start = date.today() - timedelta(days=date.today().weekday()+7*20) - days = [{'date': start, 'lectures': [], 'atonce':0 }] + days = [{'date': start, 'lectures': [], 'atonce':0, 'index': 0 }] + earlieststart=time(23,59) + latestend=time(0,0) for i in range(1,7): - days.append({'date': days[i-1]['date'] + timedelta(days=1), 'lectures':[], 'atonce':0 }) + days.append({'date': days[i-1]['date'] + timedelta(days=1), 'atonce':0, 'index': i, 'lectures':[] }) for i in days: # date and times are burning in sqlite s = datetime.combine(i['date'],time()) @@ -219,12 +221,18 @@ def schedule(): if len(freecol) == 0: freecol.append(maxcol) l[2]['schedule_col'] = freecol.pop() + if earlieststart > l[0].time(): + earlieststart = l[0].time() else: curcol -= 1 freecol.append(l[2]['schedule_col']) + if latestend < l[0].time(): + latestend = l[0].time() i['maxcol'] = max(maxcol,1) times=[] - for i in range(0,int(60*24/15)): + s = min(earlieststart,time(8,0)) + e = max(latestend,time(20,0)) + for i in range(s.hour*4,int(60*e.hour/15)): t = i*15 times.append(time(int(t/60),t%60)) diff --git a/templates/schedule.html b/templates/schedule.html index 5df33e31b597560f36309f2d12c66ffd9e674672..00724eed6b7e99aa92ea1cf007cedfcd92fbd363 100644 --- a/templates/schedule.html +++ b/templates/schedule.html @@ -7,15 +7,15 @@ </div> <div class="panel-body row"> <table class="table-bordered col-xs-12"> - <tr><th></th>{% for d in days %}<th colspan="{{d.maxcol}}">{{ d.date.strftime("%A (%d.%m.%Y)") }}</th>{% endfor %}</tr> + <tr><th></th>{% for d in days if (d.index < 5) or (d.lectures|length) > 0%}<th colspan="{{d.maxcol}}">{{ d.date.strftime("%A (%d.%m.%Y)") }}</th>{% endfor %}</tr> {% for t in times %} {% set time_loop = loop %} - <tr height="10px"> - {% if ((loop.index - 1) is divisibleby 4) %} <td rowspan=4>{{ t }}</td> {% endif %} - {% for d in days %} + <tr height="15px"> + {% if ((loop.index - 1) is divisibleby 4) %} <td rowspan="4" style="vertical-align: top;">{{ t.strftime("%H:%M") }}</td> {% endif %} + {% for d in days if (d.index < 5) or (d.lectures|length) > 0 %} {% for i in range(1,d.maxcol+1) %} {% for l in d.lectures|selectattr('schedule_col','equalto',i) if (((l.time_asdate.time() > t) and (l.time_asdate.time() < times[time_loop.index+1])) != (l.time_asdate.time() == t ) ) %} - <td rowspan="{{l.duration / 15}}" style="background: red;">{{l.handle}}</td> + <td rowspan="{{l.duration / 15}}" style="background: lightgrey;"><p class="small"><strong>{{l.short}}</strong><br>{{l.time_asdate.strftime("%H:%M")}} - {{l.end_asdate.strftime("%H:%M")}}<br>{{l.place}}</p> </td> {% else %} {% for l in d.lectures|selectattr('schedule_col','equalto',i) if (l.time_asdate.time() < t) and (l.end_asdate.time() > t) %} {% else %}