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 _
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
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"
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}
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 }
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 }