def api_export_team(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) user, role = get_user(subjudge.activity, request.user) if not user: raise BusinessException(ERR_USER_AUTH) # 仅子级评审的维护者可使用 if not subjudge_services.is_subjudge_manager(subjudge, request.user): raise BusinessException(ERR_USER_AUTH) subjudge_team_id_list = [ int(each) for each in para.subjudge_team_list.strip().strip(',').split(',') if each ] # team_list = list(Team.objects.filter(id__in=team_id_list)) wb = subjudge_services.export_team(request.user, subjudge, user, role, subjudge_team_id_list) fname = u'%s.xlsx' % suuid() response = HttpResponse(content_type='application/vnd.ms-excel') response[ 'Content-Disposition'] = 'attachment; filename=' + fname.encode( 'utf-8') wb.save(response) return response # path = os.path.join(settings.BASE_DIR, 'media/%s.xlsx' % suuid()) # wb.save(path) # return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': path}) except Exception as ex: logger.exception(ex) return response_exception(ex)
def api_persondisk_movfile(user, src_file_id_list, desc_file_id, file_id_move_all): if src_file_id_list: src_file_id_list = json.loads(src_file_id_list) elif file_id_move_all: src_file_id_list = NetdiskPersonalFile.objects.filter( is_del=FALSE_INT, parent_id=file_id_move_all).values_list('id', flat=True) else: src_file_id_list = NetdiskPersonalFile.objects.filter( is_del=FALSE_INT, parent_id=None).values_list('id', flat=True) # 检查来源文件是否是我的文件 if not is_myfile(user.id, src_file_id_list): raise BusinessException(NETDISK_ERR_NOPERMISSION) # 检查目标文件是否是我的文件 if desc_file_id and not is_myfile(user.id, [desc_file_id]): raise BusinessException(NETDISK_ERR_NOPERMISSION) # 没传目标文件夹就放到根目录去。 if not desc_file_id: desc_file_id = None NetdiskPersonalFile.objects.filter( id__in=list(src_file_id_list), is_del=FALSE_INT).update(parent_id=desc_file_id) return 'ok'
def api_export_activity_expert(request, para): try: activity = Activity.objects.filter(id=int(para.activity_id)).first() if not activity: raise BusinessException(ERR_ACTIVITY_NOT_EXIST) user, role = get_user(activity, request.user) if not user: raise BusinessException(ERR_USER_AUTH) expert_id_list = [ int(r) for r in para.expert_id_list.strip().strip(',').split(',') ] expert_list = Expert.objects.filter(del_flag=FALSE_INT, id__in=expert_id_list) wb = activity_s.export_activity_expert(request.user, activity, user, role, expert_list) fname = u'%s.xlsx' % suuid() response = HttpResponse(content_type='application/vnd.ms-excel') response[ 'Content-Disposition'] = 'attachment; filename=' + fname.encode( 'utf-8') wb.save(response) return response # path = os.path.join(settings.BASE_DIR, 'media/%s.xlsx' % suuid()) # wb.save(path) # return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': path}) except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message)
def list_team_by_super(account, activity, keyword, judger, page, rows, id_list=None): rule = Rule.objects.filter(activity=activity).first() if not rule: raise BusinessException(ERR_RULE_NOT_EXIST) if not is_activity_owner(activity, account): raise BusinessException(ERR_USER_AUTH) raw = list_team(activity, keyword=keyword, judger=judger, id_list=id_list) paged_data, result = paging_by_page(raw, rows, page) rule = Rule.objects.filter(activity=activity).first() if not rule: raise BusinessException(ERR_RULE_NOT_EXIST) max = str(rule.parse_rule().expert_count()) for each in paged_data: d = detail_team(each, max) result['items'].append(d) result['id_all'] = ','.join([str(each.id) for each in raw]) result['judger_max'] = str(max) return result
def wx_page_scan_reg_sure(request, confirm_code): # 用户扫码注册 # 检查确认码是否注册生成的 weixinscanconfirm = WeixinScanConfirm.objects.filter( code=confirm_code, del_flag=FALSE_INT, busitype=WEIXIN_SCAN_TYPE_REG).first() if not weixinscanconfirm: raise BusinessException(ERR_QRCODE_TIMEOUT) # 检查微信是否已经注册过 old_weixinaccount = WeixinAccount.objects.filter( openid=weixinscanconfirm.openid, del_flag=FALSE_INT) if old_weixinaccount: # 更新确认状态 weixinscanconfirm.status = WEIXIN_CONFIRM_STATUS_ERROR weixinscanconfirm.desc = ERR_WEIXIN_IS_BIND[1] weixinscanconfirm.save() raise BusinessException(ERR_WEIXIN_IS_BIND) # 手机直接跳转成功页面 cur_domain = get_cur_domain(request) # mobile_sure_url = 'http://%s/wx/mobile/scan/sure' % cur_domain mobile_sure_url = 'http://%s/weixin/wxResult?isSuccess=true&type=%s' % ( cur_domain, weixinscanconfirm.busitype) return HttpResponseRedirect(mobile_sure_url)
def api_subjudge_export_work_for_leader(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) subj_expert = SubJudgeExpert.objects.filter( subjudge=subjudge, expert__del_flag=FALSE_INT, expert__account=request.user).first() if not subj_expert: raise BusinessException(ERR_USER_AUTH) # TODO 验证必须是组长 # work_id_list = [ int(each) for each in para.work_id_list.strip().strip(',').split(',') if each ] work_list = list(Work.objects.filter(id__in=work_id_list)) # TODO check auth for these work # resp = WorkExcelExport(subjudge.activity, work_list, (EXCEL.BASIC, EXCEL.AUTHOR, EXCEL.TUTOR, EXCEL.SUBJG_MY_SCORE, EXCEL.SUBJG_SCORE), expert=subj_expert.expert, subjudge=subjudge)\ .write().dump_stream() return resp except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message)
def api_persondisk_delfile(user, file_id_list, file_id_del_all): if file_id_list: file_id_list = json.loads(file_id_list) elif file_id_del_all: file_id_list = NetdiskPersonalFile.objects.filter( is_del=FALSE_INT, parent_id=file_id_del_all).values_list('id', flat=True) else: file_id_list = NetdiskPersonalFile.objects.filter( is_del=FALSE_INT, parent_id=None).values_list('id', flat=True) if len(file_id_list) == 0: raise BusinessException(NETDISK_ERR_NO_DEL_FILE) # 检查是否是我的文件 if not is_myfile(user.id, file_id_list): raise BusinessException(NETDISK_ERR_NOPERMISSION) del_fileid_list = list() for each_file_id in file_id_list: del_fileid_list.append(each_file_id) del_fileid_list.extend( get_childid_flat(user, file_id=each_file_id, qry_child=1, file_type=None, file_name_like=None, file_name_exact=None)) NetdiskPersonalFile.objects.filter(id__in=list(del_fileid_list)).update( is_del=TRUE_INT) refresh_user_space(user) return 'ok'
def api_subjudge_work_in_team(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) area = Area.objects.filter( id=int(para.area_id)).first() if para.area_id else None direct_area = Area.objects.filter(id=int( para.direct_area_id)).first() if para.direct_area_id else None subjudge_team = SubJudgeTeam.objects.filter( id=int(para.subjudge_team)).first() if not subjudge_team: raise BusinessException(ERR_TEAM_EMPTY) result = subjudge_services.work_in_team( request.user, subjudge, subjudge_team, para.sub_activity, para.phase, para.project, area, direct_area, para.subject, para.keyword, para.page, para.rows, ) except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message) return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': result})
def api_subjudge_list_work_for_expert(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) subjg_team = SubJudgeTeam.objects.filter( id=int(para.subjudge_team)).first() if para.subjudge_team else None subjg_expert = SubJudgeExpert.objects.filter( subjudge=subjudge, expert__account=request.user).first() if not subjg_expert: raise BusinessException(ERR_USER_AUTH) result = subjudge_services.list_work_for_expert( request.user, subjudge, subjg_expert, para.sub_activity, para.phase, para.project, para.subject, para.keyword, subjg_team, para.is_unfinish, para.page, para.rows, ) except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message) return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': result})
def check_get_parent(parent_id): if not parent_id: raise BusinessException(PARENT_NOT_EXIST) parent = Parent.objects.filter(id=int(parent_id), del_flag=FALSE_INT).first() if not parent: raise BusinessException(PARENT_NOT_EXIST) return parent
def check_get_student(student_id): if not student_id: raise BusinessException(STUDENT_NOT_EXIST) student = Student.objects.filter(id=int(student_id), del_flag=FALSE_INT).first() if not student: raise BusinessException(STUDENT_NOT_EXIST) return student
def check_get_teacher(teacher_id): if not teacher_id: raise BusinessException(TEACHER_NOT_EXIST) teacher = Teacher.objects.filter(id=int(teacher_id), del_flag=FALSE_INT).first() if not teacher: raise BusinessException(TEACHER_NOT_EXIST) return teacher
def api_new_expert(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) user, role = get_user(subjudge.activity, request.user) if not user: raise BusinessException(ERR_USER_AUTH) # 仅子级评审的维护者可使用 if not subjudge_services.is_subjudge_manager(subjudge, request.user): raise BusinessException(ERR_USER_AUTH) area = Area.objects.filter(del_flag=FLAG_NO, id=int( para.area_id)).first() if para.area_id else None direct_area = Area.objects.filter( del_flag=FLAG_NO, id=int( para.direct_area_id)).first() if para.direct_area_id else None result = subjudge_services.new_expert(request.user, subjudge, user, para.mobile, para.name, para.sex, area, direct_area, para.institution, para.position) except Exception as ex: logger.exception(ex) return response_exception(ex) return response200(dict(c=SUCCESS[0], m=SUCCESS[1], d=result))
def check_get_class(class_id): if not class_id: raise BusinessException(CLASS_NOT_EXIST) clazz = Class.objects.filter(id=int(class_id), del_flag=FALSE_INT).first() if not clazz: raise BusinessException(CLASS_NOT_EXIST) return clazz
def check_get_school(school_id): if not school_id: raise BusinessException(SCHOOl_NOT_EXIST) school = School.objects.filter(id=int(school_id), del_flag=FALSE_INT).first() if not school: raise BusinessException(SCHOOl_NOT_EXIST) return school
def check_get_account(account_id): if not account_id: raise BusinessException(USER_NOT_EXIST) account = Account.objects.filter(id=int(account_id), del_flag=FALSE_INT).first() if not account: raise BusinessException(USER_NOT_EXIST) return account
def api_download_activity_role_template(request, para): try: activity = Activity.objects.filter(id=int(para.activity_id)).first() if not activity: raise BusinessException(ERR_ACTIVITY_NOT_EXIST) user, role = get_user(activity, request.user) if not user: raise BusinessException(ERR_USER_AUTH) wb = activity_s.download_activity_role_template( request.user, activity, user, role) fname = u'%s.xlsx' % suuid() response = HttpResponse(content_type='application/vnd.ms-excel') response[ 'Content-Disposition'] = 'attachment; filename=' + fname.encode( 'utf-8') wb.save(response) return response # path = os.path.join(settings.BASE_DIR, 'media/%s.xlsx' % suuid()) # wb.save(path) # return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': path}) except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message)
def api_persondisk_modname(user, file_name, file_id): # 文件名不能为空,目前只能修改目录。 if not file_name: raise BusinessException(NETDISK_ERR_FILENAME) if not file_id: raise BusinessException(REQUEST_PARAM_ERROR) if not is_myfile(user.id, [file_id]): raise BusinessException(NETDISK_ERR_NOPERMISSION) # 检查文件是否存在,检查是否有新的同名文件夹 cur_file = NetdiskPersonalFile.objects.filter(id=file_id, account_id=user.id, is_del=FALSE_INT).first() if not cur_file: raise BusinessException(NETDISK_ERR_NULL_DIR) file_same_names = NetdiskPersonalFile.objects.filter( account_id=user.id, is_del=FALSE_INT, name=file_name, is_dir=TRUE_INT, parent_id=cur_file.parent_id).exclude(id=file_id) if file_same_names: raise BusinessException(NETDISK_ERR_HAS_SAMEFILE) cur_file.name = file_name cur_file.save() result = { "file_id": cur_file.id, "file_name": cur_file.name, } return result
def api_schooldisk_movfile(user, src_file_id_list, desc_file_id, file_id_move_all): if src_file_id_list: src_file_id_list = json.loads(src_file_id_list) elif file_id_move_all: src_file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=file_id_move_all).values_list('id', flat=True) else: src_file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=None).values_list('id', flat=True) src_file_id_list = list(src_file_id_list) # 检查文件是否在同一目录,暂不支持不同目录的文件同时移动(实际原因是不大可能出现此情况,所以懒得写这个代码去支持了^_^!!)。 src_parent_file = NetdiskSchoolFile.objects.filter( school=user.school, id__in=list(src_file_id_list), is_del=FALSE_INT).values('parent_id').distinct() if src_parent_file.count() > 1: raise BusinessException(NETDISK_ERR_FILE_NOTIN_SAMEDIR) # 检查我是否是管理员,只有管理员和自己可以把文件移走即删除 cur_user_src_dir_role = api_schooldisk_getuserdirrole( user, src_parent_file.first()['parent_id']) if len(set(ROLE_ADMIN) & set(cur_user_src_dir_role)) == 0: # 检查是否是我的文件 if not is_myfile(user.id, src_file_id_list): raise BusinessException(NETDISK_ERR_NOPERMISSION) # raise BusinessException(NETDISK_ERR_NO_ROLE_MKDIR) # 检查目标文件夹我是否具有上传权限 cur_user_desc_dir_role = api_schooldisk_getuserdirrole(user, desc_file_id) if len(set(ROLE_UPLOAD) & set(cur_user_desc_dir_role)) == 0: # 检查是否有上传文件权限(注意此处仍保留了文件原来的上传人信息) raise BusinessException(NETDISK_ERR_NOPERMISSION) # raise BusinessException(NETDISK_ERR_NO_ROLE_MKDIR) # 如果是根目录,还需要检查要移动的是否全部是文件夹,因为根目录不能存放文件。 if not desc_file_id: src_is_not_dir = NetdiskSchoolFile.objects.filter( school=user.school, id__in=src_file_id_list, is_del=FALSE_INT, is_dir=FALSE_INT) if src_is_not_dir: raise BusinessException(NETDISK_ERR_ROOT_NOFILE) # 没传目标文件夹就放到根目录去。 if not desc_file_id: desc_file_id = None NetdiskSchoolFile.objects.filter( school=user.school, id__in=list(src_file_id_list), is_del=FALSE_INT).update(parent_id=desc_file_id) return 'ok'
def api_schooldisk_moddir(user, file_name, file_id, admin_teacherid_list, upload_teacherid_list, list_teacherid_list, download_teacherid_list): admin_teacherid_list = json.loads( admin_teacherid_list) if admin_teacherid_list else [] upload_teacherid_list = json.loads( upload_teacherid_list) if upload_teacherid_list else [] list_teacherid_list = json.loads( list_teacherid_list) if list_teacherid_list else [] download_teacherid_list = json.loads( download_teacherid_list) if download_teacherid_list else [] # 文件名不能为空 if not file_name: raise BusinessException(NETDISK_ERR_FILENAME) if not file_id: raise BusinessException(REQUEST_PARAM_ERROR) # if not is_myfile(user.id, [file_id]): # raise BusinessException(NETDISK_ERR_NOPERMISSION) # 检查文件是否存在,检查是否有新的同名文件夹 cur_file = NetdiskSchoolFile.objects.filter(id=file_id, school=user.school, is_del=FALSE_INT).first() if not cur_file: raise BusinessException(NETDISK_ERR_NULL_DIR) file_same_names = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, name=file_name, is_dir=TRUE_INT, parent_id=cur_file.parent_id).exclude(id=file_id) if file_same_names: raise BusinessException(NETDISK_ERR_HAS_SAMEFILE) # 检查是否有上级目录修改权限,即上级目录的管理员权限。 cur_user_dir_role = api_schooldisk_getuserdirrole(user, cur_file.parent_id) if len(set(ROLE_ADMIN) & set(cur_user_dir_role)) == 0: raise BusinessException(NETDISK_ERR_NOPERMISSION) cur_file.name = file_name cur_file.save() result = { "file_id": cur_file.id, "file_name": cur_file.name, } # 增加相应的权限信息 dir_mod_teacher_role(cur_file.id, admin_teacherid_list, ROLE_TYPE_ADMIN) dir_mod_teacher_role(cur_file.id, upload_teacherid_list, ROLE_TYPE_UPLOAD) dir_mod_teacher_role(cur_file.id, list_teacherid_list, ROLE_TYPE_LIST) dir_mod_teacher_role(cur_file.id, download_teacherid_list, ROLE_TYPE_DOWNLOAD) return result
def api_schooldisk_delfile(user, file_id_list, file_id_del_all): if file_id_list: file_id_list = json.loads(file_id_list) elif file_id_del_all: file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=file_id_del_all).values_list('id', flat=True) else: file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=None).values_list('id', flat=True) file_id_list = list(file_id_list) if len(file_id_list) == 0: raise BusinessException(NETDISK_ERR_NO_DEL_FILE) # 检查文件是否在同一目录,暂不支持不同目录的文件同时删除(实际原因是不大可能出现此情况,所以懒得写这个代码去支持了^_^!!)。 parent_file = NetdiskSchoolFile.objects.filter( school=user.school, id__in=list(file_id_list), is_del=FALSE_INT).values('parent_id').distinct() if parent_file.count() > 1: raise BusinessException(NETDISK_ERR_FILE_NOTIN_SAMEDIR) if parent_file.count() == 0: raise BusinessException(NETDISK_ERR_NO_FILEOBJ) # 检查我是否是管理员,只有管理员和自己可以删除文件 cur_user_dir_role = api_schooldisk_getuserdirrole( user, parent_file.first()['parent_id']) if len(set(ROLE_ADMIN) & set(cur_user_dir_role)) == 0: # 检查是否是我的文件 if not is_myfile(user.id, file_id_list): raise BusinessException(NETDISK_ERR_NOPERMISSION) # raise BusinessException(NETDISK_ERR_NO_ROLE_MKDIR) del_fileid_list = list() for each_file_id in file_id_list: del_fileid_list.append(each_file_id) del_fileid_list.extend( get_childid_flat(user, file_id=each_file_id, qry_child=1, file_type=None, file_name_like=None, file_name_exact=None)) # 删除文件/文件夹,同时删除文件夹权限 NetdiskSchoolFile.objects.filter( school=user.school, id__in=list(del_fileid_list)).update(is_del=TRUE_INT) NetdiskSchoolRole.objects.filter( netdiskschoolfile__in=list(del_fileid_list)).update(is_del=TRUE_INT) refresh_school_space(user.school) return 'ok'
def check_get_grade(grade_id, user=None): if not grade_id: raise BusinessException(GRADE_NOT_EXIST) qs = Grade.objects.filter(id=int(grade_id), del_flag=FALSE_INT) if user: qs = qs.filter(school=user.school) grade = qs.first() if not grade: raise BusinessException(GRADE_NOT_EXIST) return grade
def check_get_teacher_by_request(request): user_type = request.user.type # int school_id = request.user.school.id # int account_id = request.user.id # int if user_type != USER_TYPE_TEACHER: raise BusinessException(TEACHER_NOT_EXIST) teacher = get_user(account_id, user_type, school_id) if not teacher: raise BusinessException(TEACHER_NOT_EXIST) return teacher
def check_get_title(title_id, user=None): if not title_id: raise BusinessException(TITLE_NOT_EXIST) qs = Title.objects.filter(id=int(title_id), del_flag=FALSE_INT) if user: qs = qs.filter(school=user.school) title = qs.first() if not title: raise BusinessException(TITLE_NOT_EXIST) return title
def check_get_clazz(clazz_id, user=None): if not clazz_id: raise BusinessException(CLASS_NOT_EXIST) qs = Class.objects.filter(id=int(clazz_id), del_flag=FALSE_INT) if user: qs = qs.filter(school=user.school) clazz = qs.first() if not clazz: raise BusinessException(CLASS_NOT_EXIST) return clazz
def api_schooldisk_getdownloadurl(user, file_id_list, file_id_get_all): result = dict() if file_id_list: file_id_list = json.loads(file_id_list) elif file_id_get_all: file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=file_id_get_all).values_list('id', flat=True) else: file_id_list = NetdiskSchoolFile.objects.filter( school=user.school, is_del=FALSE_INT, parent_id=None).values_list('id', flat=True) if len(file_id_list) == 0: raise BusinessException(NETDISK_ERR_NO_DEL_FILE) # 检查文件是否在同一目录,暂不支持不同目录的文件同时下载(实际原因是不大可能出现此情况,所以懒得写这个代码去支持了^_^!!)。 src_parent_file = NetdiskSchoolFile.objects.filter( school=user.school, id__in=list(file_id_list), is_del=FALSE_INT).values('parent_id').distinct() if src_parent_file.count() > 1: raise BusinessException(NETDISK_ERR_FILE_NOTIN_SAMEDIR) # 检查我是否有下载权限,只有有下载权限,或者自己的文件可以下载 cur_user_src_dir_role = api_schooldisk_getuserdirrole( user, src_parent_file.first()['parent_id']) if len(set(ROLE_DOWNLOAD) & set(cur_user_src_dir_role)) == 0: # 检查是否是我的文件 if not is_myfile(user.id, file_id_list): raise BusinessException(NETDISK_ERR_NOPERMISSION) files = NetdiskSchoolFile.objects.filter(school=user.school, is_del=FALSE_INT, id__in=list(file_id_list), is_dir=FALSE_INT) file_list = list() for each_file in files: file_dict = dict() file_dict['id'] = each_file.id url = each_file.fileobj.url if each_file.fileobj else '' # 避免数据问题导致程序异常 if not url: continue download_url = "/%s/%s?tk=%s" % ( settings.FILE_STORAGE_DIR_NAME, url, get_filedownload_token(url)) if url else url file_dict['download_url'] = download_url file_list.append(file_dict) result['file_list'] = file_list return result
def edit_team(account, activity, team, new_name): if not is_activity_owner(activity, account): raise BusinessException(ERR_USER_AUTH) if team: # MODIFY if Team.objects.filter(activity=activity, name=new_name).exclude(id=team.id).exists(): raise BusinessException(ERR_TEAM_NAME_CONFLICT) team.name = new_name team.save() else: # CREATE Team.objects.create(activity=activity, name=new_name) return TRUE_INT
def _perm_can_judge_work(work, expert): if not expert: raise BusinessException(ERR_USER_AUTH) if work.activity.stage != ACTIVITY_STAGE_REVIEW: raise BusinessException(ERR_INVALID_PHASE) work_team = work.team if not work_team: raise BusinessException(ERR_TEAM_WORK_NOT_EXIST) if not TeamExpert.objects.filter(team=work.team, expert=expert, expert__del_flag=FALSE_INT).exists(): raise BusinessException(ERR_USER_AUTH)
def api_import_activity_expert(request, para): try: activity = Activity.objects.filter(id=int(para.activity_id)).first() if not activity: raise BusinessException(ERR_ACTIVITY_NOT_EXIST) user, role = get_user(activity, request.user) if not user: raise BusinessException(ERR_USER_AUTH) result = activity_s.import_activity_expert(request.user, user, role, activity, para.file) except Exception as ex: logger.exception(ex) return response_exception(ex, ex.message) return response200(dict(c=SUCCESS[0], m=SUCCESS[1], d=result))
def api_list_team(request, para): try: subjudge = SubJudge.objects.filter(id=int(para.subjudge_id)).first() if not subjudge: raise BusinessException(ERR_SUBJUDGE_NOT_EXIST) # 仅子级评审的维护者可使用 if not subjudge_services.is_subjudge_manager(subjudge, request.user): raise BusinessException(ERR_USER_AUTH) result = subjudge_services.list_team(subjudge, para.keyword, para.judger, para.rows, para.page) except Exception as e: logger.exception(e) return response_exception(e) return response200({'c': SUCCESS[0], 'm': SUCCESS[1], 'd': result})