Ejemplo n.º 1
0
 def post(self, request):
     try:
         User.objects.get(email__iexact=request.data['email'])
         return Response({'detail': 'User with this email already exists'},
                         status=status.HTTP_226_IM_USED)
     except:
         serializer = UserSerializer(data=request.data,
                                     context={'request': request})
         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.º 2
0
def my_jwt_response_handler(token, user=None, request=None):
    return {
        'token': token,
        'user': UserSerializer(user, context={
            'request': request
        }).data
    }
Ejemplo n.º 3
0
class ResourceSerializer(TagSerializer, serializers.ModelSerializer):

    tags = TagsSerializerField(model_field='tags', default='')
    media_type = MediaTypeSerializerField(choices=Resource.RESOURCE_TYPES, allow_blank=True)
    user = UserSerializer(read_only=True)

    class Meta:
        model = Resource
        lookup_field = 'guid'

        fields = (
            'guid',
            'author',
            'title',
            'description',
            'url',
            'referring_url',
            'other_referring_source',
            'user',
            'date_published',
            'created',
            'modified',
            'media_type',
            'paid',
            'tags'
        )
Ejemplo n.º 4
0
class FeedbackSerializer(serializers.ModelSerializer):
    rating_id = RatingSerializer()
    review_id = ReviewSerializer()
    user_id = UserSerializer(many=False, read_only=True)

    class Meta:
        model = Feedback
        fields = ['developer_id', 'rating_id', 'review_id', 'user_id']
Ejemplo n.º 5
0
class ReviewRatingSerializer(serializers.ModelSerializer):
    user_id = UserSerializer(many=False, read_only=True)
    rating_id = RatingSerializer
    review_id = ReviewSerializer

    class Meta:
        model = Review
        fields = ['user_id', 'rating']
Ejemplo n.º 6
0
def RkmenderRegistration(request, format = None):
    """
    List all users, or create a new user.
    """
    
    #Takes all users and serialize them if GET
    if request.method == 'GET':
        users = User.objects.all()
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)
    
    #Creates a new user and sets its password to unusable since login with Facebook
    elif request.method == 'POST':
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.object.set_unusable_password()
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 7
0
def RkmenderDetail(request, username, format=None):
    """
    Retrieve, update a user instance.
    
    """
    #Do check if the user exist if not return False              
    try:
        user = User.objects.get(username=username)
    except User.DoesNotExist:
        response = {"success": False}
        return Response(response, status=status.HTTP_200_OK)

    if request.method == 'GET':
        serializer = UserSerializer(user)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = UserSerializer(user, data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Ejemplo n.º 8
0
class ResourceSerializer(TagSerializer, serializers.ModelSerializer):

    tags = TagsSerializerField(model_field='tags', default='')
    media_type = serializers.SerializerMethodField()
    user = UserSerializer(read_only=True)

    class Meta:
        model = Resource
        lookup_field = 'guid'

        fields = ('guid', 'author', 'title', 'description', 'url',
                  'referring_url', 'other_referring_source', 'user',
                  'date_published', 'created', 'modified', 'media_type',
                  'paid', 'tags')

    def get_media_type(self, obj):
        return obj.get_media_type_display()
Ejemplo n.º 9
0
class FullInfoDeveloperSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False, read_only=True)
    # birth_date = serializers.DateField(format="%d.%m.%Y")
    # city = serializers.CharField(read_only=False,write_only=False)
    stacks_id = StacksSerializer(many=False, read_only=True)
    skills_id = SkillsSerializer(many=True, read_only=True)
    rating = serializers.SerializerMethodField("get_rating_avg")
    rating_count = serializers.SerializerMethodField("get_rating_count")
    price = serializers.SerializerMethodField('get_price')
    review = serializers.SerializerMethodField('get_review')
    review_count = serializers.SerializerMethodField('get_review_count')
    # rating = RatingSerializer(many=True, read_only=True)
    # review = ReviewSerializer(source='review_set', many=True, read_only=True)
    dev_service = DeveloperServiceSerializer(many=False, read_only=True)
    is_favoritex = serializers.BooleanField(read_only=True)

    class Meta:
        model = Developer
        fields = [
            'id', "user", "education", "dev_service", "stacks_id", "skills_id",
            "rating", "rating_count", "price", "review", "review_count",
            "work_experience", "about", "is_favoritex"
        ]

    def restore_object(self, attrs, instance=None):
        # is_favorite = attrs.pop('is_favoritex')
        instance = super(FullInfoDeveloperSerializer,
                         self).restore_object(attrs, instance=instance)
        return instance

    def get_review_count(self, obj):
        review = Review.objects.filter(developer=obj).count()
        return review

    def get_review(self, obj):
        try:
            data = []
            reviews = Review.objects.filter(developer=obj)
            ratings = Rating.objects.filter(developer=obj)
            for review in reviews:
                rate = None
                rating = Rating.objects.filter(developer=obj,
                                               user_id=review.user_id)
                try:
                    rate = (rating.communication + rating.quality +
                            rating.truth_review) / 3
                except:
                    rate = None
                res = {
                    "user_id": {
                        "name": obj.user.name,
                        "surname": obj.user.surname
                    },
                    "text": review.text,
                    "rating": rate
                }
                data.append(res)
            return data
        except:
            return None

    def get_rating_count(self, obj):
        rating = Rating.objects.filter(developer=obj)
        sum_rate = 0
        count_rate = 0
        for rate in rating:
            all_rate = (rate.communication + rate.quality +
                        rate.truth_review) / 3
            sum_rate += all_rate
            count_rate += 1
        if count_rate == 0:
            count_rate = 0
        return count_rate

    def get_rating_avg(self, obj):
        rating = Rating.objects.filter(developer=obj)
        sum_rate = 0
        count_rate = 0
        for rate in rating:
            all_rate = (rate.communication + rate.quality +
                        rate.truth_review) / 3
            sum_rate += all_rate
            count_rate += 1
        if count_rate > 0:
            avg_rating = sum_rate / count_rate
        else:
            avg_rating = None
        return avg_rating

    def get_price(self, obj):
        service = DeveloperService.objects.get(developer=obj)
        return service.price
Ejemplo n.º 10
0
class DevelopersSerializer(serializers.ModelSerializer):
    user = UserSerializer(many=False, read_only=True)
    stacks_id = StacksSerializer(many=False, read_only=True)
    skills_id = SkillsSerializer(many=True, read_only=True)
    rating = serializers.SerializerMethodField("get_rating_avg")
    rating_count = serializers.SerializerMethodField("get_rating_count")
    price = serializers.SerializerMethodField('get_price')
    is_favorite = serializers.SerializerMethodField('get_favorite')

    class Meta:
        model = Developer
        fields = [
            'id', "user", "stacks_id", "skills_id", "rating", "rating_count",
            "price", "is_favorite"
        ]

    def get_favorite(self, obj):
        try:
            # user = self.context['request'].user
            request = self.context.get("request")
            if request and hasattr(request, "user"):
                user = request.user
            fav = Favorites.objects.get(developer=obj, user=user)
            return True
        except:
            return False

    def get_rating_count(self, obj):
        rating = Rating.objects.filter(developer=obj)
        sum_rate = 0
        count_rate = 0
        for rate in rating:
            all_rate = (rate.communication + rate.quality +
                        rate.truth_review) / 3
            sum_rate += all_rate
            count_rate += 1
        if count_rate == 0:
            count_rate = 0
        return count_rate

    def get_rating_avg(self, obj):
        rating = Rating.objects.filter(developer=obj)
        sum_rate = 0
        count_rate = 0
        for rate in rating:
            all_rate = (rate.communication + rate.quality +
                        rate.truth_review) / 3
            sum_rate += all_rate
            count_rate += 1
        if count_rate > 0:
            avg_rating = sum_rate / count_rate
        else:
            avg_rating = None
        return avg_rating

    # @staticmethod
    def get_price(self, obj):
        try:
            service = DeveloperService.objects.get(developer=obj)
            return service.price
        except:
            return None