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:
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)
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)