]> git.0d.be Git - panikweb.git/commitdiff
fix grid display for the now over complicated Thursday evening
authorFrédéric Péters <fpeters@0d.be>
Tue, 10 Sep 2013 10:43:23 +0000 (12:43 +0200)
committerFrédéric Péters <fpeters@0d.be>
Tue, 10 Sep 2013 10:43:53 +0000 (12:43 +0200)
panikweb/views.py

index 4cf180614f0abdacf773eabd3e5984417b003ce4..5a1cbbfd6406ef4b2ff75f1e12e5d4ced83eaa57 100644 (file)
@@ -242,7 +242,17 @@ class Grid(TemplateView):
                             continue
                         # here it is, same cell, same emission, several
                         # schedules
-                        schedule_list.sort(lambda x,y: -cmp(x.get_duration(), y.get_duration()))
+                        schedule_list.sort(lambda x,y: cmp(x.get_duration(), y.get_duration()))
+
+                        schedule = schedule_list[0]
+                        end_time = schedule.datetime + timedelta(
+                                minutes=schedule.get_duration())
+                        grid[i][j].time_label = '%02d:%02d-%02d:%02d' % (
+                                schedule.datetime.hour,
+                                schedule.datetime.minute,
+                                end_time.hour,
+                                end_time.minute)
+
                         for schedule in schedule_list[1:]:
                             grid[i][j].schedules.remove(schedule)
                             end_time = schedule.datetime + timedelta(minutes=schedule.get_duration())
@@ -315,6 +325,7 @@ class Grid(TemplateView):
                             # that is we merge all of them, ignoring the fact
                             # that the other emissions will stop at 8am30
                             current_cell_schedules = set(grid[i][j].schedules)
+                            current_cell_emissions = set([x.emission for x in current_cell_schedules])
                             cursor = 1
                             while True and current_cell_schedules:
                                 same_cell_below = [x for x in grid[i+cursor] if x.y == grid[i][j].y]
@@ -322,13 +333,15 @@ class Grid(TemplateView):
                                     cursor += 1
                                     continue
                                 same_cell_below = same_cell_below[0]
-                                if current_cell_schedules.issubset(same_cell_below.schedules):
+                                same_cell_below_emissions = set([x.emission for x in same_cell_below.schedules])
+
+                                if current_cell_emissions.issubset(same_cell_below_emissions):
                                     # this handles case A (see comment above)
                                     for schedule in current_cell_schedules:
                                         if schedule in same_cell_below.schedules:
                                             same_cell_below.schedules.remove(schedule)
-                                elif same_cell_below.schedules and \
-                                        current_cell_schedules.issuperset(same_cell_below.schedules):
+                                elif same_cell_below_emissions and \
+                                        current_cell_emissions.issuperset(same_cell_below_emissions):
                                     # this handles case B (see comment above)
                                     # we set the cell time label to the longest
                                     # period
@@ -350,6 +363,13 @@ class Grid(TemplateView):
                                                     end_time.minute)
                                     grid[i][j].h += 1
                                     grid[i+cursor].remove(same_cell_below)
+                                elif same_cell_below_emissions and \
+                                        current_cell_emissions.intersection(same_cell_below_emissions):
+                                    same_cell_below.schedules = [x for x in
+                                            same_cell_below.schedules if
+                                            x.emission not in
+                                            current_cell_emissions or
+                                            x.get_duration() < 30]
                                 cursor += 1
                             break
                 except IndexError: