Exemple #1
0
def remove_all_tags(request, pk, format=None):
    try:
        composition = Composition.objects.get(pk=pk)
        check_object_permissions(request, add_tags.cls.permission_classes, request.user)
    except Composition.DoesNotExist:
        raise Http404
    composition.tags.clear()
Exemple #2
0
def user_bookmarks(request, pk, format=None):
    check_object_permissions(request, user_bookmarks.cls.permission_classes,
                             User.objects.get(pk=pk))
    if request.method == 'GET':
        serializer = BookmarkSerializer(request.user,
                                        context={request: request})
        return Response(serializer.data)
    elif request.method == 'PUT':
        bookmarks = request.DATA.get('bookmarks')
        request.user.bookmarks.add(*bookmarks)
        serializer = BookmarkSerializer(request.user)

        # Add notification.
        for bookmark in bookmarks:
            try:
                bookmarked = Composition.objects.get(pk=bookmark)
                if request.user != bookmarked.artist:
                    notify.send(request.user,
                                recipient=bookmarked.artist,
                                verb='added to his collection',
                                action_object=bookmarked)
            except Composition.DoesNotExist:
                # No such user, skip notification.
                pass
        return Response(serializer.data)
    elif request.method == 'POST':
        bookmarks = request.DATA['bookmarks']
        request.user.bookmarks.remove(*bookmarks)
        serializer = BookmarkSerializer(request.user)
        return Response(serializer.data)
Exemple #3
0
def user_follows(request, pk, format=None):
    check_object_permissions(request, user_follows.cls.permission_classes,
                             User.objects.get(pk=pk))
    if request.method == 'GET':
        serializer = FollowSerializer(request.user, context={request: request})
        return Response(serializer.data)
    elif request.method == 'PUT':
        follows = request.DATA.get('follows')
        request.user.follows.add(*follows)
        serializer = FollowSerializer(request.user)

        # TODO add notification.
        for follow in follows:
            try:
                followed = User.objects.get(pk=follow)
                if request.user != followed:
                    notify.send(request.user,
                                recipient=followed,
                                verb='followed you.')
            except User.DoesNotExist:
                # No such user, skip notification.
                pass

        return Response(serializer.data)
    elif request.method == 'POST':
        follows = request.DATA['follows']
        request.user.follows.remove(*follows)
        serializer = FollowSerializer(request.user)
        return Response(serializer.data)
Exemple #4
0
def follow_compositions(request, format=None):
    check_object_permissions(request, follow_compositions.cls.permission_classes, request.user)
    follows = request.user.follows.all()
    if follows:
        q_object = Q()
        for follow in follows:
            q_object |= Q(artist_id=follow.id)

    compositions = Composition.objects.filter(q_object)
    ser = CompositionSerializer(compositions, many=True)

    if request.user.is_authenticated():
        counter = 0
        related_comps = compositions.filter(collectors__id=request.user.id)
        for composition in compositions:
            ser.data[counter]['IsBookmarked'] = False
            ser.data[counter]['IsVoted'] = False

            if composition in related_comps:
                ser.data[counter]['IsBookmarked'] = True
            if request.user.votes.filter(composition=composition).exists():
                ser.data[counter]['IsVoted'] = True
            counter = counter + 1
        return Response(ser.data)
    return Response([])
Exemple #5
0
def user_follows(request, pk, format=None):
    check_object_permissions(request, user_follows.cls.permission_classes, User.objects.get(pk=pk))
    if request.method == 'GET':
	serializer = FollowSerializer(request.user, context={request: request}) 
	return Response(serializer.data)
    elif request.method == 'PUT':
	follows = request.DATA.get('follows')
	request.user.follows.add(*follows)
	serializer = FollowSerializer(request.user)

	# TODO add notification.
	for follow in follows:
	    try:
		followed = User.objects.get(pk=follow)
		if request.user != followed:
		    notify.send(request.user, recipient=followed, verb='followed you.')
	    except User.DoesNotExist:
		# No such user, skip notification.
		pass

	return Response(serializer.data)
    elif request.method == 'POST':
	follows = request.DATA['follows']
	request.user.follows.remove(*follows)
	serializer = FollowSerializer(request.user)
	return Response(serializer.data)
Exemple #6
0
def follow_compositions(request, format=None):
    # To make it genenric w.r.t. user get user Id in post/get. Then check for permissions.
    check_object_permissions(request,
                             follow_compositions.cls.permission_classes,
                             request.user)
    follows = request.user.follows.all()
    if follows:
        q_object = Q()

        for follow in follows:
            q_object |= Q(artist_id=follow.id)

        compositions = Composition.objects.filter(q_object)
        ser = CompositionSerializer(compositions, many=True)

        if request.user.is_authenticated():
            counter = 0
            related_comps = compositions.filter(collectors__id=request.user.id)
            for composition in compositions:
                ser.data[counter]['IsBookmarked'] = False
                ser.data[counter]['IsVoted'] = False

                if composition in related_comps:
                    ser.data[counter]['IsBookmarked'] = True
                if request.user.votes.filter(composition=composition).exists():
                    ser.data[counter]['IsVoted'] = True
                counter = counter + 1
        return Response(ser.data)
    return Response([])
Exemple #7
0
def user_bookmarks(request, pk, format=None):
    check_object_permissions(
        request, user_bookmarks.cls.permission_classes, User.objects.get(pk=pk))
    if request.method == 'GET':
        serializer = BookmarkSerializer(
            request.user, context={request: request})
        return Response(serializer.data)
    elif request.method == 'POST':
        bookmarks = request.DATA.get('bookmarks')
        if not bookmarks:
            return Response({"bookmarks": "This field is required"}, status=status.HTTP_400_BAD_REQUEST)
        request.user.bookmarks.add(*bookmarks)

        # Add notification.
        for bookmark in bookmarks:
            try:
                bookmarked = Composition.objects.get(pk=bookmark)
                if request.user != bookmarked.artist:
                    notify.send(request.user, recipient=bookmarked.artist,
                                verb='added to his collection', action_object=bookmarked)
            except Composition.DoesNotExist:
                # No such user, skip notification.
                pass
        return Response(status=status.HTTP_201_CREATED)
    elif request.method == 'DELETE':
        bookmarks = request.DATA.get('bookmarks')
        if not bookmarks:
            return Response({"bookmarks": "This field is required"}, status=status.HTTP_400_BAD_REQUEST)

        request.user.bookmarks.remove(*bookmarks)
        serializer = BookmarkSerializer(request.user)
        return Response(serializer.data)
Exemple #8
0
def user_bookmarks(request, pk, format=None):
    check_object_permissions(request, user_bookmarks.cls.permission_classes, User.objects.get(pk=pk))
    if request.method == 'GET':
	serializer = BookmarkSerializer(request.user, context={request: request}) 
	return Response(serializer.data)
    elif request.method == 'PUT':
	bookmarks = request.DATA.get('bookmarks')
	request.user.bookmarks.add(*bookmarks)
	serializer = BookmarkSerializer(request.user)

	# Add notification.
	for bookmark in bookmarks:
	    try:
		bookmarked = Composition.objects.get(pk=bookmark)
		if request.user != bookmarked.artist:
		    notify.send(request.user, recipient=bookmarked.artist, verb='added to his collection', action_object=bookmarked)
	    except Composition.DoesNotExist:
		# No such user, skip notification.
		pass
	return Response(serializer.data)
    elif request.method == 'POST':
	bookmarks = request.DATA['bookmarks']
	request.user.bookmarks.remove(*bookmarks)
	serializer = BookmarkSerializer(request.user)
	return Response(serializer.data)
Exemple #9
0
 def get_composition(self, pk, request):
     try:
         composition = Composition.objects.get(pk=pk)
         check_object_permissions(request, self.permission_classes, composition)
         return composition
     except Composition.DoesNotExist:
         raise Http404
Exemple #10
0
def remove_all_tags(request, pk, format = None):
    #Try-Except block to check if the composition exists and to check if the request user has permission. 
    try:
	composition = Composition.objects.get(pk=pk)
	check_object_permissions(request, add_tags.cls.permission_classes, request.user)  #Checks for object permission for given request.user from given set of permissions.
    except Composition.DoesNotExist:
	raise Http404 
    composition.tags.clear() #Removes all tags
Exemple #11
0
 def get_composition(self, pk, request):
     try:
         composition = Composition.objects.get(pk=pk)
         check_object_permissions(request, self.permission_classes,
                                  composition)
         return composition
     except Composition.DoesNotExist:
         raise Http404
Exemple #12
0
def remove_tags(request, pk, format=None):
    try:
        composition = Composition.objects.get(pk=pk)
        check_object_permissions(request, add_tags.cls.permission_classes, request.user)
    except Composition.DoesNotExist:
        raise Http404
    tag_list = request.DATA['tagList']
    for tag in tag_list:
        if(tag_exists(tag)):
            composition.tags.remove(tag)
Exemple #13
0
def remove_all_tags(request, pk, format=None):
    #Try-Except block to check if the composition exists and to check if the request user has permission.
    try:
        composition = Composition.objects.get(pk=pk)
        check_object_permissions(
            request, add_tags.cls.permission_classes, request.user
        )  #Checks for object permission for given request.user from given set of permissions.
    except Composition.DoesNotExist:
        raise Http404
    composition.tags.clear()  #Removes all tags
Exemple #14
0
def remove_tags(request, pk, format = None):
    #Try-Except block to check if the composition exists and to check if the request user has permission. 
    try:
	composition = Composition.objects.get(pk=pk)
	check_object_permissions(request, add_tags.cls.permission_classes, request.user)  #Checks for object permission for given request.user from given set of permissions.
    except Composition.DoesNotExist:
	raise Http404    
    tag_list = request.DATA['tagList']
    #Assuming all tag_list items are valid tags as authorized by admins [for Beta version only]
    for tag in tag_list:
	if(tag_exists(tag)):
	    composition.tags.remove(tag) 
Exemple #15
0
def remove_tags(request, pk, format=None):
    #Try-Except block to check if the composition exists and to check if the request user has permission.
    try:
        composition = Composition.objects.get(pk=pk)
        check_object_permissions(
            request, add_tags.cls.permission_classes, request.user
        )  #Checks for object permission for given request.user from given set of permissions.
    except Composition.DoesNotExist:
        raise Http404
    tag_list = request.DATA['tagList']
    #Assuming all tag_list items are valid tags as authorized by admins [for Beta version only]
    for tag in tag_list:
        if (tag_exists(tag)):
            composition.tags.remove(tag)
Exemple #16
0
def reset_password(request, pk, format=None):
    '''
    Changes user password.

    Offloading validation like both values entered in new password fields are same, to frontend.
    '''
    try:
        user = User.objects.get(pk=pk)
    except User.DoesNotExist:
        raise Http404
    
    check_object_permissions(request, reset_password.cls.permission_classes, user)
    
    serializer = PasswordUserSerializer(data=request.DATA, context={'user': user})
    if serializer.is_valid():
	user.set_password(serializer.object['new_password'])
	user.save()
	return Response()
    else:
	return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemple #17
0
def reset_password(request, pk, format=None):
    '''
    Changes user password.

    Offloading validation like both values entered in new password fields are same, to frontend.
    '''
    try:
        user = User.objects.get(pk=pk)
    except User.DoesNotExist:
        raise Http404

    check_object_permissions(request, reset_password.cls.permission_classes,
                             user)

    serializer = PasswordUserSerializer(data=request.DATA,
                                        context={'user': user})
    if serializer.is_valid():
        user.set_password(serializer.object['new_password'])
        user.save()
        return Response()
    else:
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemple #18
0
 def get_user(self, pk, request):
     user = get_object_or_404(User, pk=pk)
     check_object_permissions(request, self.permission_classes, user)
     return user
Exemple #19
0
    def get_user(self, pk, request):
	user = get_object_or_404(User, pk=pk)
	check_object_permissions(request, self.permission_classes, user)
	return user