コード例 #1
0
ファイル: AdminHandler.py プロジェクト: Lidannnn/OATest
    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)
コード例 #2
0
ファイル: AdminHandler.py プロジェクト: Lidannnn/OATest
    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)