コード例 #1
0
    def change(request):
        avatar: str = request.POST.get('avatar').strip()
        nickname: str = request.POST.get('nickname').strip()
        gender: str = request.POST.get('gender')
        phone: str = request.POST.get('phone')
        email: str = request.POST.get('email')
        password: str = request.POST.get('password')
        repass: str = request.POST.get('repass')

        user: DjangoUser = request.user
        user.person.avatar = avatar
        user.person.name = nickname
        user.person.gender = gender
        if PersonModel.objects.filter(phone=phone).exclude(
                id=user.person.id).exists():
            return json_failed(4, '电话号码已被使用')
        user.person.phone = phone
        if PersonModel.objects.filter(email=email).exclude(
                id=user.person.id).exists():
            return json_failed(4, '电子邮箱已被使用')
        user.person.email = email
        if password != '' or repass != '':
            pwd_valid: (bool, int, str) = password_validate(password, repass)
            if not pwd_valid[0]:
                return json_failed(pwd_valid[1], pwd_valid[2])
            user.set_password(password)
        user.save()
        user.person.save()
        auth.login(request, user)

        return json_success({})
コード例 #2
0
    def join(request):
        user_id: str = request.POST.get('userId')
        team_id: str = request.POST.get('teamId')
        desc: str = request.POST.get('desc')

        user: DjangoUser = DjangoUser.objects.filter(id=user_id).first()
        team: TeamModel = TeamModel.objects.filter(id=team_id).first()

        if user is None or team is None:
            return json_failed(1, '用户或战队不存在')
        if user.person.team is not None:
            return json_failed(2, '已经加入了战队')
        if user.person.type != PersonModel.PERSON_TYPE_PLAYER:
            return json_failed(3, '只有选手可以加入战队')
        if TeamApplication.objects.filter(
                user=user, team=team,
                status=TeamApplication.STATUS_PENDING).exists():
            return json_failed(4, '待批准中')

        app: TeamApplication = TeamApplication.objects.create(
            user=user,
            team=team,
            desc=desc,
        )
        button_html = '<button class="layui-btn layui-btn-xs" onclick="window.location=\'%s\'">前往处理</button>' \
                      % reverse('team-app', args=(app.id,))
        generate_message(
            '战队加入申请',
            '%s申请加入您的战队“%s”:<br>%s%s' %
            (user.person.name, team.name, desc, button_html),
            None,
            team.manager,
        )

        return json_success({})
コード例 #3
0
    def add_record(request, player_id: int):
        win: bool = request.POST.get('win', '').strip() == 'on'
        kill: str = request.POST.get('kill').strip()
        assist: str = request.POST.get('assist').strip()
        death: str = request.POST.get('death').strip()
        reinforce: str = request.POST.get('reinforce').strip()
        money: str = request.POST.get('money').strip()
        tower: str = request.POST.get('tower').strip()
        type: str = request.POST.get('type')
        date: str = request.POST.get('date')

        player: PersonModel = PersonModel.objects.filter(id=player_id).first()

        PersonDataRecord.objects.create(
            data=player.persondata,
            win=win,
            kill=kill,
            assist=assist,
            death=death,
            reinforce=reinforce,
            money=money,
            tower=tower,
            type=type,
            date=date,
        )

        Player.update_record(player.persondata)

        return json_success({})
コード例 #4
0
    def read(request):
        msg_id: str = request.POST.get('id')

        msg: ReceiveMessage = ReceiveMessage.objects.filter(id=msg_id).first()
        msg.is_read = True
        msg.save()

        return json_success({})
コード例 #5
0
 def login(request):
     username: str = request.POST.get('username')
     password: str = request.POST.get('password')
     user: DjangoUser = auth.authenticate(username=username,
                                          password=password)
     if user is not None:
         auth.login(request, user)
         return json_success({})
     else:
         return json_failed(1, '')
コード例 #6
0
def coach_chose(request):
    coach_id: str = request.POST.get('id').strip()
    coach: PersonModel = PersonModel.objects.filter(
        id=coach_id, type=PersonModel.PERSON_TYPE_COACH).first()
    if coach is None:
        return json_failed(1, '教练不存在')

    return json_success({
        'coachId': coach.id,
        'coachName': coach.name,
    })
コード例 #7
0
    def disband(request):
        team_id: str = request.POST.get('id')

        team: TeamModel = TeamModel.objects.filter(id=team_id).first()

        if request.user != team.manager:
            raise PermissionDenied

        team.delete()

        return json_success({})
コード例 #8
0
    def remove_member(request):
        member_id: str = request.POST.get('memberId')

        member: PersonModel = PersonModel.objects.filter(id=member_id).first()
        team: TeamModel = member.team

        member.team = None
        member.save()

        generate_message("战队成员变动", "你已被移除出战队“%s”。" % team.name, None,
                         member.user)

        return json_success({})
コード例 #9
0
    def register(request):
        username: str = request.POST.get('username').strip()
        nickname: str = request.POST.get('nickname').strip()
        gender: str = request.POST.get('gender')
        phone: str = request.POST.get('phone')
        email: str = request.POST.get('email')
        type_: str = request.POST.get('type')
        password: str = request.POST.get('password')
        repass: str = request.POST.get('repass')

        if not str_validate(username):
            return json_failed(2, '用户名必须由英文字母、数字、符号组成')

        pwd_valid: (bool, int, str) = password_validate(password, repass)
        if not pwd_valid[0]:
            return json_failed(pwd_valid[1], pwd_valid[2])

        email_pattern: str = r'^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$'
        if not re.match(email_pattern, email):
            return json_failed(2, '邮箱格式错误')

        if DjangoUser.objects.filter(username=username).exists():
            return json_failed(1, '用户名已存在')

        if PersonModel.objects.filter(phone=phone).exists():
            return json_failed(4, '电话号码已被使用')

        if PersonModel.objects.filter(email=email).exists():
            return json_failed(4, '电子邮箱已被使用')

        else:
            user: DjangoUser = DjangoUser.objects.create_user(
                username=username,
                password=password,
            )
            user.save()
            person: PersonModel = PersonModel.objects.create(
                user=user,
                name=nickname,
                gender=gender,
                phone=phone,
                email=email,
                type=type_,
            )
            person.data = PersonData.objects.create(person=person)
            person.save()
            auth.login(request, user)
            return json_success({})
コード例 #10
0
    def exit(request):
        team_id: str = request.POST.get('teamId')

        team: TeamModel = TeamModel.objects.filter(id=team_id).first()

        if request.user.person.team != team:
            return json_failed(1, '战队错误')
        request.user.person.team = None
        request.user.person.save()

        generate_message(
            '战队成员退出',
            '%s(用户名:%s)已退出您的战队“%s”。' %
            (request.user.person.name, request.user.username, team.name),
            None,
            team.manager,
        )

        return json_success({})
コード例 #11
0
    def last(request):
        if not request.user.is_authenticated:
            return json_failed(1, '未登录')

        msgs = ReceiveMessage.objects.filter(
            user=request.user,
            is_read=False,
            status=MsgStatus.STATUS_NORMAL,
        ).select_related('send_message').order_by(
            '-datetime')[:Message.MAX_LAST_NUM]

        data = []
        for msg in msgs:
            data.append({
                'href': reverse('msg-list') + '?id=' + str(msg.id),
                'title': msg.send_message.title,
                'content': msg.send_message.content,
                'datetime': msg.send_message.datetime,
            })

        return json_success(data)
コード例 #12
0
    def application(request):
        app_id: str = request.POST.get('id')
        accept: bool = request.POST.get('accept') == 'true'

        app: TeamApplication = TeamApplication.objects.filter(
            id=app_id).first()
        if accept:
            app.status = TeamApplication.STATUS_ACCEPT
            app.user.person.team = app.team
            app.user.person.save()
            title = '战队加入申请已通过'
            button_html = '<button class="layui-btn layui-btn-xs" onclick="window.location=\'%s\'">查看战队</button>' \
                          % reverse('team-detail', args=(app.team.id,))
            content = '您申请加入战队“%s”已经通过。%s' % (app.team.name, button_html)
        else:
            app.status = TeamApplication.STATUS_REFUSE
            title = '战队加入申请被拒绝'
            content = '您申请加入战队“%s”已被拒绝。' % app.team.name
        app.save()
        generate_message(title, content, None, app.user)

        return json_success({})
コード例 #13
0
    def change(request):
        team_id: str = request.POST.get('id')
        name: str = request.POST.get('teamname').strip()
        desc: str = request.POST.get('desc').strip()
        avatar: str = request.POST.get('avatar').strip()
        coach: str = request.POST.get('coach', '')

        team: TeamModel = TeamModel.objects.filter(id=team_id).first()

        if request.user != team.manager:
            raise PermissionDenied
        if TeamModel.objects.filter(name=name).exclude(id=team_id).exists():
            return json_failed(1, '战队名已被使用')

        team.name = name
        team.desc = desc
        if avatar != '':
            team.avatar = avatar
        team.coach_id = coach if coach != '' else None
        team.save()

        return json_success({})
コード例 #14
0
    def add(request):
        name: str = request.POST.get('teamname').strip()
        desc: str = request.POST.get('desc').strip()
        avatar: str = request.POST.get('avatar').strip()

        if TeamModel.objects.filter(name=name).exists():
            return json_failed(1, '战队名已被使用')

        team: TeamModel = TeamModel.objects.create(
            name=name,
            desc=desc,
            manager=request.user,
        )

        if avatar != '':
            team.avatar = avatar

        team.save()

        return json_success({
            'redirect':
            reverse('team-detail', args=(team.id, )),
        })
コード例 #15
0
 def logout(request):
     auth.logout(request)
     return json_success({})