def post(self, uid, *args, **kwargs): month = self.get_argument("search-month") try: admin = self.session.query(User).filter( User.id == self.current_user, User.is_admin == 1 ).one() except sqlalchemy.orm.exc.NoResultFound: self.send_error(status_code=404) except sqlalchemy.orm.exc.MultipleResultsFound: self.finish("multiple uid %s found" % self.current_user) if not uid: self.finish("uid needed") try: user = self.session.query(User).filter( User.id == uid ).one() except sqlalchemy.orm.exc.NoResultFound: self.finish("uid %s not found" % self.current_user) except sqlalchemy.orm.exc.MultipleResultsFound: self.finish("multiple uid %s found" % self.current_user) attendances = self.session.query(Attendance).filter( Attendance.userid == user.id, Attendance.date.like("{month}%".format(month=month)) ).order_by(Attendance.date).all() late_hour, overtime_hour = get_late_overtime_hour(user.id, month) late_hour_total, overtime_hour_total = get_history_late_overtime_hour(user.id) self.render("admin/user_attence.html", current_user=admin, active_tag="user_manage", late_hour=late_hour, overtime_hour=overtime_hour, late_hour_total=late_hour_total, overtime_hour_total=overtime_hour_total, the_month=month, user=user, attendances=attendances)
def get(self, uid, *args, **kwargs): try: admin = self.session.query(User).filter( User.id == self.current_user, User.is_admin == 1 ).one() except sqlalchemy.orm.exc.NoResultFound: self.send_error(status_code=404) except sqlalchemy.orm.exc.MultipleResultsFound: self.finish("multiple uid %s found" % self.current_user) if not uid: # 用户管理页面 teams = self.session.query(Team).order_by(Team.id).all() companies = self.session.query(Company).order_by(Company.id).all() row2dict = lambda rows: {row.name: row.id for row in rows} team_dict = row2dict(teams) company_dict = row2dict(companies) search_team = self.get_argument("search-team", default="") search_company = self.get_argument("search-company", default="") if not search_team or search_team not in team_dict or team_dict[search_team] == 1: # 没有过滤工作组,或工作组不存在,或者“未设置” # 前端页面为了避免歧义,“未设置”显示为“全部” if not search_company or search_company not in company_dict or company_dict[search_company] == 1: # 没有过滤公司,或公司不存在,或者“未设置” users = self.session.query(User).order_by(User.is_present.desc(), User.id) else: # 过滤了公司 users = self.session.query(User).filter( User.company == company_dict[search_company] ).order_by(User.is_present.desc(), User.id) else: # 过滤了工作组 if not search_company or search_company not in company_dict or company_dict[search_company] == 1: # 没有过滤公司,或公司不存在,或者“未设置” users = self.session.query(User).filter( User.team == team_dict[search_team] ).order_by(User.is_present.desc(), User.id) else: # 过滤了公司和工作组 users = self.session.query(User).filter( User.company == company_dict[search_company], User.team == team_dict[search_team] ).order_by(User.is_present.desc(), User.id) self.render("admin/user_manage.html", current_user=admin, active_tag="user_manage", users=users.all(), teams=teams, companies=companies, present_num=len(users.filter(User.is_present == 1, User.is_admin == 0).all()), current_team=search_team, current_company=search_company) else: # 单个用户考勤管理页面 try: user = self.session.query(User).filter( User.id == uid ).one() the_month = datetime.datetime.now().strftime("%Y-%m") late_hour_total, overtime_hour_total = get_history_late_overtime_hour(user.id) self.render("admin/user_attence.html", current_user=admin, active_tag="user_manage", late_hour=0, overtime_hour=0, late_hour_total=late_hour_total, overtime_hour_total=overtime_hour_total, the_month=the_month, user=user, attendances=[]) except sqlalchemy.orm.exc.NoResultFound: self.finish("uid %s not found" % self.current_user) except sqlalchemy.orm.exc.MultipleResultsFound: self.finish("multiple uid %s found" % self.current_user)