Fix for deleting books in shelfs (#419)
This commit is contained in:
		
							parent
							
								
									0329306031
								
							
						
					
					
						commit
						07d6ba094b
					
				
							
								
								
									
										46
									
								
								cps/web.py
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								cps/web.py
									
									
									
									
									
								
							| 
						 | 
					@ -2194,29 +2194,37 @@ def remove_from_shelf(shelf_id, book_id):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # if shelf is public and use is allowed to edit shelfs, or if shelf is private and user is owner
 | 
					    # if shelf is public and use is allowed to edit shelfs, or if shelf is private and user is owner
 | 
				
			||||||
    # allow editing shelfs
 | 
					    # allow editing shelfs
 | 
				
			||||||
    if (not shelf.is_public and not shelf.user_id == int(current_user.id)) \
 | 
					    # result   shelf public   user allowed    user owner
 | 
				
			||||||
            or not (shelf.is_public and current_user.role_edit_shelfs()):
 | 
					    #   false        1             0             x
 | 
				
			||||||
 | 
					    #   true         1             1             x
 | 
				
			||||||
 | 
					    #   true         0             x             1
 | 
				
			||||||
 | 
					    #   false        0             x             0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (not shelf.is_public and shelf.user_id == int(current_user.id)) \
 | 
				
			||||||
 | 
					            or (shelf.is_public and current_user.role_edit_shelfs()):
 | 
				
			||||||
 | 
					        book_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id,
 | 
				
			||||||
 | 
					                                                           ub.BookShelf.book_id == book_id).first()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if book_shelf is None:
 | 
				
			||||||
 | 
					            app.logger.info("Book already removed from shelf")
 | 
				
			||||||
 | 
					            if not request.is_xhr:
 | 
				
			||||||
 | 
					                return redirect(url_for('index'))
 | 
				
			||||||
 | 
					            return "Book already removed from shelf", 410
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ub.session.delete(book_shelf)
 | 
				
			||||||
 | 
					        ub.session.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if not request.is_xhr:
 | 
					        if not request.is_xhr:
 | 
				
			||||||
            app.logger.info("Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name)
 | 
					            flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
 | 
				
			||||||
            return redirect(url_for('index'))
 | 
					            return redirect(request.environ["HTTP_REFERER"])
 | 
				
			||||||
        return "Sorry you are not allowed to add a book to the the shelf: %s" % shelf.name, 403
 | 
					        return "", 204
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
    book_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id,
 | 
					        app.logger.info("Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name)
 | 
				
			||||||
                                                       ub.BookShelf.book_id == book_id).first()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if book_shelf is None:
 | 
					 | 
				
			||||||
        app.logger.info("Book already removed from shelf")
 | 
					 | 
				
			||||||
        if not request.is_xhr:
 | 
					        if not request.is_xhr:
 | 
				
			||||||
 | 
					            flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), category="error")
 | 
				
			||||||
            return redirect(url_for('index'))
 | 
					            return redirect(url_for('index'))
 | 
				
			||||||
        return "Book already removed from shelf", 410
 | 
					        return "Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name, 403
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ub.session.delete(book_shelf)
 | 
					 | 
				
			||||||
    ub.session.commit()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if not request.is_xhr:
 | 
					 | 
				
			||||||
        flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
 | 
					 | 
				
			||||||
        return redirect(request.environ["HTTP_REFERER"])
 | 
					 | 
				
			||||||
    return "", 204
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@app.route("/shelf/create", methods=["GET", "POST"])
 | 
					@app.route("/shelf/create", methods=["GET", "POST"])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user