Example #1
0
    def participates(self, ID):

        activities = self.__repository._getAll()

        return filterBy(
            activities,
            lambda activity: self.__repositoryDTO._upcoming(activity.date) and
            any(ID == str(personID) for personID in activity.personIDs))
Example #2
0
    def search(self, string):

        activities = self.__repository._getAll()

        return filterBy(
            activities, lambda activity: any(string in data for data in [
                activity.date, activity.time, activity.date + " " + activity.
                time, activity.description
            ]))
Example #3
0
    def day(self, date):

        activities = self.__repository._getAll()

        matching = filterBy(activities, lambda activity: activity.date == date)
        shellSort(
            matching, lambda activity1, activity2: datetime.strptime(
                activity1.time, '%H:%M') <= datetime.strptime(
                    activity2.time, '%H:%M'))

        return matching
Example #4
0
    def personActivities(self):

        upcoming = filterBy(self._activityRepository._getAll(),
                            lambda activity: self._upcoming(activity.date))
        persons = self._personRepository._getAll()

        count = {}
        for person in persons:
            count[person.ID] = 0
        for activity in upcoming:
            for ID in activity.personIDs:
                count[ID] += 1

        shellSort(
            persons,
            lambda person1, person2: count[person1.ID] >= count[person2.ID])

        return persons
Example #5
0
    def busiest(self):

        activities = self.__repository._getAll()

        upcoming = filterBy(
            activities,
            lambda activity: self.__repositoryDTO._upcoming(activity.date))

        days = {}
        for activity in upcoming:
            if activity.date not in days.keys():
                days[activity.date] = 0
            days[activity.date] += 1

        shellSort(
            upcoming, lambda activity1, activity2: days[activity1.date] > days[
                activity2.date])

        return upcoming
Example #6
0
    def week(self, date):

        try:
            date = datetime.strptime(date, "%d.%m.%Y")
            year = date.year
            week = date.isocalendar()[1]
        except ValueError:
            return []

        activities = self.__repository._getAll()

        matching = filterBy(
            activities, lambda activity: year == datetime.strptime(
                activity.date, "%d.%m.%Y").year and week == datetime.strptime(
                    activity.date, "%d.%m.%Y").isocalendar()[1])
        shellSort(
            matching, lambda activity1, activity2:
            (datetime.strptime(activity1.date, "%d.%m.%Y") < datetime.strptime(
                activity2.date, "%d.%m.%Y")) or
            (activity1.date == activity2.date and datetime.strptime(
                activity1.time, '%H:%M') <= datetime.strptime(
                    activity2.time, '%H:%M')))

        return matching