Esempio n. 1
0
    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')
Esempio n. 2
0
    def get(self):

        events = Event.all()

        template_values = {'events': events}

        path = 'templates/settings.html'
        self.response.out.write(template.render(path, template_values))
Esempio n. 3
0
    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()