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))
def get(self): depts = Dept.all() template_values = {'depts': depts} path = 'templates/api.hr.html' self.response.out.write(template.render(path, template_values))
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')
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')
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))