Exemplo n.º 1
0
    def post(self, request):
        """
        开发登陆接口
        :param request:
        :return:
        """
        params = ParamsParser(request.JSON)
        code = params.str('token', desc='验证ID')

        accounts = Account.objects.filter(temp_access_token=code)
        if not accounts.exists():
            try:
                account = Account.objects.create(
                    temp_access_token=code,
                    role=int(RoleEnum.DIRECTOR),
                    permissions=AccountPermissionEntity().dumps(),
                )
            except:
                raise AccountInfoExcept.account_filter_error()
        else:
            account = accounts[0]

        self.auth.set_account(account)

        if self.WEB:
            self.auth.set_session()
            return Result(id=account.id)

        return Result(data={
            "id": account.id,
            "token": self.auth.create_token()
        },
                      association_id=self.auth.get_association_id())
Exemplo n.º 2
0
    def post(self, request):
        """
        注册账户 or 登陆账户
        :param request:
        :return:
        """
        params = ParamsParser(request.JSON)
        code = params.str('token', desc='验证ID')
        openid, session = self.get_openid(code)
        client_auth_mode = self.request.META.get(
            'HTTP_HOHO_AUTH_MODEL') == "client"

        accounts = Account.objects.filter_cache(temp_access_token=openid)
        if len(accounts) == 0:
            nickname = params.str('nickname', desc='昵称')
            sex = params.int('sex', desc='性别')
            try:
                account = Account.objects.create(
                    realname=nickname,
                    nickname=nickname,
                    sex=sex,
                    temp_access_token=openid,
                    role=int(RoleEnum.DIRECTOR),
                    permissions=AccountPermissionEntity().dumps(),
                    motto="这个人很懒,什么jb都没有")
                _id = account.id
            except:
                fake = Faker(locale='zh_CN')
                p = fake.profile()
                nickname = p.get('name', "****")
                account = Account.objects.create(
                    realname=nickname,
                    nickname=nickname,
                    sex=sex,
                    temp_access_token=openid,
                    role=int(RoleEnum.DIRECTOR),
                    permissions=AccountPermissionEntity().dumps(),
                    motto="这个人很懒,什么jb都没有")
                _id = account.id
        else:
            account = accounts[0]
            _id = account.id
        # 更新数据
        self.auth.set_account(account)
        # 载入登陆信息
        if client_auth_mode:
            return Result(data={
                "id": _id,
                "token": self.auth.create_token()
            },
                          association_id=self.auth.get_association_id())

        self.auth.set_account(account)
        self.auth.set_session()

        return Result(id=_id)
Exemplo n.º 3
0
    def post(self, request, sid):
        """
        创建协会
        :param request:
        :param sid:
        :return:
        """
        logic = AssociationLogic(self.auth, sid)
        params = ParamsParser(request.JSON)
        account = self.auth.get_account()

        # 权限检查
        # permission_entity = AccountPermissionEntity.parse(self.auth.get_account().permissions)
        # if not permission_entity.create():
        #     raise AssociationExcept.no_permission()

        # 创建协会
        name = params.str('name', desc='名称')
        if Association.objects.values('id').filter(school__id=sid, name=name).exists():
            return Result(status=-1, association_id=self.auth.get_association_id())

        config = AssociationConfigureEntity()
        association = Association.objects.create(
            name=name,
            short_name=params.str('short_name', desc='缩写', require=False, default=''),
            description=params.str('description', desc='简介', require=False, default=''),
            choosing_code=AssociationLogic.elective_code(),
            config=config.dumps(),
            school=logic.school,
        )

        # 创建课表配置
        AssociationCurriculum.objects.create(
            title="{}课表配置".format(association.name),
            association=association,
            content=logic.get_school_curriculum_config().dumps()
        )

        # 创建协会人事关联
        AssociationAccount.objects.create(
            nickname=account.realname,
            account=account,
            association=association,
            role=int(RoleEnum.PRESIDENT),
        )

        # 非系统管理员只拥有一次性创建协会权限
        if self.auth.get_account().role != int(RoleEnum.ADMIN):
            account = self.auth.get_account()
            permissions = AccountPermissionEntity.parse(account.permissions)
            permissions.create = False
            account.permissions = permissions.dumps()
            account.save()

        return Result(status=1, association_id=self.auth.get_association_id())
Exemplo n.º 4
0
    def get(self, request, sid, aid):
        """
        获取报名表列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = AssociationLogic(self.auth, sid, aid)
        # logic.check(AssociationPermissionEnum.INTERVIEW)
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        registrations = InterviewRegistration.objects.values(
            'id', 'update_time').filter(association=logic.association)

        if params.has('version'):
            registrations = registrations.filter(
                version=params.int('version', desc='版本号'))
        if params.has('key'):
            key = params.str('key', desc='关键字 报名用户昵称 真实名称')
            registrations = registrations.filter(
                Q(account__nickname__contains=key)
                | Q(account__realname__contains=key))

        registrations, pagination = slicer(registrations,
                                           limit=limit,
                                           page=page)()()
        return Result(registrations=registrations,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 5
0
    def get(self, request, sid, aid):
        """
        获取报名表模板列表
        :param request: 
        :param sid: 
        :param aid: 
        :return: 
        """
        logic = TemplateLogic(self.auth, sid, aid)
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        templates = InterviewRegistrationTemplate.objects.values('id', 'update_time').filter(
            association=logic.association)

        if params.has('key'):
            key = params.str('key', desc='关键字 标题 创建人昵称')
            templates = templates.filter(
                Q(title__contains=key) |
                Q(author__nickname__contains=key)
            )

        templates, pagination = slicer(templates, limit=limit, page=page)()()

        return Result(templates=templates, pagination=pagination, association_id=self.auth.get_association_id())
Exemplo n.º 6
0
    def put(self, request, sid, aid, vid):
        """
        修改考勤记录
        :param request:
        :param sid:
        :param aid:
        :param vid:
        :return:
        """
        logic = AttendanceLogic(self.auth, sid, aid, vid)
        # logic.check(AssociationPermissionEnum.ATTENDANCE)
        params = ParamsParser(request.JSON)
        attendance = logic.attendance

        # 过滤标题
        if params.has('title'):
            title = params.str('title', desc='标题')
            if AssociationAttendance.objects.filter(
                    title=title, association=logic.association).exclude(
                        id=attendance.id).exists():
                raise AttendanceExcept.title_exist()
            attendance.title = title

        with params.diff(attendance):
            attendance.description = params.str('description', desc='描述')
            attendance.place_x = params.float('place_x', desc='考勤纬度')
            attendance.place_y = params.float('place_y', desc='考勤经度')
            attendance.distance = params.float('distance', desc='容错距离')
            attendance.start_time = params.float('start_time', desc='开始时间')
            attendance.end_time = params.float('end_time', desc='结束时间')

        attendance.save()
        return Result(id=vid, association_id=self.auth.get_association_id())
Exemplo n.º 7
0
    def post(self, request, sid, aid, vid):
        """
        发起请假
        :param request:
        :param sid:
        :param aid:
        :param vid:
        :return:
        """
        params = ParamsParser(request.JSON)
        alogic = AttendanceLogic(self.auth, sid, aid, vid)
        # if alogic.attendance.end_time < time.time():
        #     raise AttendanceExcept.no_in_place()
        # 获取协会待办事项
        description = params.str('description', desc='请假事由')
        backlog = AssociationBacklog.parse(alogic.association.backlog)
        # key: [人事id][考勤表id] = 请假事由
        _attendance = backlog.attendance()

        if str(vid) in _attendance:
            if str(alogic.account.id) in _attendance[str(vid)]["data"]:
                _attendance[str(vid)]["data"][str(
                    alogic.account.id)]["description"] = description
            else:
                _attendance[str(vid)]["data"][str(alogic.account.id)] = {
                    "name": alogic.account.nickname,
                    "description": description
                }
        else:
            _attendance[str(vid)] = {
                "name": alogic.attendance.title,
                "data": {
                    str(alogic.account.id): {
                        "name": alogic.account.nickname,
                        "description": description
                    }
                }
            }
        """
                {
                    attendance: {
                        "考勤id": {
                            "name": "考勤名字",
                            "data": {
                                "人id": {
                                    "name": "名字",
                                    "description": "请假事由"
                                }
                            }
                        }
                    }
                }
        """

        backlog.attendance = _attendance
        # 更新数据库
        alogic.association.backlog = backlog.dumps()
        alogic.association.save()

        return Result(id=vid, association_id=self.auth.get_association_id())
Exemplo n.º 8
0
    def post(self, request, sid, aid, vid):
        """
        获取考勤情况
        :param request:
        :param sid:
        :param aid:
        :param vid:
        :return:
        """
        logic = AttendanceLogic(self.auth, sid, aid, vid)
        params = ParamsParser(request.JSON)
        _type = params.int('type', desc='考勤类别', default=0,
                           require=False)  # type: int 0-协会 1-部门 2-个人

        data = {}
        if _type == 2:
            data = logic.get_account_sign_info()
        else:
            # logic.check(AssociationPermissionEnum.ATTENDANCE)
            if _type == 0:
                data = logic.get_association_sign_info()
            elif _type == 1:
                data = logic.get_department_sign_info(
                    params.int('department', desc='部门id'))

        return Result(data=data, association_id=self.auth.get_association_id())
Exemplo n.º 9
0
    def get(self, request, sid, aid):
        """
        获取协会部门列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        # 自动权限检查
        logic = AssociationLogic(self.auth, sid, aid)
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        department = AssociationDepartment.objects.values(
            'id', 'update_time').filter(association__id=aid)
        if params.has('key'):
            key = params.str('key', desc='关键字 名称 缩写')
            department = department.filter(
                Q(name__contains=key) | Q(short_name__contains=key))

        @slicer(department, limit=limit, page=page)
        def get_department_list(obj):
            return obj

        departments, pagination = get_department_list()

        return Result(departments=departments,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 10
0
    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())
Exemplo n.º 11
0
    def get(self, request, sid, aid):
        """
        发起招新
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = RegistrationLogic(self.auth, sid, aid)
        # logic.check(AssociationPermissionEnum.INTERVIEW)

        params = ParamsParser(request.GET)
        template_id = params.int('template_id', desc='使用模板id')
        start_time = params.float('start_time', desc='开始时间')
        end_time = params.float('end_time', desc='结束时间')
        # 更新协会配置
        config = AssociationConfigureEntity.parse(logic.association.config)
        interview_version_dict = config.interview_version_dict()

        interview_version_dict[str(config.interview_version() + 1)] = {
            "template_id": template_id,
            "start_time": start_time,
            "end_time": end_time
        }
        config.interview_version = logic.get_interview_version() + 1
        config.interview_version_dict = interview_version_dict

        logic.association.config = config.dumps()
        logic.association.save()

        return Result(association_id=self.auth.get_association_id(),
                      status="success")
Exemplo n.º 12
0
    def post(self, request, sid, aid):
        """
        批量记住通知
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = NoticeLogic(self.auth, sid, aid)

        params = ParamsParser(request.JSON)
        ids = params.list("ids", desc="通知id列表")

        static = {}
        notices = AssociationNotice.objects.get_many(ids=ids)
        for notice in notices:

            logic.notice = notice
            if logic.notice.association_id != logic.association.id:
                _static = -1
            else:
                _static = 1 if logic.remember() else 0
            static[str(notice.id)] = _static

        return Result(static=static)
Exemplo n.º 13
0
    def post(self, request, sid, aid):
        """
        批量获取协会考勤信息
        :param request:
        :param sid:
        :param aid:
        :return:  -1-尚未开始 0-已经结束 1-正在进行
        """
        redis = AttendanceRedisFactory()
        params = ParamsParser(request.JSON)
        logic = AttendanceLogic(self.auth, sid, aid)
        ids = params.list('ids', desc='考勤表id')

        data = list()
        attendances = AssociationAttendance.objects.get_many(ids=ids)
        _deparment_id = "-1" if logic.account.department is None else logic.account.department_id
        _aid = logic.account.id
        for attendance in attendances:
            logic.attendance = attendance
            try:
                info = logic.get_attendance_info()
                _status = redis.hget(
                    logic.build_key(logic.attendance.id, _deparment_id), _aid)
                if _status is None:
                    _status = -1
                info["attendance_status"] = _status
                data.append(info)
            except:
                pass

        return Result(data=data, association_id=self.auth.get_association_id())
Exemplo n.º 14
0
    def post(self, request, sid, aid):
        """
        批量获通知信息
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        params = ParamsParser(request.JSON)
        logic = NoticeLogic(self.auth, sid, aid)

        ids = params.list('ids', desc='通知id列表')
        notices = AssociationNotice.objects.get_many(ids=ids)

        data = list()
        for notice in notices:
            try:
                logic.notice = notice
                if logic.notice.association_id != logic.association.id:
                    continue
                data.append(logic.get_notice_info())
            except:
                pass

        return Result(data=data, association_id=self.auth.get_association_id())
Exemplo n.º 15
0
    def post(self, request, sid, aid):
        """
        加入协会
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = AssociationLogic(self.auth, sid)
        logic.association = logic.get_association(aid)
        account = self.auth.get_account()

        params = ParamsParser(request.JSON)
        choosing_code = params.str('choosing_code')
        if logic.association.choosing_code != choosing_code:
            _status = -1
        else:
            # 判断是否已加入该协会
            _account = AssociationAccount.objects.filter(
                association=logic.association,
                account=account,
            )
            if _account.exists():
                _status = 1
            else:
                ata = AssociationAccount.objects.create(
                    nickname=account.nickname,
                    association=logic.association,
                    account=account,
                )
                _status = 0

        return Result(status=_status,
                      association_id=self.auth.get_association_id())
Exemplo n.º 16
0
    def get(self, request, sid, aid):
        """
        获取考勤列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)
        logic = AssociationLogic(self.auth, sid, aid)

        attendances = AssociationAttendance.objects.values(
            'id', 'update_time').filter(association__id=aid).filter(
                Q(department__isnull=True)
                | Q(department=logic.account.department))
        if params.has('title'):
            attendances = attendances.filter(
                title__contains=params.str('title', desc='标题'))
        if params.has('start_time'):
            attendances = attendances.filter(
                start_time__gte=params.float('start_time', desc='开始时间'))
        if params.has('end_time'):
            attendances = attendances.filter(
                end_time__lte=params.float('end_time', desc='结束时间'))

        @slicer(attendances, limit=limit, page=page)
        def get_attendances_list(obj):
            return obj

        attendances, pagination = get_attendances_list()
        return Result(attendances=attendances,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 17
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())
Exemplo n.º 18
0
    def get(self, request, sid, aid):
        """
        获取协会用户列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        # 自动权限检查
        logic = AssociationLogic(self.auth, sid, aid)
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        accounts = AssociationAccount.objects.values(
            'id', 'update_time').filter(association__id=aid)

        if params.has('key'):
            accounts = accounts.filter(
                nickname__contains=params.str('key', desc='关键字'))
        if params.has('role'):
            accounts = accounts.filter(role=params.int('role', desc='身份'))
        if params.has('retire'):
            accounts = accounts.filter(
                retire=params.bool('retire', desc='退休与否'))
        if params.has('department'):
            accounts = accounts.filter(
                department__id=params.int('department', desc='部门id'))

        accounts, pagination = slicer(accounts, limit=limit, page=page)()()
        return Result(accounts=accounts,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 19
0
    def get(self, request):
        """
        获取学校列表
        :return:
        """
        params = ParamsParser(request.GET)

        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        schools = School.objects.values(
            'id', 'update_time').all()

        if params.has('key'):
            key = params.str('key', desc='关键字 名称 缩写')
            schools = schools.filter(
                Q(name__contains=key) |
                Q(short_name__contains=key)
            )

        @slicer(
            schools,
            limit=limit,
            page=page
        )
        def get_school_list(obj):
            return obj

        schools, pagination = get_school_list()
        return Result(schools=schools, pagination=pagination, association_id=self.auth.get_association_id())
Exemplo n.º 20
0
    def get(self, request, sid, aid):
        """
        获取评分表列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = AppraisingLogic(self.auth, sid, aid)
        # logic.check(AssociationPermissionEnum.APPRAISING)
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        template = AppraisingScoreTemplate.objects.values(
            'id', 'update_time').filter(association=logic.association)

        if params.has('title'):
            template = template.filter(
                title__contains=params.str('title', desc='标题'))

        templates, pagination = slicer(template, limit=limit, page=page)()()
        return Result(templates=templates,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 21
0
 def get(self, request, sid, aid):
     """
     查询协会无课表配置  或 重置无课表信息
     :param request: 
     :param sid: 
     :param aid: 
     :return: 
     """
     logic = CurriculumLogic(self.auth, sid, aid)
     if self.RESET:
         # logic.check(AssociationPermissionEnum.SCHEDULING)
         logic.curriculum.content = logic.get_school_curriculum_config().dumps()
         logic.curriculum.save()
         return Result(association_id=self.auth.get_association_id())
     # 权限
     return Result(data=logic.get_curriculum_info(), association_id=self.auth.get_association_id())
Exemplo n.º 22
0
 def get(self, request, sid):
     """
     获取学校信息
     :param request:
     :param sid:
     :return:
     """
     logic = SchoolLogic(self.auth, sid)
     return Result(data=logic.get_school_info(), association_id=self.auth.get_association_id())
Exemplo n.º 23
0
    def get(self, request, sid, aid):
        """
        获取协会信息 or 获取评优版本信息
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        logic = AssociationLogic(self.auth, sid)
        logic.association = logic.get_association(aid)

        # 获取评优版本信息
        if self.VERSION:
            check_login(lambda x: True)(self)
            # 敏感数据权限 部长以上即放行
            # logic.check(AssociationPermissionEnum.ASSOCIATION_VIEW_DATA)
            return Result(data=logic.get_config().version_dict, association_id=self.auth.get_association_id())
        logic.account = logic.get_association_account(throw=True)
        return Result(data=logic.get_association_info(), association_id=self.auth.get_association_id())
Exemplo n.º 24
0
    def get(self, request, aid=''):
        """
        提权(创建协会权限)or 获取用户列表
        :param request:
        :param aid:
        :return:
        """
        if not self.LIST:
            alogic = AccountLogic(self.auth, aid)

            permissions = AccountPermissionEntity.parse(
                alogic.account.permissions)
            permissions.create = True
            alogic.account.permissions = permissions.dumps()
            alogic.account.save()

            return Result(id=alogic.account.id,
                          association_id=self.auth.get_association_id())

        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)

        accounts = Account.objects.values('id', 'update_time').all()

        if params.has('key'):
            key = params.str('key', desc='关键字 email 昵称 真实姓名 联系电话')
            accounts = accounts.filter(
                Q(email__contains=key) | Q(nickname__contains=key)
                | Q(realname__contains=key) | Q(phone__contains=key))

        if params.has('role'):
            accounts = accounts.filter(role=params.int('role', desc='身份角色'))

        @slicer(accounts, limit=limit, page=page)
        def get_account_list(obj):
            return obj

        accounts, pagination = get_account_list()
        return Result(accounts=accounts,
                      pagination=pagination,
                      association_id=self.auth.get_association_id())
Exemplo n.º 25
0
    def get(self, request, sid, aid):
        """
        汇总无课表 or 获取课表信息
        :param request:
        :param sid:
        :param aid:
        :return:  redis key scheduling:协会id:
        """

        redis = SchedulingRedis()
        logic = CurriculumLogic(self.auth, sid, aid)
        # 获取课表信息
        if not self.SUMMARY:
            return Result(data=logic.get_account_curriculum_info(), association_id=self.auth.get_association_id())

        # 汇总无课表  不包括退休人员
        # logic.check(AssociationPermissionEnum.SCHEDULING)
        _id = str(logic.association.id)
        if redis.exists(_id):
            data = redis.get_json(_id)
        else:
            curriculums = AssociationAccountCurriculum.objects.filter_cache(curriculum=logic.curriculum, account__retire=False)
            account_ids = AssociationAccount.objects.values('id').filter(association=logic.association, retire=False)
            config = logic.get_association_curriculum_config()
            keys = config.time().keys()

            data = {"day{}".format(i): {k:[] for k in keys} for i in range(1, 8)}
            # 构建无课表
            for curriculum in curriculums:
                # 获取该账户信息
                content = json.loads(curriculum.content)
                nickname = curriculum.account.nickname
                # 填充账户无课表信息
                for index, _time in content.items():
                    for k, v in _time.items():
                        if not v:
                            data[index][k].append(nickname)

            data['completion'] = account_ids.count() / len(curriculums)
            redis.set(_id, data)

        return Result(data=data, association_id=self.auth.get_association_id())
Exemplo n.º 26
0
    def get(self, request, sid, aid, tid):
        """
        获取任务表
        :param request:
        :param sid:
        :param aid:
        :param tid:
        :return:
        """
        logic = TaskLogic(self.auth, sid, aid, tid)

        return Result(data=logic.get_task_info(), association_id=self.auth.get_association_id())
Exemplo n.º 27
0
    def get(self, request, sid, aid, rtid):
        """
        获取报名表模板信息
        :param request:
        :param sid:
        :param aid:
        :param rtid:
        :return:
        """
        logic = TemplateLogic(self.auth, sid, aid, rtid)

        return Result(data=logic.get_template_info(), association_id=self.auth.get_association_id())
Exemplo n.º 28
0
    def delete(self, request, sid, aid):
        """
        删除协会  仅系统管理员有权限删除协会
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        alogic = AssociationLogic(self.auth, sid, aid)
        alogic.association.delete()

        return Result(id=aid, association_id=self.auth.get_association_id())
Exemplo n.º 29
0
    def get(self, request, sid, aid=""):
        """
        重置协会码 or 获取协会列表
        :param request:
        :param sid:
        :param aid:
        :return:
        """
        # 重置协会码
        if not self.LIST:
            check_login(lambda x: True)(self)
            logic = AssociationLogic(self.auth, sid, aid)
            # logic.check(AssociationPermissionEnum.ASSOCIATION_VIEW_DATA)

            logic.association.choosing_code = AssociationLogic.elective_code()
            logic.association.save()
            return Result(id=aid)
        # 获取协会列表
        params = ParamsParser(request.GET)
        limit = params.int('limit', desc='每页最大渲染数', require=False, default=10)
        page = params.int('page', desc='当前页数', require=False, default=1)
        associations = Association.objects.values('id', 'update_time').filter(school__id=sid)

        if params.has('key'):
            key = params.str('key', desc='关键字 名称 缩写')
            try:
                key = int(key)
                associations = associations.filter(
                    Q(name__contains=key) |
                    Q(short_name__contains=key) |
                    Q(id=key)
                )
            except:
                associations = associations.filter(
                    Q(name__contains=key) |
                    Q(short_name__contains=key)
                )

        associations, pagination = slicer(associations, limit=limit, page=page)()()
        return Result(associations=associations, pagination=pagination, association_id=self.auth.get_association_id())
Exemplo n.º 30
0
    def get(self, request, sid, aid, psid):
        """
        获取评分表信息
        :param request:
        :param sid:
        :param aid:
        :param psid:
        :return:
        """
        logic = AppraisingScoreLogic(self.auth, sid, aid, psid)
        # logic.check(AssociationPermissionEnum.APPRAISING, AssociationPermissionEnum.ASSOCIATION_VIEW_DATA)

        return Result(data=logic.get_score_info(), association_id=self.auth.get_association_id())