def post(self, request, sid, aid): """ 提交评分表 :param request: :param sid: :param aid: :return: """ logic = AppraisingScoreLogic(self.auth, sid, aid) # logic.check(AssociationPermissionEnum.APPRAISING, AssociationPermissionEnum.ASSOCIATION_VIEW_DATA) params = ParamsParser(request.JSON) target_id = params.int('target_id', desc='填写对象id') content = params.dict('content', desc='评分正文') # type: dict {"number": "answer"} # 检查目标用户是否符合标准 if not AssociationAccount.objects.filter(association=logic.association, id=target_id).exists(): raise AssociationExcept.not_account() # 过滤非发起评优时段提交 或 已填写过 if AppraisingScore.objects.filter(target_id=target_id, association=logic.association).exists(): raise AppraisingInfoExcept.no_time_post() score = AppraisingScore.objects.create( author=logic.account, association=logic.association, target_id=target_id, content=json.dumps(content), version=logic.get_version(), score=logic.content_to_score(content), template_id=logic.get_template_id(), ) return Result(id=score.id, association_id=self.auth.get_association_id())
def put(self, request, aid=''): """ 修改用户自身信息 or 管理员修改用户信息 :param request: :param aid: :return: """ params = ParamsParser(request.JSON) is_admin = False if self.auth.get_account().role == int(RoleEnum.ADMIN): alogic = AccountLogic(self.auth, aid) account = alogic.account is_admin = True else: account = self.auth.get_account() with params.diff(account): account.nickname = params.str('nickname', desc='昵称') account.realname = params.str('realname', desc='真实名称') account.sex = params.int('sex', desc='性别') account.email = params.str('email', desc='邮箱') account.phone = params.str('phone', desc='电话号码') account.motto = params.str('motto', desc='一句话留言') if is_admin and params.has('permission'): account.permissions = json.dumps( params.dict('permissions', desc='权限')) account.save() return Result(id=account.id, association_id=self.auth.get_association_id())
def put(self, request, sid, aid, did): """ 修改部门信息 :param request: :param sid: :param aid: :param did: :return: """ params = ParamsParser(request.JSON) logic = DepartmentLogic(self.auth, sid, aid, did) # logic.check(AssociationPermissionEnum.DEPARTMENT) department = logic.department name = params.str('name', desc='部门名称') short_name = params.str('short_name', desc='缩写') # 过滤参数 departments = AssociationDepartment.objects.filter( association=logic.association).exclude(id=did) if params.has('name'): if departments.filter(name=name).exists(): raise DepartmentExcept.name_exist() department.name = name if params.has('short_name'): if departments.filter(short_name=short_name).exists(): raise DepartmentExcept.short_name_exist() department.short_name = short_name if params.has('config'): config = params.dict('config', desc='配置信息') department.config = json.dumps(config) with params.diff(department): department.description = params.str('description', desc='简介') department.save() return Result(id=did, association_id=self.auth.get_association_id())
def put(self, request, sid, aid): """ 修改无课表配置 :param request: :param sid: :param aid: :return: """ logic = CurriculumLogic(self.auth, sid, aid) # logic.check(AssociationPermissionEnum.SCHEDULING) params = ParamsParser(request.JSON) curriculum = logic.curriculum if params.has('title'): curriculum.title = params.str('title', desc='标题') if params.has('content'): content = params.dict('content', desc='内容') data = logic.curriculum_format(content) curriculum.content = json.dumps(data) curriculum.save() return Result(association_id=self.auth.get_association_id())
def post(self, request, sid, aid, vid): """ 处理考勤请假 :param request: :param sid: :param aid: :param vid: :return: 0-无此人物待办事项 1-成功 """ alogic = AttendanceLogic(self.auth, sid, aid, vid) # alogic.check(AssociationPermissionEnum.ATTENDANCE) # 获取待办事项 backlog = AssociationBacklog.parse(alogic.association.backlog) # backlog = backlog.dump() params = ParamsParser(request.JSON) data = params.dict('data', desc='处理情况') result = {} attendance = backlog.attendance() if str(vid) not in backlog.attendance(): return Result(status=result) for aid, vl in data.items(): if str(aid) in attendance[str(vid)]["data"] and vl: if vl: alogic.sign_or_leave(leave=(True, str(aid))) del attendance[str(vid)]["data"][str(aid)] # redis缓存更新 alogic.sign_or_leave(leave=(True, aid)) result[aid] = 1 # 更新数据库 backlog.attendance = attendance alogic.association.backlog = backlog.dumps() alogic.association.save() return Result(status=result, association_id=self.auth.get_association_id())
def put(self, request, sid, aid, psid): """ 修改评分表 :param request: :param sid: :param aid: :param psid: :return: """ params = ParamsParser(request.JSON) logic = AppraisingScoreLogic(self.auth, sid, aid, psid) # if logic.score.author_id != logic.account.id: # raise AssociationExcept.no_permission() score = logic.score if params.has('content'): content = params.dict('content', desc='评分正文') score.content = json.dumps(content) score.score = logic.content_to_score(content) score.save() return Result(id=psid, association_id=self.auth.get_association_id())
def post(self, request, sid, aid): """ 填写报名表 :param request: :param sid: :param aid: :return: """ logic = RegistrationLogic(self.auth, sid, aid) if logic.account is not None: raise InterviewInfoExcept.in_association() params = ParamsParser(request.JSON) content = params.dict('content', desc='正文信息') registra = InterviewRegistration.objects.create( association=logic.association, version=logic.get_interview_version(), account=self.auth.get_account(), content=json.dumps(logic.content_format(content)), ) return Result(id=registra.id, association_id=self.auth.get_association_id())
def put(self, request, sid): """ 修改学校信息 :param request: :param sid: :return: """ params = ParamsParser(request.JSON) logic = SchoolLogic(self.auth, sid) school = logic.school if params.has('config'): config = params.dict('config', desc='配置') school.config = json.dumps({ "curriculum": logic.curriculum_format(config) }) with params.diff(school): school.name = params.str('name', desc='学校名称') school.short_name = params.str('short_name', desc='缩写') school.description = params.str('description', desc='简介') school.save() return Result(id=school.id, association_id=self.auth.get_association_id())
def put(self, request, sid, aid, acid=""): """ 修改用户信息 :param request: :param sid: :param aid: :param acid: :return: """ params = ParamsParser(request.JSON) alogic = AssociationAccountLogic(self.auth, sid, aid, acid) if acid != "": # alogic.check(AssociationPermissionEnum.ASSOCIATION) account = alogic.other_account # 角色修改 if params.has('role'): # 缺少权限判断 输入过滤 role = params.int('role', desc='用户角色') # 若是部长 则需添加部门id信息 if role == int(RoleEnum.MINISTER): department_id = params.int('department_id', desc='部门id') department = AssociationDepartment.objects.get_once( pk=department_id) # 过滤部门不存在或非该协会部门 if department is None or department.association_id != account.association_id: raise AssociationExcept.department_not_exist() # 更新数据库信息 account.department_id = department_id department.manager.add(account) department.save() # 若此前是部长但现在不是则清除部门部长信息 elif account.role == int(RoleEnum.MINISTER): # 查询quertset对象 因为反正都会被修改所以没必要使用filter_cache 性能反而不如filter department = AssociationDepartment.objects.filter( association_id=aid, manager__id=account.id) # 去除管理员关联(部长) if department.exists(): department = department[0] department.manager.remove(account) department.save() account.department = None account.role = role # 权限修改 if params.has('permissions'): permissions = AssociationPermissionsEntity.parse( account.permissions) permissions.update(params.dict('permissions', desc='权限')) account.permissions = permissions.dumps() # 部门修改 if params.has('department'): # 过滤为本协会部门 department = AssociationDepartment.objects.get_once( pk=params.int('department', desc='部门id')) if department is not None and department.association_id == alogic.association.id: account.department = department # 退休换届 if params.has('retire'): account.retire = params.bool('retire', desc='退休换届与否') else: account = alogic.account with params.diff(account): account.nickname = params.str('nickname', desc='协会内昵称') account.save() return Result(id=acid, association_id=self.auth.get_association_id())