mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-30 21:40:00 +00:00
Merge branch 'master' of https://github.com/janeczku/calibre-web
This commit is contained in:
commit
7d586b3745
10
cps/admin.py
10
cps/admin.py
@ -1349,7 +1349,8 @@ def _handle_new_user(to_save, content, languages, translations, kobo_support):
|
|||||||
content.denied_tags = config.config_denied_tags
|
content.denied_tags = config.config_denied_tags
|
||||||
content.allowed_column_value = config.config_allowed_column_value
|
content.allowed_column_value = config.config_allowed_column_value
|
||||||
content.denied_column_value = config.config_denied_column_value
|
content.denied_column_value = config.config_denied_column_value
|
||||||
content.kobo_only_shelves_sync = 0 # No default value for kobo sync shelf setting
|
# No default value for kobo sync shelf setting
|
||||||
|
content.kobo_only_shelves_sync = to_save.get("kobo_only_shelves_sync", 0) == "on"
|
||||||
ub.session.add(content)
|
ub.session.add(content)
|
||||||
ub.session.commit()
|
ub.session.commit()
|
||||||
flash(_(u"User '%(user)s' created", user=content.name), category="success")
|
flash(_(u"User '%(user)s' created", user=content.name), category="success")
|
||||||
@ -1368,6 +1369,13 @@ def _delete_user(content):
|
|||||||
if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN,
|
if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN,
|
||||||
ub.User.id != content.id).count():
|
ub.User.id != content.id).count():
|
||||||
if content.name != "Guest":
|
if content.name != "Guest":
|
||||||
|
# Delete all books in shelfs belonging to user, all shelfs of user, downloadstat of user, read status
|
||||||
|
# and user itself
|
||||||
|
ub.session.query(ub.ReadBook).filter(ub.User.id == ub.ReadBook.user_id).delete()
|
||||||
|
ub.session.query(ub.Downloads).filter(ub.User.id == ub.Downloads.user_id).delete()
|
||||||
|
for us in ub.session.query(ub.Shelf).filter(ub.User.id == ub.Shelf.user_id):
|
||||||
|
ub.session.query(ub.BookShelf).filter(us.id == ub.BookShelf.shelf).delete()
|
||||||
|
ub.session.query(ub.Shelf).filter(ub.User.id == ub.Shelf.user_id).delete()
|
||||||
ub.session.query(ub.User).filter(ub.User.id == content.id).delete()
|
ub.session.query(ub.User).filter(ub.User.id == content.id).delete()
|
||||||
ub.session_commit()
|
ub.session_commit()
|
||||||
log.info(u"User {} deleted".format(content.name))
|
log.info(u"User {} deleted".format(content.name))
|
||||||
|
@ -329,11 +329,12 @@ def delete_book_file(book, calibrepath, book_format=None):
|
|||||||
except (IOError, OSError) as e:
|
except (IOError, OSError) as e:
|
||||||
log.error("Deleting authorpath for book %s failed: %s", book.id, e)
|
log.error("Deleting authorpath for book %s failed: %s", book.id, e)
|
||||||
return True, None
|
return True, None
|
||||||
else:
|
|
||||||
log.error("Deleting book %s failed, book path not valid: %s", book.id, book.path)
|
log.error("Deleting book %s from database only, book path in database not valid: %s",
|
||||||
return True, _("Deleting book %(id)s, book path not valid: %(path)s",
|
book.id, book.path)
|
||||||
id=book.id,
|
return True, _("Deleting book %(id)s from database only, book path in database not valid: %(path)s",
|
||||||
path=book.path)
|
id=book.id,
|
||||||
|
path=book.path)
|
||||||
|
|
||||||
|
|
||||||
# Moves files in file storage during author/title rename, or from temp dir to file storage
|
# Moves files in file storage during author/title rename, or from temp dir to file storage
|
||||||
@ -382,7 +383,7 @@ def update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepa
|
|||||||
# os.unlink(os.path.normcase(os.path.join(dir_name, file)))
|
# os.unlink(os.path.normcase(os.path.join(dir_name, file)))
|
||||||
# change location in database to new author/title path
|
# change location in database to new author/title path
|
||||||
localbook.path = os.path.join(new_authordir, new_titledir).replace('\\','/')
|
localbook.path = os.path.join(new_authordir, new_titledir).replace('\\','/')
|
||||||
except OSError as ex:
|
except (OSError) as ex:
|
||||||
log.error("Rename title from: %s to %s: %s", path, new_path, ex)
|
log.error("Rename title from: %s to %s: %s", path, new_path, ex)
|
||||||
log.debug(ex, exc_info=True)
|
log.debug(ex, exc_info=True)
|
||||||
return _("Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s",
|
return _("Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s",
|
||||||
@ -397,7 +398,7 @@ def update_dir_structure_file(book_id, calibrepath, first_author, orignal_filepa
|
|||||||
file_format.name = new_name
|
file_format.name = new_name
|
||||||
if not orignal_filepath and len(os.listdir(os.path.dirname(path))) == 0:
|
if not orignal_filepath and len(os.listdir(os.path.dirname(path))) == 0:
|
||||||
shutil.rmtree(os.path.dirname(path))
|
shutil.rmtree(os.path.dirname(path))
|
||||||
except OSError as ex:
|
except (OSError) as ex:
|
||||||
log.error("Rename file in path %s to %s: %s", new_path, new_name, ex)
|
log.error("Rename file in path %s to %s: %s", new_path, new_name, ex)
|
||||||
log.debug(ex, exc_info=True)
|
log.debug(ex, exc_info=True)
|
||||||
return _("Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s",
|
return _("Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s",
|
||||||
|
@ -169,6 +169,7 @@ def HandleSyncRequest():
|
|||||||
.order_by(ub.ArchivedBook.last_modified)
|
.order_by(ub.ArchivedBook.last_modified)
|
||||||
.join(ub.BookShelf, db.Books.id == ub.BookShelf.book_id)
|
.join(ub.BookShelf, db.Books.id == ub.BookShelf.book_id)
|
||||||
.join(ub.Shelf)
|
.join(ub.Shelf)
|
||||||
|
.filter(ub.Shelf.user_id == current_user.id)
|
||||||
.filter(ub.Shelf.kobo_sync)
|
.filter(ub.Shelf.kobo_sync)
|
||||||
.distinct()
|
.distinct()
|
||||||
)
|
)
|
||||||
@ -247,10 +248,11 @@ def HandleSyncRequest():
|
|||||||
changed_reading_states = changed_reading_states.join(ub.BookShelf,
|
changed_reading_states = changed_reading_states.join(ub.BookShelf,
|
||||||
ub.KoboReadingState.book_id == ub.BookShelf.book_id)\
|
ub.KoboReadingState.book_id == ub.BookShelf.book_id)\
|
||||||
.join(ub.Shelf)\
|
.join(ub.Shelf)\
|
||||||
|
.filter(current_user.id == ub.Shelf.user_id)\
|
||||||
.filter(ub.Shelf.kobo_sync,
|
.filter(ub.Shelf.kobo_sync,
|
||||||
or_(
|
or_(
|
||||||
func.datetime(ub.KoboReadingState.last_modified) > sync_token.reading_state_last_modified,
|
func.datetime(ub.KoboReadingState.last_modified) > sync_token.reading_state_last_modified,
|
||||||
ub.BookShelf.date_added > sync_token.books_last_modified
|
func.datetime(ub.BookShelf.date_added) > sync_token.books_last_modified
|
||||||
)).distinct()
|
)).distinct()
|
||||||
else:
|
else:
|
||||||
changed_reading_states = changed_reading_states.filter(
|
changed_reading_states = changed_reading_states.filter(
|
||||||
@ -668,10 +670,10 @@ def sync_shelves(sync_token, sync_results, only_kobo_shelves=False):
|
|||||||
|
|
||||||
for shelf in ub.session.query(ub.Shelf).outerjoin(ub.BookShelf).filter(
|
for shelf in ub.session.query(ub.Shelf).outerjoin(ub.BookShelf).filter(
|
||||||
or_(func.datetime(ub.Shelf.last_modified) > sync_token.tags_last_modified,
|
or_(func.datetime(ub.Shelf.last_modified) > sync_token.tags_last_modified,
|
||||||
ub.BookShelf.date_added > sync_token.tags_last_modified),
|
func.datetime(ub.BookShelf.date_added) > sync_token.tags_last_modified),
|
||||||
ub.Shelf.user_id == current_user.id,
|
ub.Shelf.user_id == current_user.id,
|
||||||
*extra_filters
|
*extra_filters
|
||||||
).distinct().order_by(func.datetime(ub.Shelf.last_modified).asc()):
|
).distinct().order_by(func.datetime(ub.Shelf.last_modified).asc()): # .columns(ub.Shelf):
|
||||||
if not shelf_lib.check_shelf_view_permissions(shelf):
|
if not shelf_lib.check_shelf_view_permissions(shelf):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user