Exemple #1
0
    def update(self, id="", **kwargs):
        if not id or not kwargs:
            raise exception.ParamNone(id=id)
        teacher_info = db_api.teacher_get(id)
        if not teacher_info:
            raise exception.NotFound(id=id)
        if kwargs.get("class_id", ""):
            class_info = db_api.class_get(id=kwargs.get("class_id"))
            if not class_info:
                raise exception.NotFound(class_id=kwargs.get("class_id", ""))
            kwargs.update({
                "school_id": class_info.school_id,
                "grade_id": class_info.grade_id,
            })
        name = kwargs.get("name", "")
        if name and convert.bs2utf8(
                teacher_info.name) != name and db_api.teacher_list(name=name):
            raise exception.ParamExist(name=name)

        phone = kwargs.get("phone", "")
        if phone and convert.bs2utf8(
                teacher_info.phone) != phone and db_api.teacher_list(
                    phone=phone):
            raise exception.ParamExist(phone=phone)

        _ = db_api.teacher_update(id, kwargs)

        if kwargs.get("status", ""):
            history_values = {
                "teacher_id": id,
                "status": kwargs.get("status", "")
            }
            db_api.teacher_history_create(history_values)
        return _
Exemple #2
0
    def info_by_phone(self, phone=""):
        if not phone:
            return
        filters = dict()
        if phone:
            filters.update({"phone": phone})

        teacher_infos = db_api.teacher_list(**filters)
        return teacher_infos
Exemple #3
0
    def batch_input(self, teacher_data):
        # verify phone
        if not teacher_data or not isinstance(teacher_data, list):
            raise exception.ParamNone(teacher_data="")
        phone_data = []
        for teacher_info in teacher_data:
            if teacher_info.get("phone", ""):
                phone_data.append(teacher_info.get("phone"))
        exist_teacher_data = db_api.teacher_list(phone=phone_data)
        if exist_teacher_data:
            exist_phones = [
                teacher_info.phone for teacher_info in exist_teacher_data
            ]
            return False, "phone exist" + ",".join(exist_phones)

        combination_api.batch_input_teacher(exist_teacher_data)
        return True, "batch success"
Exemple #4
0
    def update(self, id="", **kwargs):
        if not id or not kwargs:
            raise exception.ParamNone(grade_id=id)
        garde_info = db_api.grade_get(id)
        if not garde_info:
            raise exception.NotFound(grade_id=id)

        if kwargs.get("school_id", ""):
            _ = db_api.school_get(kwargs.get("school_id", ""))
            if not _:
                raise exception.NotFound(school_id=kwargs.get("school_id", ""))

        name = kwargs.get("name", "")
        if name and convert.bs2utf8(garde_info.name) != name and db_api.teacher_list(name=name):
            raise exception.ParamExist(grade_name=name)

        _ = db_api.grade_update(id, kwargs)
        return _
    def infos(self, id="", teacher_id="", teacher_name="", status="", limit=100, offset=1):
        offset = (offset-1)*limit if offset > 0 else 0
        filters = dict()
        if id:
            filters.update({"id": id})
        if teacher_id or teacher_name:
            if not teacher_id:
                _teacher_list = db_api.teacher_list(name=teacher_name)
                if _teacher_list:
                    teacher_id = [teacher_info.id for teacher_info in _teacher_list]
            filters.update({"teacher_id": teacher_id})
        if status:
            filters.update({"status": status})

        history_list = db_api.teacher_history_list(offset=offset, limit=limit, **filters)
        views_list = self.views(history_list)
        for view in views_list:
            teacher_info = db_api.teacher_get(id=view.get("teacher_id"))
            if teacher_info:
                view.update({"teacher_name": teacher_info.name})
        history_count = db_api.teacher_history_count(**filters)
        return {"count": history_count, "state": 0, "message": "query success", "data": views_list}
Exemple #6
0
    def infos_for_sign(self,
                       id="",
                       name="",
                       school_id="",
                       grade_id="",
                       class_id="",
                       phone="",
                       position=0,
                       sign_date="",
                       limit=100,
                       offset=1):
        offset = (offset - 1) * limit if offset > 0 else 0
        filters = dict()
        if id:
            filters.update({"id": id})
        if name:
            filters.update({"name": name})
        if position in (1, 2):
            filters.update({"position": position})
        if school_id:
            filters.update({"school_id": school_id})
        if grade_id:
            filters.update({"grade_id": grade_id})
        if class_id:
            filters.update({"class_id": class_id})
        if phone:
            filters.update({"phone": phone})

        # 关联班级名和学校名
        teacher_list = db_api.teacher_list(offset=offset,
                                           limit=limit,
                                           **filters)

        # 关联学校和班级,还有学生得签到(学生亲属的签到信息)
        views_list = self.views(teacher_list)
        for view in views_list:
            if view.get("school_id", ""):
                school_info = db_api.school_get(id=view.get("school_id"))
                if school_info:
                    view.update({"school_name": school_info.name})
            if view.get("grade_info", None):
                grade_info = view.get("grade_info", None)
                if grade_info:
                    view.update({"grade_name": grade_info.get("name")})

            if view.get("class_info", None):
                class_info = view.get("class_info", None)
                if class_info:
                    view.update({"class_info": self.views(class_info)})

            #history
            teacher_history_lilst = db_api.teacher_history_list(
                teacher_id=view.get("id"))
            if teacher_history_lilst:
                view.update({"status": teacher_history_lilst[0].status})

            sign_count, late_count, early_count, sign_date = self.com_sign(
                view.get("id"), sign_date)
            view.update({
                "sign":
                sign_count,
                "late":
                late_count,
                "early":
                early_count,
                "sign_date":
                datetime.datetime.strftime(sign_date, "%Y-%m")
            })

        teacher_count = db_api.teacher_count(**filters)
        return {
            "count": teacher_count,
            "state": 0,
            "message": "query success",
            "data": views_list
        }
Exemple #7
0
    def infos(self,
              id="",
              name="",
              school_id="",
              school_name="",
              grade_id="",
              grade_name="",
              class_id="",
              class_name="",
              phone="",
              status="",
              position=0,
              limit=100,
              offset=1):
        offset = (offset - 1) * limit if offset > 0 else 0
        filters = dict()
        if id:
            filters.update({"id": id})
        if name:
            filters.update({"name": name})
        if position in (1, 2):
            filters.update({"position": position})
        if status:
            filters.update({"status": status})
        if school_id or school_name:
            if not school_id:
                _school_list = db_api.school_list(name=school_name)
                if not _school_list:
                    return {
                        "count": 0,
                        "state": 0,
                        "message": "query success",
                        "data": []
                    }
                school_id = [school_info.id for school_info in _school_list]
            filters.update({"school_id": school_id})

        if grade_id or grade_name:
            if not grade_id:
                _grade_list = db_api.grade_list(name=grade_name)
                if not _grade_list:
                    return {
                        "count": 0,
                        "state": 0,
                        "message": "query success",
                        "data": []
                    }
                grade_id = [grade_info.id for grade_info in _grade_list]
            filters.update({"grade_id": grade_id})

        if class_id or class_name:
            if not class_id:
                _class_list = db_api.class_list(name=class_name)
                if not _class_list:
                    return {
                        "count": 0,
                        "state": 0,
                        "message": "query success",
                        "data": []
                    }
                class_id = [class_info.id for class_info in _class_list]
            filters.update({"class_id": class_id})
        if phone:
            filters.update({"phone": phone})

        #关联班级名和学校名
        teacher_list = db_api.teacher_list(offset=offset,
                                           limit=limit,
                                           **filters)
        views_list = self.views(teacher_list)
        for view in views_list:
            view.update({"school_name": ""})
            if view.get("school_id", ""):
                school_info = db_api.school_get(id=view.get("school_id"))
                if school_info:
                    view.update({"school_name": school_info.name})

            view.update({"grade_name": ""})
            if view.get("grade_id", ""):
                grade_info = view.get("grade_info", None)
                # grade_info = db_api.grade_get(id=view.get("grade_id"))
                if grade_info:
                    view.update({"grade_name": grade_info.get("name")})

            view.update({"class_name": ""})
            if view.get("class_id", ""):
                class_info = view.get("class_info", None)
                # class_info = db_api.class_get(id=view.get("class_id"))
                if class_info:
                    view.update({"class_info": self.views(class_info)})
                    view.update({"class_name": class_info.get("name")})
            """
            #history
            teacher_history_lilst = db_api.teacher_history_list(teacher_id=view.get("id"))
            if teacher_history_lilst:
                view.update({"status": teacher_history_lilst[0].status})
            """
        teacher_count = db_api.teacher_count(**filters)
        return {
            "count": teacher_count,
            "state": 0,
            "message": "query success",
            "data": views_list
        }