Example #1
0
	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)	
Example #2
0
	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, {})