Esempio n. 1
0
    def get(self, name):

        user = self.request.environ['current_user']
        name = urllib.unquote(name).decode('utf-8')

        prs = PerformanceReview.all().filter('manager',
                                             user).order("-date").fetch(1000)

        def get_sub_prs(manager, prs):
            current_manager_prs = PerformanceReview.all().filter('manager',
                                             manager).order("-date").fetch(1000)
            prs.extend(current_manager_prs)
            for manager in manager.subs:
                get_sub_prs(manager, prs)
            return prs

        if user.edit_sub_reviews:
            prs = []
            get_sub_prs(user, prs)

        if name == 'all':
            departments = Dept.all().fetch(1000)
        else:
            departments = Dept.all().filter('name', name).fetch(1000)

        for department in departments:
            department.prs = filter(lambda x: x.employee.dept.name
            == department.name and x.period.is_open, prs)

        template_values = {'name': name,
                           'depts': departments,
                           'current_user': user.email}

        path = 'templates/api.manager.departments.html'
        self.response.out.write(template.render(path, template_values))
Esempio n. 2
0
    def post(self):

        key = self.request.get('key')

        email = self.request.get('email').strip()

        user = User.get(key)

        user.email = email

        first_name = self.request.get('first_name').strip()
        user.first_name = first_name

        last_name = self.request.get('last_name').strip()
        user.last_name = last_name

        position = self.request.get('position')
        user.position = position

        first_date =  self.request.get('first_date')
        try:
            first_date = datetime.datetime.strptime(first_date, '%Y-%m-%d').date()
        except ValueError:
            first_date = None
        user.first_date = first_date

        dept = self.request.get('dept')
        dept_ref = Dept.all().filter('name', dept).get()

        if dept_ref is None:
            dept_ref = Dept(name=dept)
            dept_ref.put()

        user.dept = dept_ref
        try:
            manager = Model.get(self.request.get('manager'))
        except BadKeyError:
            manager = None
        user.manager = manager

        roles = self.request.get('role')[:-1].split(',')

        user.role = []
        for role in roles:
                role_key = Role.gql("WHERE value = :role",
                                    role=role).get().key()
                user.role.append(role_key)
        user.put()

        self.response.out.write('You have successfully updated user info')
Esempio n. 3
0
    def get(self):
        manager = self.request.environ['current_user']

        user_departments_keys = []

        prs = PerformanceReview.all().filter('manager',
                                             manager)

        for pr in prs:
            if pr.period.is_open:
                if not pr.employee.dept.key() in user_departments_keys:
                    user_departments_keys.append(pr.employee.dept.key())

        user_departments = map(lambda x: Dept.get(x), user_departments_keys)

        archived_periods = PerformanceReviewPeriod.gql("WHERE is_open = false ORDER BY start_date DESC").fetch(1000)

        def manager_has_pr_in_period(period):
            for pr in period.performance_reviews:
                if pr.manager.email == manager.email:
                    return True

        archived_periods = filter(manager_has_pr_in_period, archived_periods)

        comments = CommentToForm.gql("WHERE manager = :manager", manager = manager).fetch(1000)
        comments = filter(lambda x: x.pr.period.is_open, comments)

        template_values = {"departments": user_departments,
                           "archived_periods": archived_periods,
                           "comments": comments
                           }

        path = 'templates/api.manager.home.html'
        self.response.out.write(template.render(path, template_values))
Esempio n. 4
0
    def get(self):

        depts = Dept.all()

        template_values = {'depts': depts}

        path = 'templates/api.hr.html'
        self.response.out.write(template.render(path, template_values))
Esempio n. 5
0
    def get(self):

        open_periods = PerformanceReviewPeriod.all().order("-start_date").filter('is_open', True).fetch(1000)
        closed_periods = PerformanceReviewPeriod.all().order("-start_date").filter('is_open', False).fetch(1000)

        for period in open_periods:
            period.register = 'disabled'
            period.delete = 'inline'
            period.departments = []

            for pr in period.performance_reviews:
                if pr.period.is_open:
                    if not pr.employee.dept.key() in period.departments:
                        period.departments.append(pr.employee.dept.key())
            period.departments = map(lambda x: Dept.get(x), period.departments)

            for pr in period.performance_reviews:
                if pr.manager_form or pr.employee_form:
                    period.delete = 'none'


            for department in period.departments:
                department.prs = filter(lambda x: x.employee.dept.name == department.name, period.performance_reviews)

                for pr in department.prs:
                    pr.register = 'disabled'
                    if pr.manager_form:
                        if pr.manager_form.status == 'submitted':
                            department.register = ''
                            pr.register = ''


        template_values = {'open_periods': open_periods,
                           'closed_periods': closed_periods}

        path = 'templates/hr_table.html'
        self.response.out.write(template.render(path, template_values))
Esempio n. 6
0
    def get(self):

        file_key = ContactXlsFile.all().get().file_key
        blob_info = blobstore.BlobInfo.get(file_key)
        file = blob_info.open().read()

        wb = xlrd.open_workbook(file_contents=file)
        wb.sheet_names()
        sh = wb.sheet_by_index(0)

        cols_dict = {'first_name': 1,
                     'last_name': 0,
                     'dept': 2,
                     'position': 3,
                     'email': 4,
                     'manager': 12}
        manager_dict = {}

        reg = "^\s+|\n|\r|\s+$"

        employee_role = Role.all().filter('value', 'employee').get().key()

        for rownum in range(sh.nrows)[6:]:
            email = sh.cell_value(rownum, cols_dict['email']).strip()
            user = User.all().filter('email', email).get()
            if user is None:
                user = User(email=email)
                user.put()

            if not user.role:
                user.role.append(employee_role)

            string_fields = ['first_name',
                             'last_name',
                             'position',
                             ]

            for field in string_fields:
                value = re.sub(reg,
                               '',
                               sh.cell_value(rownum, cols_dict[field]))
                setattr(user, field, value)

            department_str = re.sub(reg,
                                    '',
                                    sh.cell_value(rownum, cols_dict['dept']))
            department = Dept.all().filter('name', department_str).get()
            if department is None:
                department = Dept(name=department_str)
                department.put()
            user.dept = department

            user.put()

            manager_str = re.sub(reg,
                                 '',
                                 sh.cell_value(rownum, cols_dict['manager']))
            manager_dict[user.key()] = manager_str

        manager_role = Role.all().filter('value', 'manager').get().key()

        for user_key in manager_dict:

            manager_str = manager_dict[user_key].replace('  ', ' ')

            if manager_str:
                last_name, first_name = manager_str.split(' ')[:2]
                manager = User.all().filter('last_name',
                                            last_name).filter('first_name',
                                                              first_name).get()
            else:
                manager = None

            if manager is not None:
                if manager_role not in manager.role:
                    manager.role.append(manager_role)
                    manager.put()

            user = User.get(user_key)
            user.manager = manager
            user.put()

        self.redirect('/users')
Esempio n. 7
0
    def get(self, key):

        depts = Dept.all()
        period = PerformanceReviewPeriod.get(key)

        summary = []

        for dept in depts:

            existed_pr = filter(lambda x: x.self_pr.get(), dept.users)

            all_dept_prs = filter(lambda x: x.self_pr.filter('period',
                                                             period).get(),
                                  existed_pr)

            if all_dept_prs:
                employees = len(all_dept_prs)

                clean_manager_form = filter(lambda x:
                                            not x.self_pr.order('-date').get().
                                            manager_form,
                                            existed_pr)
                clean_employee_form = filter(lambda x:
                                             not x.self_pr.order('-date')
                                             .get().
                                             employee_form,
                                             existed_pr)

                clean_draft = len(clean_employee_form) + \
                              len(clean_manager_form)

                not_clean_manager_form = filter(lambda x:
                                                x.self_pr.order('-date').get().
                                                manager_form,
                                                existed_pr)
                not_clean_employee_form = filter(lambda x:
                                                 x.self_pr.order('-date')
                                                 .get().
                                                 employee_form,
                                                 existed_pr)

                man_draft_in_work = filter(lambda x:
                                           x.self_pr.order('-date').get().
                                           manager_form.status ==
                                           'draft',
                                           not_clean_manager_form)
                emp_draft_in_work = filter(lambda x:
                                           x.self_pr.order('-date').get().
                                           employee_form.status ==
                                           'draft', not_clean_employee_form)

                in_work = len(man_draft_in_work) + len(emp_draft_in_work)

                registered_pr = filter(lambda x:
                                       x.self_pr.order('-date').get()
                                       .manager_form.status ==
                                       'registered', not_clean_manager_form)

                reg_pr = len(registered_pr)

                submitted_by_employee = filter(lambda x:
                                               x.self_pr.order('-date').get().
                                               employee_form.status
                                               == 'submitted',
                                               not_clean_employee_form)
                emp_submit = len(submitted_by_employee)

                submitted_by_manager = filter(lambda x:
                                              x.self_pr.order('-date').get().
                                              manager_form.status
                                              == 'submitted',
                                              not_clean_manager_form)
                man_submit = len(submitted_by_manager)

                approved_pr = filter(lambda x:
                                     x.self_pr.order('-date').get()
                                     .manager_form
                                     .status ==
                                     'approved', not_clean_manager_form)

                approved = len(approved_pr)

                all_draft = clean_draft + in_work + emp_submit + man_submit

                percent = (approved * 100) / employees

                dept_info = {'name': dept.name,
                         'employees': employees,
                         'clean': clean_draft,
                         'in_work': in_work,
                         'all_draft': all_draft,
                         'reg': reg_pr,
                         'percent': percent,
                         'approved': approved,
                         'emp_submit': emp_submit,
                         'man_submit': man_submit}

                summary.append(dept_info)

        template_values = {'summary': summary}

        path = 'templates/summary_report.html'
        self.response.out.write(template.render(path, template_values))