Ejemplo n.º 1
0
def add_new_pin(request):
    context = {'error':''}
    if not request.user.is_authenticated():
        context = {'error':'You need to login first!'}
        return render(request, 'login.html', context)
		
    curr_user = User.objects.get(username=request.user)
    boards = Board.objects.filter(user= curr_user)
    if len(boards)<1:
        context = {'error':'You do not have any boards => Please create a board!'}
    #    return redirect('addboard')

    context = {'boardContent':'1','boards':boards}
	
    if (not request.POST):
        return render(request,'addpin.html', context)

    description = strip_tags(request.POST.get('description'))
    if not description:
        context = {'error':'Please enter a description for your pin!','boardContent':'1','boards':boards}
        return render(request, 'addpin.html', context)

    board = request.POST.get('board')
    if not board:
        context = {'error':'You need to specify a board','boardContent':'1','boards':boards}
        return render(request, 'uploadpin.html', context)
		
    link = strip_tags(request.POST.get('link'))
    if not link:
        # Add this as a text note #
        pin = Pin(data_type='text', num_likes=1, data_text=description)
    else:
        pin = Pin(data_type='media', num_likes=1, data_local=link, data_text=description)
		
    try:
        fd = urllib.urlopen(link)
    except:
        context = {'error':'Please input a valid url!','boardContent':'1','boards':boards}
        return render(request, 'addpin.html', context)

    if not ( str(link).endswith('.png') or str(link).endswith('.jpg') or str(link).endswith('.gif') ):
        context = {'error':'Image type not supported.','boardContent':'1','boards':boards}
        return render(request, 'addpin.html', context)
    try:
        curr_user = User.objects.get(username=request.user.username)
        curr_board = Board.objects.get(pk=board);
        curr_user_details = UserDetails.objects.get(user=curr_user)
        curr_user_details.num_pins = curr_user_details.num_pins + 1
        curr_user_details.save()
        pin = Pin(data_type='image', num_likes=1, user=curr_user, board_title=curr_board.title, data_local = link, data_text=description)
        pin.save()
        pin.board.add(curr_board)
    except:
        context = {'error':'Url length exceeded.!','boardContent':'1','boards':boards}
        return render(request, 'addpin.html', context)
		
    return redirect('personal')
Ejemplo n.º 2
0
def upload_new_pin(request):
    context = {'error':''}
    if not request.user.is_authenticated():
        context = {'error':'You need to login first!'}
        return render(request, 'login.html', context)
    
    curr_user = User.objects.get(username=request.user)
    boards = Board.objects.filter(user= curr_user)
    if len(boards)<1:
        context = {'error':'You do not have any boards => Please create a board!'}
        #return redirect('addboard')

    context = {'boardContent':'1','boards':boards}

    if (not request.POST):
		return render(request,'uploadpin.html',context)

    # get description fromm form check description validity
    description = strip_tags(request.POST.get('description'))
    if not description:
        context = {'error':'Please enter a description for your pin!','boardContent':'1','boards':boards}
        return render(request, 'uploadpin.html', context)

    # get the board to get to
    board = request.POST.get('board')
    if not board:
        context = {'error':'You need to specify a board','boardContent':'1','boards':boards}
        return render(request, 'uploadpin.html', context)
	
    # get the uploaded file	
    uploaded_file = request.FILES.get('pinfile')
    if (uploaded_file.size>(10**6)):
        context = {'error':'BoardShare does not permit Pin sizes over 1MB - Sorry!','boardContent':'1','boards':boards}
        return render(request, 'uploadpin.html', context)

    # if the image file cannot be open, then it is not a valid image; image is stored in media root
    try:
        im = PImage.open( uploaded_file )
    except:
        context = {'error':'Uploaded File is not a valid image type - Please Try Again!','boardContent':'1','boards':boards}
        return render(request, 'uploadpin.html', context)

    # update userdetail with number of pins
    curr_user = User.objects.get(username=request.user.username)
    curr_board = Board.objects.get(pk=board);
    curr_user_details = UserDetails.objects.get(user=curr_user)
    curr_user_details.num_pins = curr_user_details.num_pins + 1
    curr_user_details.save()

    ## move pin to static folder for rendering ##

    pin = Pin(data_type='uploaded_image', num_likes=1, user=curr_user, board_title=curr_board.title, data_local = uploaded_file, data_text=description)
    pin.save()
    pin.board.add(curr_board)

    return redirect('personal')