mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-01 19:17:02 -04:00 
			
		
		
		
	1) add two tweaks controlling what custom fields the content server displays
2) add & cleanup some field_metadata methods
This commit is contained in:
		
							parent
							
								
									97e2c838d0
								
							
						
					
					
						commit
						8b9b64a8e6
					
				| @ -145,6 +145,24 @@ add_new_book_tags_when_importing_books = False | ||||
| # Set the maximum number of tags to show per book in the content server | ||||
| max_content_server_tags_shown=5 | ||||
| 
 | ||||
| # Set custom metadata fields that the content server will or will not display. | ||||
| # content_server_will_display is a list of custom fields to be displayed. | ||||
| # content_server_wont_display is a list of custom fields not to be displayed. | ||||
| # wont_display has priority over will_display. | ||||
| # The special value '*' means all custom fields. | ||||
| # Defaults: | ||||
| #    content_server_will_display = ['*'] | ||||
| #    content_server_wont_display = [''] | ||||
| # Examples: | ||||
| # To display only the custom fields #mytags and #genre: | ||||
| #   content_server_will_display = ['#mytags', '#genre'] | ||||
| #   content_server_wont_display = [''] | ||||
| # To display all fields except #mycomments: | ||||
| #   content_server_will_display = ['*'] | ||||
| #   content_server_wont_display['#mycomments'] | ||||
| content_server_will_display = ['*'] | ||||
| content_server_wont_display = [''] | ||||
| 
 | ||||
| 
 | ||||
| # Set the maximum number of sort 'levels' that calibre will use to resort the | ||||
| # library after certain operations such as searches or device insertion. Each | ||||
|  | ||||
| @ -132,7 +132,7 @@ class BooksModel(QAbstractTableModel): # {{{ | ||||
| 
 | ||||
|     def set_database(self, db): | ||||
|         self.db = db | ||||
|         self.custom_columns = self.db.field_metadata.get_custom_field_metadata() | ||||
|         self.custom_columns = self.db.field_metadata.custom_field_metadata() | ||||
|         self.column_map = list(self.orig_headers.keys()) + \ | ||||
|                           list(self.custom_columns) | ||||
|         def col_idx(name): | ||||
|  | ||||
| @ -554,6 +554,12 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): | ||||
|     def search_term_to_field_key(self, term): | ||||
|         return self.field_metadata.search_term_to_key(term) | ||||
| 
 | ||||
|     def custom_field_metadata(self): | ||||
|         return self.field_metadata.custom_field_metadata() | ||||
| 
 | ||||
|     def all_metadata(self): | ||||
|         return self.field_metadata.all_metadata() | ||||
| 
 | ||||
|     def metadata_for_field(self, key): | ||||
|         return self.field_metadata[key] | ||||
| 
 | ||||
|  | ||||
| @ -411,7 +411,7 @@ class FieldMetadata(dict): | ||||
|             l[k] = self._tb_cats[k] | ||||
|         return l | ||||
| 
 | ||||
|     def get_custom_field_metadata(self): | ||||
|     def custom_field_metadata(self): | ||||
|         l = {} | ||||
|         for k in self._tb_cats: | ||||
|             if self._tb_cats[k]['is_custom']: | ||||
|  | ||||
| @ -7,7 +7,7 @@ __docformat__ = 'restructuredtext en' | ||||
| 
 | ||||
| import os | ||||
| 
 | ||||
| from calibre.utils.config import Config, StringConfig, config_dir | ||||
| from calibre.utils.config import Config, StringConfig, config_dir, tweaks | ||||
| 
 | ||||
| 
 | ||||
| listen_on = '0.0.0.0' | ||||
| @ -46,6 +46,16 @@ def server_config(defaults=None): | ||||
|                 'to disable grouping.')) | ||||
|     return c | ||||
| 
 | ||||
| def custom_fields_to_display(db): | ||||
|     ckeys = db.custom_field_keys() | ||||
|     yes_fields = set(tweaks['content_server_will_display']) | ||||
|     no_fields = set(tweaks['content_server_wont_display']) | ||||
|     if '*' in yes_fields: | ||||
|         yes_fields = set(ckeys) | ||||
|     if '*' in no_fields: | ||||
|         no_fields = set(ckeys) | ||||
|     return frozenset(yes_fields - no_fields) | ||||
| 
 | ||||
| def main(): | ||||
|     from calibre.library.server.main import main | ||||
|     return main() | ||||
|  | ||||
| @ -13,6 +13,7 @@ from lxml import html | ||||
| from lxml.html.builder import HTML, HEAD, TITLE, LINK, DIV, IMG, BODY, \ | ||||
|         OPTION, SELECT, INPUT, FORM, SPAN, TABLE, TR, TD, A, HR | ||||
| 
 | ||||
| from calibre.library.server import custom_fields_to_display | ||||
| from calibre.library.server.utils import strftime, format_tag_string | ||||
| from calibre.ebooks.metadata import fmt_sidx | ||||
| from calibre.constants import __appname__ | ||||
| @ -197,7 +198,7 @@ class MobileServer(object): | ||||
|             self.sort(items, sort, (order.lower().strip() == 'ascending')) | ||||
| 
 | ||||
|         CFM = self.db.field_metadata | ||||
|         CKEYS = [key for key in sorted(CFM.get_custom_fields(), | ||||
|         CKEYS = [key for key in sorted(custom_fields_to_display(self.db), | ||||
|              cmp=lambda x,y: cmp(CFM[x]['name'].lower(), | ||||
|                                  CFM[y]['name'].lower()))] | ||||
|         # This method uses its own book dict, not the Metadata dict. The loop | ||||
|  | ||||
| @ -17,6 +17,7 @@ import routes | ||||
| from calibre.constants import __appname__ | ||||
| from calibre.ebooks.metadata import fmt_sidx | ||||
| from calibre.library.comments import comments_to_html | ||||
| from calibre.library.server import custom_fields_to_display | ||||
| from calibre.library.server.utils import format_tag_string | ||||
| from calibre import guess_type | ||||
| from calibre.utils.ordered_dict import OrderedDict | ||||
| @ -277,7 +278,7 @@ class AcquisitionFeed(NavFeed): | ||||
|             db): | ||||
|         NavFeed.__init__(self, id_, updated, version, offsets, page_url, up_url) | ||||
|         CFM = db.field_metadata | ||||
|         CKEYS = [key for key in sorted(CFM.get_custom_fields(), | ||||
|         CKEYS = [key for key in sorted(custom_fields_to_display(db), | ||||
|                  cmp=lambda x,y: cmp(CFM[x]['name'].lower(), | ||||
|                                      CFM[y]['name'].lower()))] | ||||
|         for item in items: | ||||
|  | ||||
| @ -11,6 +11,7 @@ import cherrypy | ||||
| from lxml.builder import ElementMaker | ||||
| from lxml import etree | ||||
| 
 | ||||
| from calibre.library.server import custom_fields_to_display | ||||
| from calibre.library.server.utils import strftime, format_tag_string | ||||
| from calibre.ebooks.metadata import fmt_sidx | ||||
| from calibre.constants import preferred_encoding | ||||
| @ -94,7 +95,7 @@ class XMLServer(object): | ||||
|             c = kwargs.pop('comments') | ||||
| 
 | ||||
|             CFM = self.db.field_metadata | ||||
|             CKEYS = [key for key in sorted(CFM.get_custom_fields(), | ||||
|             CKEYS = [key for key in sorted(custom_fields_to_display(self.db), | ||||
|                  cmp=lambda x,y: cmp(CFM[x]['name'].lower(), | ||||
|                                      CFM[y]['name'].lower()))] | ||||
|             custcols = [] | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user