Ejemplo n.º 1
0
 def check_account(self, request):
     """
     检查用户信息
     :param request: 
     :return: 
     """
     params = request.data
     encryptedData = params.get('encryptedData')
     iv = params.get('iv')
     if not (iv, encryptedData):
         raise serializers.ValidationError('encryptedData、iv参数不能为空')
     user_info = User.objects.filter(open_id=params.get('user_id')).first()
     data = UserSerializer(user_info)
     if not data.data:
         logger.info('无法通过用户open_id获取用户记录: user_id=%s' % params.get('user_id'))
         raise serializers.ValidationError('无法通过用户open_id获取用户记录: user_id=%s' % params.get('user_id'))
     # 用户每日登陆获取new币
     NewCornCompute.compute_new_corn(user_info.open_id, NewCornType.DAILY_LOGIN.value)
     # 录入用户信息到数据库,同时也要注意微信用户可能会更换信息
     if user_info.nick_name != params.get('nick_name') or user_info.avatar_url != params.get('avatar_url'):
         logger.info('check_account更新用户信息: user_id=%s' % params.get('user_id'))
         user_info.nick_name = params.get('nick_name')
         user_info.gender = params.get('gender')
         user_info.province = params.get('province')
         user_info.country = params.get('country')
         user_info.city = params.get('city')
         user_info.avatar_url = params.get('avatar_url')
         user_info.language = params.get('language')
         user_info.save()
         temp = UserSerializer(user_info).data
         logger.info('Update User from Redis')
         logger.info(temp)
         redis_client.set_instance(user_info.open_id, temp)
     return Response()
Ejemplo n.º 2
0
 def post(self, request, *args, **kwargs):
     register_step = request.data.pop('register_step', None)
     if register_step == 0:
         serializer = UserSerializer(data=request.data)
         if serializer.is_valid():
             request.session['USER'] = request.data
             return Response({})
         else:
             return Response(serializer.errors, status=400)
     elif register_step == 1:
         otp_code = request.data.pop('otp_code', None)
         user_serializer = UserSerializer(data=request.session.get('USER'))
         key = request.session.get('OTP_KEY', 0)
         if pyotp.TOTP(key).verify(otp_code) and user_serializer.is_valid():
             user = user_serializer.save()
             SecretKey.objects.create(user=user, key=key)
             request.session.flush()
             login(request,
                   user,
                   backend='django.contrib.auth.backends.ModelBackend')
             return Response(UserSerializer(user).data)
         else:
             return Response({'error': 'OTP doesn\'t match'}, status=400)
     else:
         return Response(
             {'error': 'Unknown register_step %s' % register_step},
             status=400)
Ejemplo n.º 3
0
    def post(self, request, format='json'):
        user_serializer = UserSerializer(data=request.data)
        if user_serializer.is_valid():
            user = user_serializer.save()

            if user:
                serializer = UserSerializer(instance=user)
                return Response(user.username, status=status.HTTP_201_CREATED)

        return Response(user_serializer.errors,
                        status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 4
0
 def get(self, request, pk=None, *args, **kwargs):
     if not pk:
         users = User.objects()
         serializer = UserSerializer(users, many=True)
         return Response(serializer.data)
     try:
         user = User.objects.get(pk=pk)
     except:
         return Response({}, status=status.HTTP_204_NO_CONTENT)
     else:
         serializer = UserSerializer(user)
         return Response(serializer.data)
Ejemplo n.º 5
0
class AttendanceSerializer(serializers.ModelSerializer):
    # session_id = SabhaSessionSerializer(read_only=True)
    user = UserSerializer(read_only=True, fields=('username', ))
    last_modified_by = UserSerializer(read_only=True, fields=('username', ))

    # To change the key name in response
    session_info = GetSabhaSessionSerializer(read_only=True,
                                             source='session_id',
                                             fields=('id', 'sabhatype'))

    class Meta:
        model = Attendance
        fields = ('status', 'user', 'last_modified_by', 'session_info',
                  'leave_reason')
Ejemplo n.º 6
0
    def post(self, request, format=None):
        data = json.loads(request.body)

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

        user = authenticate(username=username, password=password)

        if user is not None:
            if user.is_active:
                login(request, user)

                serialized = UserSerializer(user)

                return Response(serialized.data)
            else:
                return Response(
                    {
                        'error': 'Awkward! Your account has been disabled.',
                    },
                    status=status.HTTP_401_UNAUTHORIZED)
        else:
            return Response(
                {'error': 'Looks like your username or password is wrong'},
                status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 7
0
 def get(self, request, *args, **kwargs):
     user_id = self.request.user.id
     filter = request.query_params['filter']
     filter_json = json.loads(filter)
     customers = User.objects.filter(Q(email__icontains=filter_json['arg'])).exclude(id=user_id).all()
     customers_serializer = UserSerializer(customers, many=True)
     return Response(customers_serializer.data)
Ejemplo n.º 8
0
 def post(self, request):
     """ Create a User """
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 9
0
class NormalMessageSerializer(serializers.ModelSerializer):
    subject = SubjectSerializer(read_only=True)
    author = UserSerializer(read_only=True, required=False)

    class Meta:
        model = NormalMessage
        fields = ('id', 'content', 'subject', 'author', 'message_vote')
Ejemplo n.º 10
0
class CourseGetSerializer(serializers.ModelSerializer):
    teacher = UserSerializer()
    assignments = AssignmentSerializer(many=True)
    notifications = serializers.SerializerMethodField()
    students = serializers.PrimaryKeyRelatedField(many=True,
                                                  queryset=User.objects.all())
    non_approved_students = serializers.PrimaryKeyRelatedField(
        many=True, queryset=User.objects.all())

    def get_notifications(self, instance):
        if self.context['request'].user.is_anonymous:
            return []
        return [
            NewsSerializer(instance=x).data
            for x in instance.notifications.filter(
                user=self.context['request'].user)
        ]

    class Meta:
        model = Course
        fields = (
            'id',
            'teacher',
            'name',
            'description',
            'created',
            'modified',
            'students',
            'image',
            'assignments',
            'notifications',
            'non_approved_students',
        )
Ejemplo n.º 11
0
def my_jwt_response_handler(token, user=None, request=None):
    return {
        'token': token,
        'user': UserSerializer(user, context={
            'request': request
        }).data
    }
Ejemplo n.º 12
0
 def post(self, request, *args, **kwargs):
     auth_step = request.data.pop('auth_step', None)
     if auth_step == 0:
         attempt = request.session.get('AUTH_ATTEMPT', 0)
         if attempt < MAX_AUTH_ATTEMPTS:
             request.session['AUTH_ATTEMPT'] = attempt + 1
             form = AuthenticationForm(data=request.data)
         else:
             form = AuthenticationFormWithCaptcha(data=request.data)
         if form.is_valid():
             user = form.get_user()
             request.session['USER_ID'] = user.pk
             return Response({})
         else:
             return Response(form.errors, status=400)
     elif auth_step == 1:
         otp_code = request.data.pop('otp_code', None)
         user = User.objects.get(pk=request.session['USER_ID'])
         if otp_verify(user, otp_code):
             request.session.flush()
             login(request,
                   user,
                   backend='django.contrib.auth.backends.ModelBackend')
             return Response(UserSerializer(user).data)
         else:
             return Response({'otp': 'OTP doesn\'t match'}, status=400)
     else:
         return Response({'error': 'Unknown auth_step %s' % auth_step},
                         status=400)
Ejemplo n.º 13
0
def custom_jwt_response_handler(token, user=None, request=None):
    return {
        "token": token,
        "user": UserSerializer(user, context={
            "request": request
        }).data,
    }
Ejemplo n.º 14
0
 def patch(self, request, id):
     user = User.objects.get(id=id)
     serializer = UserSerializer(instance=user, data=request.data, partial=True)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 15
0
class PlotSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    createdAt = serializers.SerializerMethodField(method_name='get_created_at')
    description = serializers.CharField(required=False)
    class Meta:
        model = Plot
        fields = (
            'author',
            'title',
            'info',
            'lat',
            'lng',
            'size',
            'region',
            'habitat_type',
            'description',
            'createdAt',
            'imageURL'
        )
    
    def create(self, validated_data):
        author = self.context.get('author', None)
        plot = Plot.objects.create(author=author, **validated_data)
        return plot

    def get_created_at(self, instance):
        return instance.created_at.isoformat()
Ejemplo n.º 16
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.is_active:
                login(request, account)

                serialized = UserSerializer(account)

                return Response(serialized.data)
            else:
                return Response({
                    'status': 'Unauthorized',
                    'message': 'This account has been disabled.'
                }, status=status.HTTP_401_UNAUTHORIZED)
        else:
            return Response({
                'status': 'Unauthorized',
                'message': 'Username/password combination invalid.'
            }, status=status.HTTP_401_UNAUTHORIZED)
Ejemplo n.º 17
0
 def put(self, request, pk, format=None):
     user = request.user
     serializer = UserSerializer(user, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 18
0
class PostSerializer(serializers.ModelSerializer):
    author = UserSerializer(
        default=serializers.CurrentUserDefault(), read_only=True)

    class Meta:
        model = Post
        fields = ('id', 'author', 'title', 'link', 'created_at', 'updated_at',
                  'comment_count', 'upvote_count')
        read_only_fields = ('id', 'created_at', 'updated_at',
                            'comment_count', 'upvote_count')

    def to_representation(self, obj):
        returnObj = super(PostSerializer, self).to_representation(obj)
        is_upvoted_me = False
        is_author_me = False
        if isinstance(self.context['request'].user, Account):
            is_upvoted_me = obj.postupvote_set.filter(
                voter=self.context['request'].user).exists()
            is_author_me = obj.author == self.context['request'].user

        newObj = {
            'is_author_me': is_author_me,
            'is_upvoted_me': is_upvoted_me
        }
        returnObj.update(newObj)
        return returnObj
Ejemplo n.º 19
0
    def post(self, request):
        data = request.data
        user = User.objects.filter(username=data['email'])
        if user:
            return {'success': 0, 'error': 'user already exist', 'status': status.HTTP_409_CONFLICT}
        user_ser = UserSerializer(data=data)
        if user_ser.is_valid():
            user = user_ser.save()
            data = {
                'activation_code': generate_activation_token(),
                'user': user.id
            }
            # saving activation code to Activation Model through UserActivationSerializer
            user_activation_ser = UserActivationSerializer(data=data)
            if user_activation_ser.is_valid(raise_exception=True):
                token = user_activation_ser.save()

                send_user_mail(
                    template="activation.html",
                    first_name=user.first_name,
                    last_name=user.last_name,
                    subject="Activate Account",
                    activation_url="http://localhost:8000?activate="+token.activation_code,
                    user=user
                )
            return {'success': 1, 'status': status.HTTP_201_CREATED}
Ejemplo n.º 20
0
 def to_representation(self, instance):
     self.fields['name'] = UserSerializer(read_only=True)
     self.fields['member'] = StudentSerializer(read_only=True)
     self.fields['lecturer_adviser'] = LecturerSerializer(read_only=True)
     self.fields['company_name'] = LecturerSerializer(read_only=True)
     self.fields['intern_topic'] = LecturerSerializer(read_only=True)
     return super(InternshipSerializer, self).to_representation(instance)
Ejemplo n.º 21
0
 def post(self, request, *args, **kwargs):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     print(serializer.errors)
     return Response({})
Ejemplo n.º 22
0
class AccountSerializer(serializers.ModelSerializer):

    users = UserSerializer(read_only=True, many=True)

    class Meta:
        model = Account
        fields = 'id', 'users', 'name', 'total', 'limit'
Ejemplo n.º 23
0
def GetDetails(request):
    if request.method == 'GET':
        usr = CurrentUser(request)
        if usr == None:
            return Response({"success":True, "loggedin": False}, status=status.HTTP_200_OK)
        return Response({"success":True, "loggedin": True, **dict(UserSerializer(usr).data)})
    return Response({"success":False, "message": "Make a GET request."}, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 24
0
    def post(self, request):

        try:
            data = json.loads(request.body)
            member_id = data.get('member_id', None)
            password = data.get('password', None)
            remember_me = data.get('remember_me', None)
            user = authenticate(member_id=member_id, password=password)
            if user:
                login(request, user)
                serialized_data = UserSerializer(user)
                if remember_me is None:
                    request.session.set_expiry(0)
                return Response(serialized_data.data)
            else:
                return Response(
                    {
                        'status': 'Not authorized',
                        'message': 'Invalid Login Details'
                    },
                    status=status.HTTP_401_UNAUTHORIZED)
        except ValueError:
            return Response(
                {
                    'status': 'Invalid Request',
                    'message': 'Invalid Request Paramaters'
                },
                status=status.HTTP_401_UNAUTHORIZED)
Ejemplo n.º 25
0
 def post(self, request, format='json'):
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         data = {
             "email": serializer.data["email"],
             "first_name": serializer.data["first_name"],
             "last_name": serializer.data["last_name"]
         }  # Some unique field for reference
         secret_key = "GAMEAPPISFUNNY"
         algorithm = "HS256"  # You can use MD5 or whatever you want
         token_code_data = jwt.encode(data, secret_key, algorithm)
         url = 'http://192.168.0.103:8080/user_register/confirm/' + token_code_data.decode(
             'utf-8')
         # # user = serializer.save()
         # if user:
         #     # token = Token.objects.create(user=user)
         #     # json = serializer.data
         #     # json['token'] = token.key
         #     return Response("User Registration Completed but Pending for Verification", status=status.HTTP_201_CREATED)
         try:
             send_mail('Verificaion link for Game App', url,
                       '*****@*****.**',
                       [serializer.data["email"]])
         except:
             return Response(
                 "Please try again later after some time/Report here @ [email protected]",
                 status=status.HTTP_500_INTERNAL_SERVER_ERROR)
         return Response(
             "User Registration Completed but Pending for Verification",
             status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 26
0
    def get(self, request):

        serialized_user = UserSerializer(request.user,
                                         context={'request': request})

        return response.Response(serialized_user.data,
                                 status=status.HTTP_200_OK)
Ejemplo n.º 27
0
class DoctorSerializer(ProfileSerializer):
    '''

    '''
    user = UserSerializer(many=False)
    typed = 'doctor'
    title = serializers.CharField(required=False,
                                  allow_blank=True,
                                  default=typed,
                                  initial=typed)

    def create(self, validated_data):
        email = validated_data['email']
        if AuthenticationService.is_email_exists(email):
            raise serializers.ValidationError(
                detail="Email is already exists. Please check again!")
        user = AuthenticationService.create_new_user(
            validated_data.pop('user'))
        profile = Profile(**validated_data)
        profile.user = user
        profile.save()
        return profile

    def validate_title(self, data):
        if data != self.typed:
            raise serializers.ValidationError(
                detail="User must have title {}".format(self.typed))
        return data
Ejemplo n.º 28
0
class OrderSerializer(DynamicFieldsModelSerializer):

    order_lines = OrderLineSerializer(many=True)
    user = UserSerializer(read_only=True)
    order_line_delete = serializers.ListField(child=serializers.UUIDField(), write_only=True)
    
    class Meta:
        model = Order
        fields = ['id', 'order_lines', 'ship_name',
                  'ship_email', 'ship_phone', 'ship_address',
                  'ship_city', 'ship_district', 'payment_method',
                  'delivery_fee', 'sub_total', 'total',
                  'user', 'created_at', 'updated_at', 'order_line_delete']
        read_only_fields = ['sub_total', 'total', 'name']

    def create(self, validated_data):
        order_lines_data = validated_data.pop('order_lines')
        order = Order.objects.create(**validated_data)
        for order_line_data in order_lines_data:
            OrderLine.objects.create(order=order, **order_line_data)
        return order

    def update(self, instance, validated_data):
        order_line_delete_ids = validated_data.pop('order_line_delete')
        order_lines = validated_data.pop('order_lines')
        if order_line_delete_ids:
            OrderLine.objects.filter(id__in=order_line_delete_ids).delete()
        for order_line in order_lines:
            if 'id' in order_line:
                order_line_id = order_line.pop('id')
                OrderLine.objects.filter(id=order_line_id).update(**order_line)
            else:
                OrderLine.objects.create(order_id=instance.id, **order_line)

        return super(OrderSerializer, self).update(instance, validated_data)
Ejemplo n.º 29
0
class CommentSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    post = PostSerializer()

    class Meta:
        model = Comments
        fields = '__all__'
Ejemplo n.º 30
0
 def process_request(self, request):
     url_path = request.path
     if url_path in ignore_auth_urls:
         return
     logger.info('Auth Url: %s' % url_path)
     # ticket = request.COOKIES.get('ticket')
     # if not ticket:
     #     data = request.GET.dict()
     #     ticket = data.get('ticket')
     data = request.GET.dict()
     ticket = data.get('ticket')
     if not ticket:
         return HttpResponse(content=json.dumps(dict(code=401, msg='未登录')),
                             content_type='application/json')
     auth_res = TicketAuthorize.validate_ticket(ticket)
     valid_ticket = auth_res['valid_ticket']
     if not valid_ticket:
         return HttpResponse(content=json.dumps(
             dict(code=401, msg='验证失败: %s' % auth_res['err_msg'])),
                             content_type='application/json')
     if not redis_client.get_instance(key=auth_res['user_id']):
         logger.info('Get User Info From DataBase')
         user = User.objects.filter(open_id=auth_res['user_id']).first()
         serializer = UserSerializer(user)
         user_info = serializer.data
         redis_client.set_instance(auth_res['user_id'], serializer.data)
     else:
         user_info = redis_client.get_instance(auth_res['user_id'])
         logger.info('Get User Info From Redis')
     user_info['ticket'] = ticket
     request.user_info = user_info