Beispiel #1
0
 def reset_password(self, request, pk):
     data = request.data
     password = data.get('password', None)
     confirm_password = data.get('confirm_password', None)
     if password != confirm_password:
         return Response(
             Metadata(status='fail',
                      message='password not equal with confirm password').
             serialized_data())
     email = self.queryset.get(code=pk)
     if email is None:
         return Response(
             Metadata(status='NotFound',
                      message='code is not correct').serialized_data())
     account = Account.objects.get(email=email.email)
     if account is None:
         return Response(
             Metadata(
                 status='NotFound',
                 message='email has not been registered').serialized_data())
     account.set_password(password)
     account.save()
     email.delete()
     token = JWTExtension.generate_token(account)
     return Response(
         Metadata(data={
             'token': token,
             'is_admin': account.is_admin
         }).serialized_data())
Beispiel #2
0
    def post(self, request, format=None):
        data = request.data

        username = data.get('username', None)
        password = data.get('password', None)

        account = authenticate(username=username, password=password)
        if account is not None:
            if account.email_verified:
                login(request, account)

                token = JWTExtension.generate_token(account)

                return Response(
                    MetadataSerializer(
                        Metadata(
                            data={
                                'token': token,
                                'is_admin': account.is_admin,
                                'username': username,
                            })).data)
            else:

                return Response(
                    Metadata(status='forbidden',
                             message='Please active your account by email').
                    serialized_data())
        else:

            return Response(
                Metadata(status='unauthorized',
                         message='Username/password combination invalid.').
                serialized_data())
Beispiel #3
0
    def create(self, request):
        serializer = self.serializer_class(data=request.data)

        if serializer.is_valid():
            account = Account.objects.create_user(**serializer.validated_data)
            email_util.send(account.email)

            return Response(
                Metadata(data=serializer.validated_data).serialized_data(),
                status=status.HTTP_201_CREATED)
        return Response({
            Metadata(status='BadRequest',
                     message='Account could not be created with received data.'
                     ).serialized_data()
        })
Beispiel #4
0
    def update(self, request, pk):
        data = request.data
        try:
            player = self.queryset.get(id=pk)

            player.gold = data['gold']

            player.level = data['level']
            player.save()
            result = self.serializer_class(player).data
        except Player.DoesNotExist:
            return Response(
                Metadata(status="NotFound",
                         message="No such player").serialized_data())
        return Response(Metadata(data=result).serialized_data())
Beispiel #5
0
 def use(self, request, pk):
     try:
         record = EquipRecord.objects.get(player__account=request.user,
                                          equipment=pk)
         if record.number is 0:
             return Response(
                 Metadata(status="forbidden",
                          message="Your don't have this equipment"))
         record.number -= 1
         record.save()
     except EquipRecord.DoesNotExist:
         return Response(
             Metadata(status="forbidden",
                      message="Your don't have this equipment"))
     data = EquipRecordSerializer(record).data
     return Response(Metadata(data=data).serialized_data())
Beispiel #6
0
    def purchase(self, request, pk):
        equip = self.queryset.get(id=pk)
        player = Player.objects.get(account=request.user)

        if player.gold < equip.price:
            return Response(
                Metadata(status="forbidden",
                         message="No enough gold").serialized_data())
        try:
            record = EquipRecord.objects.get(player=player, equipment=equip)
            record.number += 1
            record.save()
        except EquipRecord.DoesNotExist:
            record = EquipRecord(equipment=equip, player=player, number=1)
            record.save()
        data = EquipRecordSerializer(record).data
        return Response(Metadata(data=data).serialized_data())
Beispiel #7
0
 def create(self, request, format=None):
     data = request.data
     username = data.get('username', None)
     email = data.get('email', None)
     send_type = data.get('send_type', None)
     if send_type not in email_util.send_types_handler:
         return Response({'message': 'no such send type'},
                         status=status.HTTP_400_BAD_REQUEST)
     account = Account.objects.get(username=username)
     if account is None:
         return Response(
             Metadata('NotFound',
                      message='Username/email combination invalid').
             serialized_data())
     if account.email != email:
         return Response(
             Metadata('NotFound',
                      message='Username/email combination invalid').
             serialized_data())
     email_util.send(email, send_type)
     return Response(Metadata().serialized_data())
Beispiel #8
0
    def retrieve(self, request, pk):
        record = self.queryset.get(code=pk)
        if record is None:
            return Response({
                'success': False,
                'message': 'code not exist',
            })
        account = Account.objects.get(email=record.email)
        if account is None:
            return Response(
                Metadata(status='NotFound',
                         message='email not exist').serialized_data())

        handler = {
            'register':
            lambda _record, _account: self.handle_register(record=_record,
                                                           account=_account),
            'forget':
            lambda _record, _account: self.handle_forget()
        }
        return Response(Metadata().serialized_data())
Beispiel #9
0
 def current(self, request):
     data = self.serializer_class(request.user).data
     return Response(Metadata(data=data).serialized_data())
Beispiel #10
0
    def post(self, request, format=None):
        logout(request)

        return Response(Metadata().serialized_data(),
                        status=status.HTTP_204_NO_CONTENT)
Beispiel #11
0
 def current(self, request):
     player = self.queryset.get(account=request.user)
     data = self.serializer_class(player).data
     return Response(Metadata(data=data).serialized_data())