Prevent 2 public shelfs with same names due to changing public property
This commit is contained in:
parent
47f5e2ffb4
commit
3e0d8763c3
|
@ -248,12 +248,13 @@ def create_edit_shelf(shelf, page_title, page, shelf_id=False):
|
||||||
if not current_user.role_edit_shelfs() and to_save.get("is_public") == "on":
|
if not current_user.role_edit_shelfs() and to_save.get("is_public") == "on":
|
||||||
flash(_(u"Sorry you are not allowed to create a public shelf"), category="error")
|
flash(_(u"Sorry you are not allowed to create a public shelf"), category="error")
|
||||||
return redirect(url_for('web.index'))
|
return redirect(url_for('web.index'))
|
||||||
shelf.is_public = 1 if to_save.get("is_public") else 0
|
is_public = 1 if to_save.get("is_public") else 0
|
||||||
if config.config_kobo_sync:
|
if config.config_kobo_sync:
|
||||||
shelf.kobo_sync = True if to_save.get("kobo_sync") else False
|
shelf.kobo_sync = True if to_save.get("kobo_sync") else False
|
||||||
shelf_title = to_save.get("title", "")
|
shelf_title = to_save.get("title", "")
|
||||||
if check_shelf_is_unique(shelf, shelf_title, shelf_id):
|
if check_shelf_is_unique(shelf, shelf_title, is_public, shelf_id):
|
||||||
shelf.name = shelf_title
|
shelf.name = shelf_title
|
||||||
|
shelf.is_public = is_public
|
||||||
if not shelf_id:
|
if not shelf_id:
|
||||||
shelf.user_id = int(current_user.id)
|
shelf.user_id = int(current_user.id)
|
||||||
ub.session.add(shelf)
|
ub.session.add(shelf)
|
||||||
|
@ -284,12 +285,12 @@ def create_edit_shelf(shelf, page_title, page, shelf_id=False):
|
||||||
sync_only_selected_shelves=sync_only_selected_shelves)
|
sync_only_selected_shelves=sync_only_selected_shelves)
|
||||||
|
|
||||||
|
|
||||||
def check_shelf_is_unique(shelf, title, shelf_id=False):
|
def check_shelf_is_unique(shelf, title, is_public, shelf_id=False):
|
||||||
if shelf_id:
|
if shelf_id:
|
||||||
ident = ub.Shelf.id != shelf_id
|
ident = ub.Shelf.id != shelf_id
|
||||||
else:
|
else:
|
||||||
ident = true()
|
ident = true()
|
||||||
if shelf.is_public == 1:
|
if is_public == 1:
|
||||||
is_shelf_name_unique = ub.session.query(ub.Shelf) \
|
is_shelf_name_unique = ub.session.query(ub.Shelf) \
|
||||||
.filter((ub.Shelf.name == title) & (ub.Shelf.is_public == 1)) \
|
.filter((ub.Shelf.name == title) & (ub.Shelf.is_public == 1)) \
|
||||||
.filter(ident) \
|
.filter(ident) \
|
||||||
|
|
Loading…
Reference in New Issue
Block a user