'True if the event covers the given date and/or hour'

def covers(self, date, hour):

    if self.start:
        if ((self.start.date() < date) and (self.end.date() > date)):
            return True
        elif ((self.start.date() == date) and (self.start.hour <= hour)):
            if (self.end.date() > date):
                return True
            elif ((self.end.date() == date) and (self.end.hour >= hour)):
                if (self.end.hour > hour):
                    return True
                elif ((self.end.hour == hour) and (self.end.minute > 0)):
                    return True
        elif ((self.start.date() < date) and (self.end.date() == date)):
            if (self.end.hour > hour):
                return True
            elif ((self.end.hour == hour) and (self.end.minute > 0)):
                return True
    elif ((self.end.date() == date) and (self.end.hour == hour)):
        return True
    return False
