コード例 #1
0
ファイル: score.py プロジェクト: shoogoome/hoho
    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())
コード例 #2
0
    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())
コード例 #3
0
ファイル: info.py プロジェクト: shoogoome/hoho
    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())
コード例 #4
0
    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())
コード例 #5
0
    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())
コード例 #6
0
ファイル: score.py プロジェクト: shoogoome/hoho
    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())
コード例 #7
0
ファイル: registration.py プロジェクト: shoogoome/hoho
    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())
コード例 #8
0
ファイル: info.py プロジェクト: shoogoome/hoho
    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())
コード例 #9
0
    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())