mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Fix #2043 (Multiuser kobo sync with restrict to shelfs working)
Sync only selected shelfs is stored correct on creating user
This commit is contained in:
		
							
								
								
									
										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.allowed_column_value = config.config_allowed_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.commit() | ||||
|         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, | ||||
|                                         ub.User.id != content.id).count(): | ||||
|         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_commit() | ||||
|             log.info(u"User {} deleted".format(content.name)) | ||||
|   | ||||
| @@ -169,6 +169,7 @@ def HandleSyncRequest(): | ||||
|                 .order_by(ub.ArchivedBook.last_modified) | ||||
|                 .join(ub.BookShelf, db.Books.id == ub.BookShelf.book_id) | ||||
|                 .join(ub.Shelf) | ||||
|                 .filter(ub.Shelf.user_id == current_user.id) | ||||
|                 .filter(ub.Shelf.kobo_sync) | ||||
|                 .distinct() | ||||
|         ) | ||||
| @@ -247,10 +248,11 @@ def HandleSyncRequest(): | ||||
|         changed_reading_states = changed_reading_states.join(ub.BookShelf, | ||||
|                                                              ub.KoboReadingState.book_id == ub.BookShelf.book_id)\ | ||||
|             .join(ub.Shelf)\ | ||||
|             .filter(current_user.id == ub.Shelf.user_id)\ | ||||
|             .filter(ub.Shelf.kobo_sync, | ||||
|                     or_( | ||||
|                         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() | ||||
|     else: | ||||
|         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( | ||||
|         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, | ||||
|         *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): | ||||
|             continue | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ozzie Isaacs
					Ozzie Isaacs