def getEntries(self, startTime=None, endTime=None):
        store = self.employee.store

        q = AND(
            TimeEntry.employee == self.employee,
            TimeEntry.type == EntryType.storeID,
            EntryType.active == True,
            TimeEntry.period == TimePeriod.storeID,

        )
        q.conditions = list(q.conditions)

        if not startTime:
            startTime = self.startTime

        if not endTime:
            endTime = self.endTime

        if endTime:
            q.conditions.append(TimePeriod._startTime <= IDateTime(endTime))

        if startTime:
            q.conditions.append(OR(
                TimePeriod._endTime >= IDateTime(startTime),
                TimePeriod._endTime==None
            ))

        return [i[0] for i in store.query((TimeEntry, EntryType, TimePeriod), q, sort=TimePeriod._startTime.asc)]
    def getMappingFor(self, e: WorkLocationRenderer):
        self.selected = e._workLocation

        isAdm = self.employee.isAdministrator()

        store = self.employee.store

        q = AND(
            TimeEntry.workLocation==self.selected,
            TimeEntry.type==EntryType.storeID,
            EntryType.active==True,
            TimeEntry.period==TimePeriod.storeID,
            TimeEntry.employee==Employee.storeID,
            _PowerupConnector.interface==str(qual(ISupervisedBy)),
            _PowerupConnector.item==Employee.storeID,
            TimeEntry.approved==False,
            TimeEntry.denied==False

        )
        q.conditions = list(q.conditions)

        if self.endTime:
            q.conditions.append(
                TimePeriod._startTime <= IDateTime(self.endTime)
            )

        if self.startTime:
            q.conditions.append(
                OR(
                    TimePeriod._endTime >= IDateTime(self.startTime),
                    TimePeriod._endTime==None
                )
            )

        if not isAdm:
            q.conditions.append(TimeEntry.denied==False)
            q.conditions.append(_PowerupConnector.powerup == ISupervisor(self.employee))

        self.__class__.q = q

        shifts = (i[0] for i in store.query((TimeEntry, TimePeriod, EntryType, Employee, _PowerupConnector), q, sort=TimePeriod._startTime.asc))
        return IterateInReactor(self.prepareShifts(shifts))
    def getMappingFor(self, e: EmployeeRenderer):
        if self.employee.isAdministrator() or e.getEmployee() in ISupervisor(self.employee).getEmployees():
            self.selected = e.getEmployee()
        else:
            return []

        isAdm = self.employee.isAdministrator()

        store = self.employee.store

        q = AND(
            TimeEntry.employee==self.selected,
            TimeEntry.type==EntryType.storeID,
            EntryType.active==True,
            TimeEntry.period==TimePeriod.storeID,

        )
        q.conditions = list(q.conditions)

        if self.endTime:
            q.conditions.append(
                TimePeriod._startTime <= IDateTime(self.endTime)
            )

        if self.startTime:
            q.conditions.append(
                OR(
                    TimePeriod._endTime >= IDateTime(self.startTime),
                    TimePeriod._endTime==None
                )
            )

        if not isAdm:
            q.conditions.append(TimeEntry.denied==False)

        shifts = (i[0] for i in store.query((TimeEntry, TimePeriod, EntryType), q, sort=TimePeriod._startTime.asc))
        return IterateInReactor(self.prepareShifts(shifts))