def filter_list(self): conditions = and_() group_conditions = and_() # if "pro_info.view" in self.handler.current_user.get_current_perms(): if not self.handler.current_user.imchecker: conditions.append(Pro_Info.user_id == self.handler.current_user.id) group_conditions.append(Pro_Info.user_id == self.handler.current_user.id) env = self.params.get("env") status = self.params.get("status") if env: conditions.append(Pro_Info.env_id == env) if status: conditions.append(Pro_Resource_Apply.status == status) projects = self.db.query( Pro_Info ).outerjoin( Pro_Resource_Apply, Pro_Info.last_apply_id == Pro_Resource_Apply.id ).filter( conditions ).order_by( Pro_Info.id.desc() ).all() # project_list = [i.as_dict() for i in projects] # logger.info("project_list %s" % project_list) # self.db.commit() # self.db.remove() projects_by_env = self.db.query( Env_Info.id, Env_Info.name, func.count(Pro_Info.id) ).outerjoin( Pro_Info, Env_Info.id == Pro_Info.env_id ).filter( group_conditions ).group_by( Env_Info.id ).all() logger.info(projects_by_env) projects_by_status = self.db.query( Pro_Resource_Apply.status, func.count(Pro_Info.id) ).outerjoin( Pro_Info, Pro_Resource_Apply.id == Pro_Info.last_apply_id ).filter( group_conditions ).group_by( Pro_Resource_Apply.status ).all() logger.info(projects_by_status) data = ObjectDict() data.projects = projects data.projects_by_env = projects_by_env data.projects_by_status = projects_by_status return self.success(data=data)