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))