Bugfixes for user import with default locale and default language
Bugfixes from testrun
This commit is contained in:
		
							parent
							
								
									ed26d34961
								
							
						
					
					
						commit
						d8f9e2feb2
					
				
							
								
								
									
										17
									
								
								cps/admin.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								cps/admin.py
									
									
									
									
									
								
							|  | @ -235,8 +235,12 @@ def view_configuration(): | ||||||
|         .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all() |         .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all() | ||||||
|     restrict_columns = calibre_db.session.query(db.Custom_Columns)\ |     restrict_columns = calibre_db.session.query(db.Custom_Columns)\ | ||||||
|         .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all() |         .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all() | ||||||
|  |     languages = calibre_db.speaking_language() | ||||||
|  |     translations = [LC('en')] + babel.list_translations() | ||||||
|     return render_title_template("config_view_edit.html", conf=config, readColumns=read_column, |     return render_title_template("config_view_edit.html", conf=config, readColumns=read_column, | ||||||
|                                  restrictColumns=restrict_columns, |                                  restrictColumns=restrict_columns, | ||||||
|  |                                  languages=languages, | ||||||
|  |                                  translations=translations, | ||||||
|                                  title=_(u"UI Configuration"), page="uiconfig") |                                  title=_(u"UI Configuration"), page="uiconfig") | ||||||
| 
 | 
 | ||||||
| @admi.route("/admin/usertable") | @admi.route("/admin/usertable") | ||||||
|  | @ -514,16 +518,12 @@ def check_valid_restricted_column(column): | ||||||
|     return True |     return True | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| @admi.route("/admin/viewconfig", methods=["POST"]) | @admi.route("/admin/viewconfig", methods=["POST"]) | ||||||
| @login_required | @login_required | ||||||
| @admin_required | @admin_required | ||||||
| def update_view_configuration(): | def update_view_configuration(): | ||||||
|     to_save = request.form.to_dict() |     to_save = request.form.to_dict() | ||||||
| 
 | 
 | ||||||
|     # _config_string = lambda x: config.set_from_dictionary(to_save, x, lambda y: y.strip() if y else y) |  | ||||||
|     # _config_int = lambda x: config.set_from_dictionary(to_save, x, int) |  | ||||||
| 
 |  | ||||||
|     _config_string(to_save, "config_calibre_web_title") |     _config_string(to_save, "config_calibre_web_title") | ||||||
|     _config_string(to_save, "config_columns_to_ignore") |     _config_string(to_save, "config_columns_to_ignore") | ||||||
|     if _config_string(to_save, "config_title_regex"): |     if _config_string(to_save, "config_title_regex"): | ||||||
|  | @ -545,6 +545,8 @@ def update_view_configuration(): | ||||||
|     _config_int(to_save, "config_random_books") |     _config_int(to_save, "config_random_books") | ||||||
|     _config_int(to_save, "config_books_per_page") |     _config_int(to_save, "config_books_per_page") | ||||||
|     _config_int(to_save, "config_authors_max") |     _config_int(to_save, "config_authors_max") | ||||||
|  |     _config_string(to_save, "config_default_language") | ||||||
|  |     _config_string(to_save, "config_default_locale") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     config.config_default_role = constants.selected_roles(to_save) |     config.config_default_role = constants.selected_roles(to_save) | ||||||
|  | @ -1350,6 +1352,8 @@ def _handle_new_user(to_save, content, languages, translations, kobo_support): | ||||||
|                                      languages=languages, title=_(u"Add new user"), page="newuser", |                                      languages=languages, title=_(u"Add new user"), page="newuser", | ||||||
|                                      kobo_support=kobo_support, registered_oauth=oauth_check) |                                      kobo_support=kobo_support, registered_oauth=oauth_check) | ||||||
|     try: |     try: | ||||||
|  |         content.default_language = config.config_default_language | ||||||
|  |         content.locale = config.config_default_locale | ||||||
|         content.allowed_tags = config.config_allowed_tags |         content.allowed_tags = config.config_allowed_tags | ||||||
|         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 | ||||||
|  | @ -1739,9 +1743,8 @@ def ldap_import_create_user(user, user_data): | ||||||
|     content.password = ''  # dummy password which will be replaced by ldap one |     content.password = ''  # dummy password which will be replaced by ldap one | ||||||
|     content.email = useremail |     content.email = useremail | ||||||
|     content.kindle_mail = kindlemail |     content.kindle_mail = kindlemail | ||||||
|     content.kindle_mail = kindlemail |     content.default_language = config.config_default_language | ||||||
|     content.default_language = config.default_language |     content.locale = config.config_default_locale | ||||||
|     content.locale = config.locale |  | ||||||
|     content.sidebar_view = config.config_default_show |     content.sidebar_view = config.config_default_show | ||||||
|     content.allowed_tags = config.config_allowed_tags |     content.allowed_tags = config.config_allowed_tags | ||||||
|     content.denied_tags = config.config_denied_tags |     content.denied_tags = config.config_denied_tags | ||||||
|  |  | ||||||
|  | @ -89,6 +89,8 @@ class _Settings(_Base): | ||||||
| 
 | 
 | ||||||
|     config_default_role = Column(SmallInteger, default=0) |     config_default_role = Column(SmallInteger, default=0) | ||||||
|     config_default_show = Column(SmallInteger, default=constants.ADMIN_USER_SIDEBAR) |     config_default_show = Column(SmallInteger, default=constants.ADMIN_USER_SIDEBAR) | ||||||
|  |     config_default_language = Column(String(3), default="all") | ||||||
|  |     config_default_locale = Column(String(2), default="en") | ||||||
|     config_columns_to_ignore = Column(String) |     config_columns_to_ignore = Column(String) | ||||||
| 
 | 
 | ||||||
|     config_denied_tags = Column(String, default="") |     config_denied_tags = Column(String, default="") | ||||||
|  |  | ||||||
|  | @ -538,6 +538,7 @@ def HandleTagCreate(): | ||||||
|     return make_response(jsonify(str(shelf.uuid)), 201) |     return make_response(jsonify(str(shelf.uuid)), 201) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @csrf.exempt | ||||||
| @kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE", "PUT"]) | @kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE", "PUT"]) | ||||||
| @requires_kobo_auth | @requires_kobo_auth | ||||||
| def HandleTagUpdate(tag_id): | def HandleTagUpdate(tag_id): | ||||||
|  | @ -765,7 +766,7 @@ def create_kobo_tag(shelf): | ||||||
|         ) |         ) | ||||||
|     return {"Tag": tag} |     return {"Tag": tag} | ||||||
| 
 | 
 | ||||||
| 
 | @csrf.exempt | ||||||
| @kobo.route("/v1/library/<book_uuid>/state", methods=["GET", "PUT"]) | @kobo.route("/v1/library/<book_uuid>/state", methods=["GET", "PUT"]) | ||||||
| @requires_kobo_auth | @requires_kobo_auth | ||||||
| def HandleStateRequest(book_uuid): | def HandleStateRequest(book_uuid): | ||||||
|  | @ -950,6 +951,7 @@ def TopLevelEndpoint(): | ||||||
|     return make_response(jsonify({})) |     return make_response(jsonify({})) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @csrf.exempt | ||||||
| @kobo.route("/v1/library/<book_uuid>", methods=["DELETE"]) | @kobo.route("/v1/library/<book_uuid>", methods=["DELETE"]) | ||||||
| @requires_kobo_auth | @requires_kobo_auth | ||||||
| def HandleBookDeletionRequest(book_uuid): | def HandleBookDeletionRequest(book_uuid): | ||||||
|  | @ -976,6 +978,7 @@ def HandleBookDeletionRequest(book_uuid): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # TODO: Implement the following routes | # TODO: Implement the following routes | ||||||
|  | @csrf.exempt | ||||||
| @kobo.route("/v1/library/<dummy>", methods=["DELETE", "GET"]) | @kobo.route("/v1/library/<dummy>", methods=["DELETE", "GET"]) | ||||||
| def HandleUnimplementedRequest(dummy=None): | def HandleUnimplementedRequest(dummy=None): | ||||||
|     log.debug("Unimplemented Library Request received: %s", request.base_url) |     log.debug("Unimplemented Library Request received: %s", request.base_url) | ||||||
|  |  | ||||||
|  | @ -49,6 +49,7 @@ | ||||||
| 
 | 
 | ||||||
|   </div> |   </div> | ||||||
| <form role="form" action="{{ url_for('editbook.edit_book', book_id=book.id) }}" method="post" enctype="multipart/form-data" id="book_edit_frm"> | <form role="form" action="{{ url_for('editbook.edit_book', book_id=book.id) }}" method="post" enctype="multipart/form-data" id="book_edit_frm"> | ||||||
|  |   <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> | ||||||
|   <div class="col-sm-9 col-xs-12"> |   <div class="col-sm-9 col-xs-12"> | ||||||
|     <div class="form-group"> |     <div class="form-group"> | ||||||
|       <label for="book_title">{{_('Book Title')}}</label> |       <label for="book_title">{{_('Book Title')}}</label> | ||||||
|  |  | ||||||
|  | @ -115,6 +115,23 @@ | ||||||
|           <input type="checkbox" name="edit_shelf_role" id="edit_shelf_role" {% if conf.role_edit_shelfs() %}checked{% endif %}> |           <input type="checkbox" name="edit_shelf_role" id="edit_shelf_role" {% if conf.role_edit_shelfs() %}checked{% endif %}> | ||||||
|           <label for="edit_shelf_role">{{_('Allow Editing Public Shelves')}}</label> |           <label for="edit_shelf_role">{{_('Allow Editing Public Shelves')}}</label> | ||||||
|         </div> |         </div> | ||||||
|  |         <div class="form-group"> | ||||||
|  |         <label for="config_default_locale">{{_('Default Language')}}</label> | ||||||
|  |             <select name="config_default_locale" id="config_default_locale" class="form-control"> | ||||||
|  |                 {%  for translation in translations %} | ||||||
|  |                     <option value="{{translation}}" {% if translation|string == conf.config_default_locale %}selected{% endif %}>{{ translation.display_name|capitalize }}</option> | ||||||
|  |                 {% endfor %} | ||||||
|  |             </select> | ||||||
|  |         </div> | ||||||
|  |         <div class="form-group"> | ||||||
|  |           <label for="config_default_language">{{_('Default Visible Language of Books')}}</label> | ||||||
|  |             <select name="config_default_language" id="config_default_language" class="form-control"> | ||||||
|  |                 <option value="all" {% if conf.config_default_language == "all" %}selected{% endif %}>{{ _('Show All') }}</option> | ||||||
|  |                 {%  for language in languages %} | ||||||
|  |                 <option value="{{ language.lang_code }}" {% if conf.config_default_language == language.lang_code %}selected{% endif %}>{{ language.name }}</option> | ||||||
|  |                 {% endfor %} | ||||||
|  |             </select> | ||||||
|  |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
|  |  | ||||||
|  | @ -62,6 +62,7 @@ | ||||||
|                 {% if g.allow_upload %} |                 {% if g.allow_upload %} | ||||||
|                   <li> |                   <li> | ||||||
|                     <form id="form-upload" class="navbar-form" action="{{ url_for('editbook.upload') }}" data-title="{{_('Uploading...')}}" data-footer="{{_('Close')}}" data-failed="{{_('Error')}}" data-message="{{_('Upload done, processing, please wait...')}}" method="post" enctype="multipart/form-data"> |                     <form id="form-upload" class="navbar-form" action="{{ url_for('editbook.upload') }}" data-title="{{_('Uploading...')}}" data-footer="{{_('Close')}}" data-failed="{{_('Error')}}" data-message="{{_('Upload done, processing, please wait...')}}" method="post" enctype="multipart/form-data"> | ||||||
|  |                       <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> | ||||||
|                       <div class="form-group"> |                       <div class="form-group"> | ||||||
|                         <span class="btn btn-default btn-file">{{_('Upload')}}<input id="btn-upload" name="btn-upload" |                         <span class="btn btn-default btn-file">{{_('Upload')}}<input id="btn-upload" name="btn-upload" | ||||||
|                         type="file" accept="{% for format in accept %}.{% if format != ''%}{{format}}{% else %}*{% endif %}{{ ',' if not loop.last }}{% endfor %}" multiple></span> |                         type="file" accept="{% for format in accept %}.{% if format != ''%}{{format}}{% else %}*{% endif %}{{ ',' if not loop.last }}{% endfor %}" multiple></span> | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user