mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05: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