def post(self): type = self.request.get('type') start = self.request.get('start') finish = self.request.get('finish') first_date = self.request.get('first_date') event = Event.all().filter('type', type).get() if event is None: event = Event() try: event.start_date = datetime.datetime.strptime(start, '%Y-%m-%d').date() except ValueError: self.response.out.write('bad start date') return try: event.finish_date = datetime.datetime.strptime(finish, '%Y-%m-%d').date() except ValueError: self.response.out.write('bad finish date') return try: event.first_effective_date = datetime.datetime.strptime(first_date, '%Y-%m-%d').date() except ValueError: self.response.out.write('bad first effective date') return event.type = type event.put() self.response.out.write('ok')
def get(self): events = Event.all() template_values = {'events': events} path = 'templates/settings.html' self.response.out.write(template.render(path, template_values))
def post(self): user = self.request.environ['current_user'] role_key = Role.gql("WHERE value = :hr", hr='hr').get().key() if role_key not in user.role: self.error(403) return start_str = self.request.get('start') finish_str = self.request.get('finish') type = self.request.get('type') event = Event.all().filter('type', type).get() try: first_date = event.first_effective_date except AttributeError: first_date = None employees = self.request.get('employees')[:-1].split(',') try: start = datetime.datetime.strptime(start_str, '%Y-%m-%d').date() finish = datetime.datetime.strptime(finish_str, '%Y-%m-%d').date() except ValueError: self.response.out.write('incorrect date') self.error(403) return description = "PR %s: %s-%s" % (type, start_str, finish_str) period = PerformanceReviewPeriod(type=type, description=description, start_date=start, finish_date=finish) period.put() for employee in employees: if employee != '': user = Model.get(employee) pr = PerformanceReview(employee=user, first_effective_date=first_date, manager=user.manager, period=period, date=start) pr.put() self.response.out.write(period.key())
def get(self): today = datetime.date.today() events = Event.all() employees = User.all() month = datetime.timedelta(days=30) week = datetime.timedelta(weeks=1) for event in events: if event.start_date < today: event.start_date = event.start_date.replace(year = (today.year + 1)) event.put() for employee in employees: first_date = employee.first_date if not first_date: first_date = datetime.date.min start_date = first_date + datetime.timedelta(weeks=13) finish_date = start_date + datetime.timedelta(weeks=2) if start_date - month == today: description = "PR annual: %s-%s" % (start_date, finish_date) period = PerformanceReviewPeriod(type='annual', description=description, start_date=start_date, finish_date=finish_date) period.put() pr = PerformanceReview(employee=employee, manager=employee.manager, date=period.start_date, period=period) pr.put() next_pr_start_date = start_date + 13 * week for event in events: delta = next_pr_start_date - event.start_date if next_pr_start_date > today: if delta < month and delta > -month: if event.start_date - month == today: description = "PR %s: %s-%s" % (event.type, event.start_date, event.finish_date) period = PerformanceReviewPeriod(start_date=event.start_date, description=description, finish_date=event.finish_date) period.put() pr = PerformanceReview(period=period, employee=employee, manager=employee.manager, date=period.start_date ) pr.put() else: if next_pr_start_date == today + month: finish_date = next_pr_start_date + 2 * week description = "PR custom: %s-%s" % (next_pr_start_date, finish_date) period = PerformanceReviewPeriod(start_date=next_pr_start_date, description=description, finish_date=finish_date) period.put() pr = PerformanceReview(period=period, employee=employee, manager=employee.manager, date=period.start_date ) pr.put() else: for event in events: if event.start_date - month == today or event.start_date.replace(year=(today.year + 1)): description = "PR %s: %s-%s" % (event.type, event.start_date, event.finish_date) period = PerformanceReviewPeriod(start_date=event.start_date, description=description, finish_date=event.finish_date) period.put() pr = PerformanceReview(period=period, employee=employee, manager=employee.manager, date=period.start_date ) pr.put()