mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Admin can now force full sync for users (fix for #2993
This commit is contained in:
		
							
								
								
									
										21
									
								
								cps/admin.py
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								cps/admin.py
									
									
									
									
									
								
							| @@ -916,11 +916,15 @@ def list_restriction(res_type, user_id): | ||||
|  | ||||
| @admi.route("/ajax/fullsync", methods=["POST"]) | ||||
| @login_required | ||||
| def ajax_fullsync(): | ||||
|     count = ub.session.query(ub.KoboSyncedBooks).filter(current_user.id == ub.KoboSyncedBooks.user_id).delete() | ||||
|     message = _("{} sync entries deleted").format(count) | ||||
|     ub.session_commit(message) | ||||
|     return Response(json.dumps([{"type": "success", "message": message}]), mimetype='application/json') | ||||
| def ajax_self_fullsync(): | ||||
|     return do_full_kobo_sync(current_user.id) | ||||
|  | ||||
|  | ||||
| @admi.route("/ajax/fullsync/<int:userid>", methods=["POST"]) | ||||
| @login_required | ||||
| @admin_required | ||||
| def ajax_fullsync(userid): | ||||
|     return do_full_kobo_sync(userid) | ||||
|  | ||||
|  | ||||
| @admi.route("/ajax/pathchooser/") | ||||
| @@ -930,6 +934,13 @@ def ajax_pathchooser(): | ||||
|     return pathchooser() | ||||
|  | ||||
|  | ||||
| def do_full_kobo_sync(userid): | ||||
|     count = ub.session.query(ub.KoboSyncedBooks).filter(userid == ub.KoboSyncedBooks.user_id).delete() | ||||
|     message = _("{} sync entries deleted").format(count) | ||||
|     ub.session_commit(message) | ||||
|     return Response(json.dumps([{"type": "success", "message": message}]), mimetype='application/json') | ||||
|  | ||||
|  | ||||
| def check_valid_read_column(column): | ||||
|     if column != "0": | ||||
|         if not calibre_db.session.query(db.CustomColumns).filter(db.CustomColumns.id == column) \ | ||||
|   | ||||
| @@ -621,8 +621,12 @@ $(function() { | ||||
|            "btnfullsync", | ||||
|             "GeneralDeleteModal", | ||||
|             $(this).data('value'), | ||||
|             function(value){ | ||||
|                 path = getPath() + "/ajax/fullsync" | ||||
|             function(userid) { | ||||
|                 if (userid) { | ||||
|                     path = getPath() + "/ajax/fullsync/" + userid | ||||
|                 } else { | ||||
|                     path = getPath() + "/ajax/fullsync" | ||||
|                 } | ||||
|                 $.ajax({ | ||||
|                     method:"post", | ||||
|                     url: path, | ||||
|   | ||||
| @@ -67,7 +67,7 @@ | ||||
|       <div class="btn btn-danger" id="config_delete_kobo_token" data-value="{{ content.id }}" data-remote="false" {% if not content.remote_auth_token.first() %} style="display: none;" {% endif %}>{{_('Delete')}}</div> | ||||
|     </div> | ||||
|     <div class="form-group col"> | ||||
|       <div class="btn btn-default" id="kobo_full_sync" data-value="{{ content.id }}" {% if not content.remote_auth_token.first() %} style="display: none;" {% endif %}>{{_('Force full kobo sync')}}</div> | ||||
|       <div class="btn btn-default" id="kobo_full_sync" data-value="{% if current_user.role_admin() %}{{ content.id }}{% else %}0{% endif %}" {% if not content.remote_auth_token.first() %} style="display: none;" {% endif %}>{{_('Force full kobo sync')}}</div> | ||||
|     </div> | ||||
|     {% endif %} | ||||
|     <div class="col-sm-6"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Ozzie Isaacs
					Ozzie Isaacs