示例#1
0
 def post(self, request, format=None):
     """
     Create user, add it to both db and redis leaderboards/hash.
     :param request: request
     :param format: format
     :return:
     """
     serializer = UserSerializer(data=request.data)
     if serializer.is_valid():
         user_obj = serializer.save()
         user_info = get_hash_item(serializer.data)
         redis_hash.create_hash(serializer.data['user_id'], user_info)
         points = 0
         if 'points' in request.data:
             points = request.data['points']
         user_score = UserScore.objects.create(user_id=user_obj,
                                               score_worth=points)
         user_score.save()
         score_mapping = {str(serializer.data['user_id']): points}
         redis_leaderboard.add_user_score(score_mapping)
         redis_leaderboard.add_score_to_country(user_info['country'], score_mapping)
         data = serializer.data
         data['rank'] = redis_leaderboard.get_rank(data['user_id'])
         data['points'] = points
         return Response(data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例#2
0
    def signup(self, request):
        try:
            user = User.objects.get(email=request.data['email'])
            if (user != None):
                return Response(data={
                    'message':
                    'A user with this email is already registered.'
                },
                                status=400)
        except User.DoesNotExist:
            pass

        hashed = bcrypt.hashpw(request.data['password'].encode('utf-8'),
                               bcrypt.gensalt(12))
        request.data['password'] = hashed.decode('utf-8')
        request.data['isVerified'] = 1
        request.data['isActive'] = 1

        serializer = UserSerializer(data=request.data)
        if (serializer.is_valid() == False):
            print(serializer.errors)

        print(serializer)
        serializer.save()
        return Response(data={
            'code': 200,
            'message': "You are signed up successfully."
        },
                        status=200)
示例#3
0
    def get(request):
        """
        List users
        """

        users = User.objects.all()
        return Response(UserSerializer(users, many=True).data)
示例#4
0
class SparkJobDetailSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    created = serializers.DateTimeField(read_only=True)
    started = serializers.DateTimeField(read_only=True)
    finished = serializers.DateTimeField(read_only=True)

    class Meta:
        model = SparkJob
        fields = ('id', 'name', 'description', 'author',
                  'state', 'priority', 'iterations', 'inputFile',
                  'created', 'started', 'finished')

    def update(self, instance, validated_data):
        state = validated_data.get('state', instance.state)
        if state in [SparkJobStates['RUNNING'], SparkJobStates['FINISHED']]:
            return instance

        instance.name = validated_data.get('name', instance.name)
        instance.description = validated_data.get('description', instance.description)

        if instance.state is SparkJobStates['SUSPENDED']:
            instance.priority = validated_data.get('priority', instance.priority)
            instance.iterations = validated_data.get('iterations', instance.iterations)
            instance.inputFile = validated_data.get('inputFile', instance.inputFile)

        instance.state = state

        instance.save()
        return instance
示例#5
0
class PlayerSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True)

    class Meta:
        model = Player
        fields = ('id', 'user', 'rating', 'created_at', 'finished_at')
        read_only_fields = ('rating', 'created_at', 'finished_at')
示例#6
0
    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()

        response = requests.post('http://localhost:8000/auth/jwt/create/',
                                 data={
                                     'username': request.data['username'],
                                     'password': request.data['password']
                                 })
        content = response.content.decode('utf-8')
        content = json.loads(content)
        token = {
            "refresh": content.get('refresh'),
            "access": content.get('access'),
        }

        return Response({
            "user":
            UserSerializer(user, context=self.get_serializer_context()).data,
            "token":
            token,
            "message":
            "Вы зарегестрировались",
        })
示例#7
0
class BigPictureSerializer(serializers.ModelSerializer):
    hyperlink = BigPictureChildSerializer(many=False, read_only=True)
    hyperlink_id = serializers.PrimaryKeyRelatedField(
        required=False,
        source='hyperlink',
        queryset=BigPicture.objects.filter(private=False),
    )
    subject = serializers.PrimaryKeyRelatedField(
        required=False, queryset=BigPicture.objects.all())
    kind = serializers.IntegerField()
    author = UserSerializer(read_only=True)
    author_id = serializers.PrimaryKeyRelatedField(
        source='author',
        queryset=BaseUser.objects.all(),
    )
    family = serializers.SerializerMethodField()
    children = serializers.SerializerMethodField()
    pin = serializers.BooleanField(read_only=True)

    class Meta:
        model = BigPicture
        fields = "__all__"

    def get_family(self, obj):
        if obj.subject.id == obj.id:
            return [
                BigPictureChildSerializer(a).data
                for a in BigPicture.objects.filter(subject=obj.id)
            ]
        return None

    def get_children(self, obj):
        return [a.id for a in BigPicture.objects.filter(parent=obj.id)]
class RatingSerializer(serializers.HyperlinkedModelSerializer):
    user = UserSerializer(required=False)
    project = ProjectSerializer(required=False)

    class Meta:
        model = Rating
        fields = ['user', 'project', 'rating']
示例#9
0
 def get(self, request, **kwargs):
     if request.query_params.get('search') is None:
         users = User.objects.all()
     else:
         users = User.objects.filter(Q(username__icontains=request.query_params.get(
             'search')) | Q(first_name__icontains=request.query_params.get('search')))
     serializer = UserSerializer(instance=users, many=True)
     return Response(serializer.data)
示例#10
0
def my_jwt_response_handler(token, user=None, request=None):
    usr = BaseUser.objects.get(id=user.id)
    return {
        'token': token,
        'user': UserSerializer(usr, context={
            'request': request
        }).data
    }
示例#11
0
 def profile(self, request, pk=None):
     user = User.objects.get(id=request.userId)
     serializer = UserSerializer(user)
     return Response(data={
         'data': serializer.data,
         'code': 200
     },
                     status=200)
示例#12
0
文件: vehicle.py 项目: emi-hi/zeva
class VehicleHistorySerializer(
        ModelSerializer, EnumSupportSerializerMixin
):
    create_user = UserSerializer(read_only=True)
    validation_status = EnumField(VehicleDefinitionStatuses, read_only=True)

    class Meta:
        model = VehicleChangeHistory
        fields = ('create_timestamp', 'create_user', 'validation_status')
示例#13
0
 def get(self, request):
     user = request.user
     if not user or user.is_anonymous:
         raise NotAuthenticated()
     data = {
         "detail": _(f"{user.username} session is enabled"),
         "user": UserSerializer(user).data
     }
     return Response(data=data, status=status.HTTP_200_OK)
示例#14
0
class GroupDetailSerializer(ModelSerializer):
	'''
	Item Detail Serializer
	'''

	owner=UserSerializer(many=True,read_only=True)
	user=UserSerializer(many=True,read_only=True)
	
	class Meta:
		model=Groupps
		fields= (
			'id',
			'owner',
			'user',
			'name',
			'base_url',
			)
		read_only_fields=['id',]
示例#15
0
class ItemDetailSerializer(ModelSerializer):
    """ Item Deatil Seralizer"""

    owner = UserSerializer(many=False, read_only=True)

    class Meta:
        model = Item
        fields = ('id', 'title', 'price', 'asset_bundle', 'owner', 'created',
                  'updated')
        read_only_fields = ('id', )
示例#16
0
def auth(request):
    user = request.user
    refresh = RefreshToken.for_user(user)
    serializer = UserSerializer(user)
    json_data = {
        'refresh': str(refresh),
        'access': str(refresh.access_token),
        'user': serializer.data,
    }
    return Response(json_data, status=status.HTTP_200_OK)
示例#17
0
class LoginSerializer(serializers.ModelSerializer):
    """
    Login Serializer
    """
    auth_token = serializers.CharField(source='key')
    user = UserSerializer(many=False, read_only=True)

    class Meta:
        model = Token
        fields = ('auth_token', 'user')
        read_only_fields = fields
示例#18
0
    def patch(self, request):
        current_user = request.user
        user_data = clear_dict(request.data)
        profile_data = user_data.get('profile')
        if 'profile' in user_data:
            del user_data['profile']
        serializer = UserSerializer(current_user,
                                    data=user_data,
                                    partial=True,
                                    allow_null=True)
        if serializer.is_valid():
            serializer.save()

            if profile_data:
                profile_serializer = ProfileSerializer(
                    current_user.user_profile,
                    data=profile_data,
                    partial=True,
                    allow_null=True)
                if profile_serializer.is_valid():
                    profile_serializer.save()
            return JsonResponse(data=serializer.data, status=201, safe=False)
        return JsonResponse(status=400, data="wrong parameters")
示例#19
0
class RatingSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    author_id = serializers.PrimaryKeyRelatedField(
        source='author',
        queryset=BaseUser.objects.all(),
    )
    basisCount = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Rating
        fields = "__all__"

    def get_basisCount(self, obj):
        return obj.endorsments.all().count()
示例#20
0
class LikeSerializer(ModelSerializer):

    owner = UserSerializer(many=False, read_only=False)
    item = PrimaryKeyRelatedField(queryset=Item.objects.all())

    class Meta:
        model = Like
        fields = (
            'id',
            'item',
            'owner',
            'created_at',
            'updated_at',
        )
        read_only_fields = ['id']
示例#21
0
class EndorsmentSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    target = RatingSerializer(read_only=True)
    target_id = serializers.PrimaryKeyRelatedField(
        source='target',
        queryset=Rating.objects.all(),
    )
    author_id = serializers.PrimaryKeyRelatedField(
        source='author',
        queryset=BaseUser.objects.all(),
    )

    class Meta:
        model = Endorsment
        fields = "__all__"
示例#22
0
    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)
        username = serializer.data['username']
        password = serializer.data['password']
        user = authenticate(username=username, password=password)
        if not user or not user.is_active:
            raise AuthenticationFailed()

        login(request, user)
        data = {
            "detail": _(f"{user.username} session is enabled"),
            "user": UserSerializer(user).data
        }
        return Response(data=data, status=status.HTTP_200_OK)
示例#23
0
    def patch(self, request):
        """
        Обновить поля профиля текущего юзера
        Обновление частичное (не требуется заполнение всех полей)
        """
        serializer = UserSerializer(request.user, data=request.data)
        serializer.is_valid(raise_exception=True)

        serializer.save()
        return Response(serializer.data, status=status.HTTP_200_OK)
示例#24
0
class Grouppserializer(ModelSerializer):
	
	owner=UserSerializer(many=True,read_only=False)
	class Meta:
		model=Groupps
		fields=(
			'id',
			'owner',
			'name',
			)

		read_only_fields=('id',)

	def create(self, validated_data):

		return Item.objects.create(**validated_data)
示例#25
0
class BigPictureChildSerializer(serializers.ModelSerializer):
    author = UserSerializer(read_only=True)
    author_id = serializers.PrimaryKeyRelatedField(
        source='author',
        queryset=BaseUser.objects.all(),
    )
    hyperlink_id = serializers.PrimaryKeyRelatedField(
        required=False,
        source='hyperlink',
        queryset=BigPicture.objects.filter(private=False),
    )
    subject = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = BigPicture
        fields = "__all__"
示例#26
0
class QuizSerializer(serializers.ModelSerializer):
    tags = CreatableSlugRelatedField(many=True,
                                     queryset=Tag.objects.all(),
                                     slug_field='tag')
    user = UserSerializer(read_only=True)
    questions = QuestionSerializer(many=True)

    class Meta:
        model = Quiz
        fields = ('id', 'title', 'description', 'user', 'tags', 'questions',
                  'rating', 'version_date')
        read_only_fields = ('user', 'rating', 'version_date')

    def create(self, validated_data):
        return Quiz.objects.create_quiz(**validated_data)

    def update(self, instance, validated_data):
        return instance.update(**validated_data)
示例#27
0
class AssetBundleDetailSerializer(ModelSerializer):
    pass

    owner = UserSerializer(many=False, read_only=True)

    class Meta:
        model = AssetBundle
        fields = (
            'id',
            'salt',
            'kind',
            'base_url',
            'owner',
            'asset_urls',
            'created',
            'updated'
        )
        read_only_fields = ('id',)
示例#28
0
class ItemSerializer(ModelSerializer):

    owner = UserSerializer(many=False, read_only=False)

    class Meta:
        model = Item
        fields = (
            'id',
            'asset_bundle',
            'owner',
            'created_at',
            'details',
        )

        read_only_fields = ('id', )

    def create(self, validated_data):

        return Item.objects.create(**validated_data)
示例#29
0
 def post(self, request, *args, **kwargs):
     logger.info('Received registration request with data: {data}'.format(
         data=request.data))
     serializer = self.serializer_class(data=request.data)
     if serializer.is_valid():
         validated_data = serializer.validated_data
         email = validated_data['email']
         try:
             user = User.objects.get(email=email)
             return Response({
                 'email': self.EXISTING_USER_MESSAGE}, 
                 status=status.HTTP_400_BAD_REQUEST) 
         except User.DoesNotExist:
             user = serializer.save()
             email_utils.send_activation_email(request, user)
             serialized_user = UserSerializer(user, context={'request': request})
             return Response({'user': serialized_user.data}, status=status.HTTP_201_CREATED)
     else:
         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)     
示例#30
0
class BigPictureSerializer(serializers.ModelSerializer):
    hyperlink = BigPictureChildSerializer(many=False, read_only=True)
    hyperlink_id = serializers.PrimaryKeyRelatedField(
        required=False,
        source='hyperlink',
        queryset=BigPicture.objects.filter(private=False),
    )
    subject = serializers.PrimaryKeyRelatedField(
        required=False, queryset=BigPicture.objects.all())
    author = UserSerializer(read_only=True)
    author_id = serializers.PrimaryKeyRelatedField(
        source='author',
        queryset=BaseUser.objects.all(),
    )
    children = serializers.SerializerMethodField()
    ratingCount = serializers.SerializerMethodField()
    pin = serializers.BooleanField(read_only=True)
    category = serializers.SerializerMethodField()

    class Meta:
        model = BigPicture
        fields = "__all__"

    def get_category(self, obj):
        try:
            return CategorySerializer(
                Category.objects.get(label=obj.subject.tags)).data
        except:
            return CategorySerializer(Category.objects.get(label="all")).data

    def get_ratingCount(self, obj):
        return Rating.objects.filter(target_bp=obj).count()

    def get_children(self, obj):
        res = []
        for bp in BigPicture.objects.filter(parent=obj.id):
            if bp.hyperlink is not None:
                bp_json = BigPictureChildSerializer(bp).data
                bp_json["reverse_author"] = bp.hyperlink.author.id
                res.append(bp_json)
            else:
                res.append(BigPictureChildSerializer(bp).data)
        return res