diff --git a/GooCalendar/Calendar.py b/GooCalendar/Calendar.py index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk=..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvQ2FsZW5kYXIucHk= 100644 --- a/GooCalendar/Calendar.py +++ b/GooCalendar/Calendar.py @@ -369,7 +369,8 @@ """ weeks = util.my_monthdatescalendar(self.cal, *self.selected_date) start = event.start.timetuple()[:3] - end = event.end.timetuple()[:3] + end = event.end if event.end else event.start + end = end.timetuple()[:3] days = [] for weekno, week in enumerate(weeks): if self.zoom == "week": @@ -384,7 +385,7 @@ return days if len(days) > 0: return days - raise Exception('Days not found: %s %s' % (event.start, event.end)) + raise Exception('Days not found: %s %s' % (event.start, end)) def _find_free_line(self, days): for line in range(days[0].n_lines): @@ -487,4 +488,5 @@ event_item.height = day.line_height week_start = week[0].date week_end = week[-1].date + end = event.end if event.end else event.start if (event.start.date() < week_start @@ -490,7 +492,7 @@ if (event.start.date() < week_start - and event.end.date() > week_end): + and end.date() > week_end): event_item.type = 'mid' event_item.width -= 3 elif event.start.date() < week_start: event_item.type = 'right' event_item.width -= 4 @@ -492,9 +494,9 @@ event_item.type = 'mid' event_item.width -= 3 elif event.start.date() < week_start: event_item.type = 'right' event_item.width -= 4 - elif event.end.date() > week_end: + elif end.date() > week_end: event_item.type = 'left' event_item.x += 2 event_item.width -= 4 @@ -674,7 +676,8 @@ daysdelta = self.drag_start_date - event_date event_item.x += daysdelta.days * self.day_width event_item.event.start += daysdelta - event_item.event.end += daysdelta + if event_item.event.end: + event_item.event.end += daysdelta event_item.update() self.emit('event-clicked', event_item.event) @@ -683,7 +686,8 @@ cur_pointed_date = self.get_cur_pointed_date(event.x, event.y) daysdelta = cur_pointed_date - self.drag_start_date event_item.event.start += daysdelta - event_item.event.end += daysdelta + if event_item.event.end: + event_item.event.end += daysdelta event_item.transparent = False # Drag and drop is over @@ -747,7 +751,8 @@ # Apply event item vertical translation timedelta = new_time - old_time event_item.event.start += timedelta - event_item.event.end += timedelta + if event_item.event.end: + event_item.event.end += timedelta pxdelta = (timedelta.total_seconds() / 60 * self.minute_height) event_item.y += pxdelta event_item.update() diff --git a/GooCalendar/Event.py b/GooCalendar/Event.py index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvRXZlbnQucHk=..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvRXZlbnQucHk= 100644 --- a/GooCalendar/Event.py +++ b/GooCalendar/Event.py @@ -19,7 +19,6 @@ self.bg_color = kwargs.get('bg_color', 'orangered') if end is None: self.all_day = True - self.end = start @property def multidays(self): diff --git a/GooCalendar/EventItem.py b/GooCalendar/EventItem.py index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvRXZlbnRJdGVtLnB5..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvRXZlbnRJdGVtLnB5 100644 --- a/GooCalendar/EventItem.py +++ b/GooCalendar/EventItem.py @@ -87,6 +87,4 @@ style = self.cal.get_style() font_descr = style.font_desc.copy() self.font = font_descr.to_string() - starttime = self.event.start.strftime(self.time_format) - endtime = self.event.end.strftime(self.time_format) if self.event.multidays and not self.event.all_day: @@ -92,4 +90,6 @@ if self.event.multidays and not self.event.all_day: + starttime = self.event.start.strftime(self.time_format) + endtime = self.event.end.strftime(self.time_format) caption = '%s - %s %s' % (starttime, endtime, self.event.caption) else: caption = self.event.caption diff --git a/GooCalendar/util.py b/GooCalendar/util.py index 59d9c71058db0ced1bafb3e7ea976c38dae92d64_R29vQ2FsZW5kYXIvdXRpbC5weQ==..f456097995ad4cfa42db97e39eaaa959ba3864b8_R29vQ2FsZW5kYXIvdXRpbC5weQ== 100644 --- a/GooCalendar/util.py +++ b/GooCalendar/util.py @@ -79,8 +79,10 @@ def event_days(event1, event2): - return (time_delta(event1.start, event1.end).days - - time_delta(event2.start, event2.end).days) + end1 = event1.end if event1.end else event1.start + end2 = event2.end if event2.end else event2.start + return (time_delta(event1.start, end1).days + - time_delta(event2.start, end2).days) def event_intersects(event, start, end=None):