Ejemplo n.º 1
0
	def get(self):
		try:
			is_admin = users.is_current_user_admin()
			employees = appcache.get_all_employees()
			properties = model_employee.Employee.properties()
			
			"""
				Filter query by each GET request argument
			"""                                          
			# TODO: The filters are not persisted when sort order is invoked; it reverts to the full Employee list
			filters = dict()
			for arg in self.request.arguments():
				prop = str(self.request.get(arg))
				if properties.has_key(arg) and prop is not None and prop != '':
					prop = prop.split(',')
					value_list = list()
					# Filter out empty values
					for value in prop:
						if value != '':
							value_list.append(value)

					employees.filter(arg+' IN', value_list)
					filters[arg] = value_list

			"""
				Filter query by a specified order
				Only allow one order argument
			"""
			order = str(self.request.get('order')).split(',')[0]
			if employees is not None and properties.has_key(order):
				logging.debug('Ordering by '+str(order))
			   	# Sort Employees
				try:
					if order == 'last_name':
						employees = sorted(employees, key=lambda employee: employee.last_name, reverse=False)
					elif order == 'role':
						employees = sorted(employees, key=lambda employee: employee.role, reverse=False)						
					elif order == 'department':
						employees = sorted(employees, key=lambda employee: employee.department, reverse=False)
					elif order == 'created':
						employees = sorted(employees, key=lambda employee: employee.created, reverse=True) 
					elif order == 'date_last_modified':
						employees = sorted(employees, key=lambda employee: employee.date_last_modified, reverse=True) 
					else:
						employees = sorted(employees, key=lambda employee: employee.last_name, reverse=False)
				except (Exception), e:
					# Do not redirect to the 500 error view from here, just catch the fact that the reference to the Employee ordering is incorrect
					logging.error(e)
			
			else:
Ejemplo n.º 2
0
	def get(self):
		try:            
			# Get Employees                                                  
			employees = appcache.get_all_employees()
			employees = sorted(employees, key=lambda employee: employee.date_last_modified, reverse=True)
			employees = employees[0:5]
			
			# Get Skills
			skills = dict()
			db_skills = appcache.get_all_skills()
			# To avoid duplicate skills in display, add the skill to a dict with a Skill list value, corresponding to Skill:Employee instances of that skill
			for skill in db_skills:
				if skills.has_key(skill.name_index):         
					# Increment the Employee count for this skill
					skills_list = skills[skill.name_index]['skills']
					skills_list.append(skill)
					skills[skill.name_index] = {'skill':skill, 'skills':skills_list}
				else:
					# Create a dict object for this Skill
					skills_list = list()
					skills_list.append(skill)
					skills[skill.name_index] = {'skill':skill, 'skills':skills_list}
					          
			# Sort the Dict into a List of Tuples, sorted by key name. This maintains the output as an iterable key-value pair, rather than returning a list of just the keys
			skills = sorted(skills.items(), key=lambda skill: skill[1]['skill'].created, reverse=True)
			# Get the last 5 skills created
			skills = skills[0:5]
			
			
			# Get latest Skills Searches
			skills_searches = appcache.get_skills_searches()
			if skills_searches is not None:
				skills_searches = sorted(skills_searches.items(), reverse=True)[:10]
			
			args = dict(env=os.environ, employees=employees, skills=skills, skills_searches=skills_searches)
			path = os.path.join(os.path.dirname(__file__),'../views/index.html')
			self.response.out.write(template.render(path, args))
			
		except (Exception), e:
			logging.error('HomeController : get()')
			logging.error(e)
			self.error(500) 
Ejemplo n.º 3
0
	def get(self):                                    
		try:
			if not self.request.headers.has_key('X-AppEngine-Cron'):
				logging.debug('UpdateLinkedInSkillsController : get() : Request Handler has been triggered manually. Returning.')
				return
            
			# Get all Employees from Memcache, as a db result list
			employees = appcache.get_all_employees()
			         
			for employee in employees:
				if employee.oauth_verifier != None and employee.oauth_verifier != '':
					uuid = employee.id
					response = utils.get_employee_profile(uuid)
					if response is True:
						logging.debug('Running CRON job to get latest LinkedIn Skills for Employee with UUID of '+uuid)
					else:
						logging.debug('NOT Running CRON job to get latest LinkedIn Skills for Employee with UUID of '+uuid)
			return
		except (Exception), e:
			logging.error(e)