def my_timesheets(self, start, end): query = self.all() query.filter("google_id = ", users.get_current_user().user_id()) query.filter("date >= ", convertToDate(start)) query.filter("date <= ", convertToDate(end)) query.order("-date") query.order("-created") return query.fetch(1000)
def update_timsheet(self, items): ''' only updating task currently ''' new_task = items['task'].strip() current_key = items['key'].strip() errors = self.validate_task(new_task) ts = self.get(current_key) if users.get_current_user().user_id() <> ts.google_id: errors.append('This is not your task to update') ts.task = new_task try: ts.minutes = int(items['minutes']) except: errors.append('Minutes must be an integer') try: ts.date = convertToDate(items['date']) except: errors.append('Invalid date format - yyyy-mm-dd') if len(errors) > 0: raise KnownError(errors) ts.update()
def save_entry(self, items): ''' Only save or deleting no updating ''' errors = [] self.google_id = users.get_current_user().user_id() new_item = items['task'].strip() if new_item == '': errors.append('Must enter a value for task') self.task = new_item try: self.minutes = int(items['minutes']) except: errors.append('Minutes must be an integer') try: self.date = convertToDate(items['date']) except: errors.append('Invalid date format - yyyy-mm-dd') if items['add'] == 'yes': Person().updateTimesheetTask(new_item) if len(errors) > 0: raise KnownError(errors) self.createNew() return str(self.key())
def my_timesheets_csv_by_day(self, start, end, hyphen): matrix = {} tss = self.my_timesheets(start, end) for ts in tss: if hyphen == 'yes': val = ts.task.split('-')[0].strip() else: val = ts.task.strip() c_date = convertFromDate(ts.date) if val in matrix: if c_date in matrix[val]: matrix[val][c_date] = matrix[val][c_date] + ts.minutes else: matrix[val][c_date] = ts.minutes else: matrix[val] = {c_date: ts.minutes} result = [] start_date = convertToDate(start) end_date = convertToDate(end) delta = timedelta(days=1) ''' Create the header ''' header = [''] i_date = start_date while i_date <= end_date: header.append(convertFromDate(i_date)) i_date += delta result.append(header) ''' iterate through the tasks and date range ''' for x in matrix: line = [x] i_date = start_date while i_date <= end_date: c_date = convertFromDate(i_date) if c_date in matrix[x]: line.append(matrix[x][c_date]) else: line.append('') i_date += delta result.append(line) return result