def post(self): try: uuid = None employee_properties = model_employee.Employee.properties() if self.request.get('id') is not None and self.request.get('id') != '': uuid = str(self.request.get('id')) arguments = dict() for arg in self.request.arguments(): arguments[str(arg)] = str(self.request.get(arg)).strip().strip('<!>') done = appcache.set_employee_create_errors(uuid, {}) # Validate the form input errors = utils.validate_employee_skill_input(arguments) if len(errors.items()) > 0: logging.error('Invalid Skill') appcache.set_employee_create_errors(uuid, errors) self.redirect('/employees/'+uuid) return # Create a single LinkedIn Skill instance skill = utils.create_linkedin_skill_instance(arguments) saved = datastore.set_employee_skill(uuid, skill) # Redirect to the Employee view self.redirect('/employees/'+uuid) except (Exception), e: logging.error('AddSkillToEmployeeController : post()') logging.error(e) self.error(500)
def get(self, uuid): try: is_admin = users.is_current_user_admin() employee_properties = model_employee.Employee.properties() skill_properties = model_skill.Skill.properties() uuid = str(uuid) skills = list() order = str(self.request.get('order')) errors = appcache.get_employee_create_errors(uuid) employee = appcache.get_employee(uuid) if employee is None: self.redirect('/employees') return # Get the skills for the Employee skills = appcache.get_employee_skills(uuid) # Sort Skills try: if skills is not None and len(skills) > 0: # If we have an explicit order, sort by that order if order == 'skill.name_index': skills = sorted(skills, key=lambda skill: skill.name_index, reverse=False) elif order == 'skill.proficiency_index': skills = sorted(skills, key=lambda skill: int(skill.proficiency_index), reverse=False) elif order == 'skill.years_id': skills = sorted(skills, key=lambda skill: int(skill.years_id), reverse=True) else: skills = sorted(skills, key=lambda skill: skill.name_index, reverse=False) except (Exception), e: # Do not redirect to the 500 error view from here, just catch the fact that the reference to the Skills is incorrect, # as the Skills no longer exist by those keys - e.g. in the situation where we have deleted the skills using the admin console logging.error(e) args = dict(env=os.environ, employee=employee, skills=skills, employee_properties=employee_properties, skill_properties=skill_properties, order=order, errors=errors, is_admin=is_admin) path = os.path.join(os.path.dirname(__file__),'../views/employees/view.html') self.response.out.write(template.render(path, args)) # Now flush any errors errors done = appcache.set_employee_create_errors(uuid, {})