mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
Replace == with and != with not is in all RS code
This commit is contained in:
parent
2ce04ae5de
commit
f27e2bb85e
@ -39,9 +39,9 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
|
||||
xhr.error_html = ''
|
||||
|
||||
def set_error(event):
|
||||
if event == 'timeout':
|
||||
if event is 'timeout':
|
||||
xhr.error_html = str.format(_('Failed to communicate with "{}", timed out after: {} seconds'), xhr.request_path, timeout/1000)
|
||||
elif event == 'abort':
|
||||
elif event is 'abort':
|
||||
xhr.error_html = str.format(_('Failed to communicate with "{}", aborted'), xhr.request_path)
|
||||
else:
|
||||
rtext = xhr.responseText or ''
|
||||
@ -60,9 +60,9 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
|
||||
on_progress(ev.loaded, ul, xhr)
|
||||
|
||||
def complete_callback(end_type, ev):
|
||||
if xhr.status != ok_code and end_type == 'load':
|
||||
if xhr.status is not ok_code and end_type is 'load':
|
||||
end_type = 'error'
|
||||
if end_type != 'load':
|
||||
if end_type is not 'load':
|
||||
set_error(end_type)
|
||||
on_complete(end_type, xhr, ev)
|
||||
|
||||
|
@ -28,8 +28,8 @@ def sort_formats_key(fmt):
|
||||
def get_preferred_format(metadata, output_format, input_formats):
|
||||
formats = (metadata and metadata.formats) or v'[]'
|
||||
formats = [f.toUpperCase() for f in formats]
|
||||
fmt = 'EPUB' if output_format == 'PDF' else output_format
|
||||
if formats.length and formats.indexOf(fmt) == -1:
|
||||
fmt = 'EPUB' if output_format is 'PDF' else output_format
|
||||
if formats.length and formats.indexOf(fmt) is -1:
|
||||
for q in sorted(formats, key=sort_formats_key):
|
||||
if input_formats[q]:
|
||||
fmt = q
|
||||
@ -64,7 +64,7 @@ def render_metadata(mi, interface_data, table, field_list=None):
|
||||
def allowed_fields(field):
|
||||
if str.endswith(field, '_index'):
|
||||
fm = interface_data.field_metadata[field[:-len('_index')]]
|
||||
if fm and fm.datatype == 'series':
|
||||
if fm and fm.datatype is 'series':
|
||||
return False
|
||||
if str.startswith(field, '#'):
|
||||
return True
|
||||
@ -155,7 +155,7 @@ def render_metadata(mi, interface_data, table, field_list=None):
|
||||
for k in keys:
|
||||
idval = val[k]
|
||||
x = url_map[k]
|
||||
if isinstance(x, list) and x.length == 2:
|
||||
if isinstance(x, list) and x.length is 2:
|
||||
td.appendChild(E.a(title=str.format('{}:{}', k, idval), target='_new', href=x[1], x[0]))
|
||||
else:
|
||||
td.appendChild(E.span(k, ':', idval))
|
||||
@ -197,37 +197,37 @@ def render_metadata(mi, interface_data, table, field_list=None):
|
||||
name = fm.name or field
|
||||
datatype = fm.datatype
|
||||
val = mi[field]
|
||||
if field == 'comments' or datatype == 'comments':
|
||||
if field is 'comments' or datatype is 'comments':
|
||||
comments[field] = val
|
||||
return
|
||||
func = None
|
||||
if datatype == 'composite':
|
||||
if datatype is 'composite':
|
||||
func = process_composite
|
||||
elif field == 'formats':
|
||||
elif field is 'formats':
|
||||
func = process_formats
|
||||
elif datatype == 'rating':
|
||||
elif datatype is 'rating':
|
||||
func = process_rating
|
||||
elif field == 'identifiers':
|
||||
elif field is 'identifiers':
|
||||
func = process_identifiers
|
||||
elif field == 'authors':
|
||||
elif field is 'authors':
|
||||
func = process_authors
|
||||
elif field == 'publisher':
|
||||
elif field is 'publisher':
|
||||
func = process_publisher
|
||||
elif field == 'languages':
|
||||
elif field is 'languages':
|
||||
func = process_languages
|
||||
elif datatype == 'datetime':
|
||||
elif datatype is 'datetime':
|
||||
func = process_datetime
|
||||
elif datatype == 'series':
|
||||
elif datatype is 'series':
|
||||
func = process_series
|
||||
if func:
|
||||
func(field, fm, name, val)
|
||||
else:
|
||||
if datatype == 'text' or datatype == 'enumeration':
|
||||
if datatype is 'text' or datatype is 'enumeration':
|
||||
join = fm.is_multiple.list_to_ui if fm.is_multiple else None
|
||||
add_row(name, val, join=join, is_searchable=field)
|
||||
elif datatype == 'bool':
|
||||
elif datatype is 'bool':
|
||||
add_row(name, _('Yes') if val else _('No'))
|
||||
elif datatype == 'int' or datatype == 'float':
|
||||
elif datatype is 'int' or datatype is 'float':
|
||||
fmt = (fm.display or {}).number_format
|
||||
if fmt:
|
||||
val = str.format(fmt, val)
|
||||
@ -251,7 +251,7 @@ def render_metadata(mi, interface_data, table, field_list=None):
|
||||
div = E.div()
|
||||
div.innerHTML = comment
|
||||
table.parentNode.appendChild(div)
|
||||
if i == 0:
|
||||
if i is 0:
|
||||
div.style.marginTop = '2ex'
|
||||
|
||||
|
||||
@ -280,7 +280,7 @@ class BookDetailsPanel:
|
||||
|
||||
@property
|
||||
def is_visible(self):
|
||||
self.container.parentNode.style.display == 'block'
|
||||
self.container.parentNode.style.display is 'block'
|
||||
|
||||
@is_visible.setter
|
||||
def is_visible(self, val):
|
||||
@ -297,7 +297,7 @@ class BookDetailsPanel:
|
||||
self.render_book(book_id)
|
||||
else:
|
||||
self.fetch_metadata(book_id)
|
||||
get_boss().ui.set_button_visibility('random', not book_id or book_id == '0')
|
||||
get_boss().ui.set_button_visibility('random', not book_id or book_id is '0')
|
||||
|
||||
def show_random(self):
|
||||
self.fetch_metadata('0')
|
||||
@ -324,7 +324,7 @@ class BookDetailsPanel:
|
||||
return # Fetching was aborted
|
||||
self.is_fetching = None
|
||||
c = self.container
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
try:
|
||||
data = JSON.parse(xhr.responseText)
|
||||
except Exception as err:
|
||||
@ -334,7 +334,7 @@ class BookDetailsPanel:
|
||||
book_id = data['id']
|
||||
self.interface_data.metadata[book_id] = data
|
||||
self.render_book(book_id)
|
||||
elif end_type != 'abort':
|
||||
elif end_type is not 'abort':
|
||||
clear(c)
|
||||
c.appendChild(E.div(
|
||||
style='margin: 1ex 1em',
|
||||
|
@ -33,8 +33,8 @@ class Boss:
|
||||
data = parse_url_params()
|
||||
set_current_query(data)
|
||||
self.ui.apply_state() # Render the book list
|
||||
if not data.mode or data.mode == 'book_list':
|
||||
if data.panel != self.ui.current_panel:
|
||||
if not data.mode or data.mode is 'book_list':
|
||||
if data.panel is not self.ui.current_panel:
|
||||
self.ui.show_panel(data.panel, push_state=False)
|
||||
setTimeout(def():
|
||||
window.onpopstate = self.onpopstate.bind(self)
|
||||
@ -64,11 +64,11 @@ class Boss:
|
||||
set_current_query(data)
|
||||
mode = data.mode or 'book_list'
|
||||
self.history_count -= 1
|
||||
if mode == 'book_list':
|
||||
if mode is 'book_list':
|
||||
search = data.search or ''
|
||||
if data.panel != self.ui.current_panel:
|
||||
if data.panel is not self.ui.current_panel:
|
||||
self.ui.show_panel(data.panel, push_state=False)
|
||||
if search != self.ui.books_view.interface_data.search_result.query:
|
||||
if search is not self.ui.books_view.interface_data.search_result.query:
|
||||
self.ui.books_view.change_search(search, push_state=False, panel_to_show=data.panel)
|
||||
|
||||
def change_books(self, data):
|
||||
@ -87,13 +87,13 @@ class Boss:
|
||||
if extra_query_data:
|
||||
for k in extra_query_data:
|
||||
query[k] = extra_query_data[k]
|
||||
if self.current_mode == 'book_list':
|
||||
if self.ui.current_panel != self.ui.ROOT_PANEL:
|
||||
if self.current_mode is 'book_list':
|
||||
if self.ui.current_panel is not self.ui.ROOT_PANEL:
|
||||
query.panel = self.ui.current_panel
|
||||
else:
|
||||
query.current_mode = self.current_mode
|
||||
idata = self.interface_data
|
||||
if idata.library_id != idata.default_library:
|
||||
if idata.library_id is not idata.default_library:
|
||||
query.library_id = idata.library_id
|
||||
sq = idata.search_result.query
|
||||
if sq:
|
||||
|
@ -34,7 +34,7 @@ class ItemsView:
|
||||
|
||||
@property
|
||||
def is_visible(self):
|
||||
self.container.style.display == 'block'
|
||||
self.container.style.display is 'block'
|
||||
|
||||
@is_visible.setter
|
||||
def is_visible(self, val):
|
||||
|
@ -188,7 +188,7 @@ class PrefsPanel:
|
||||
|
||||
@property
|
||||
def is_visible(self):
|
||||
self.container.style.display == 'block'
|
||||
self.container.style.display is 'block'
|
||||
|
||||
@is_visible.setter
|
||||
def is_visible(self, val):
|
||||
@ -224,7 +224,7 @@ class PrefsPanel:
|
||||
cls = Choices
|
||||
elif val is True or val is False:
|
||||
cls = CheckBox
|
||||
elif type(val) == 'number':
|
||||
elif type(val) is 'number':
|
||||
cls = SpinBox
|
||||
else:
|
||||
cls = LineEdit
|
||||
|
@ -56,7 +56,7 @@ class SearchPanel:
|
||||
search_button
|
||||
))
|
||||
search_container.firstChild.firstChild.addEventListener('keypress', def(event):
|
||||
if event.keyCode == 13: # Enter
|
||||
if event.keyCode is 13: # Enter
|
||||
search_button.focus()
|
||||
self.execute_search()
|
||||
event.preventDefault(), event.stopPropagation()
|
||||
@ -104,11 +104,11 @@ class SearchPanel:
|
||||
|
||||
def on_data_fetched(self, end_type, xhr, ev):
|
||||
self.currently_loading = None
|
||||
if end_type == 'abort':
|
||||
if end_type is 'abort':
|
||||
return
|
||||
|
||||
parent = self.container.lastChild
|
||||
if parent.lastChild.style.display == 'none':
|
||||
if parent.lastChild.style.display is 'none':
|
||||
parent.firstChild.style.display = 'none'
|
||||
parent.lastChild.style.display = 'block'
|
||||
container = self.tb_container
|
||||
@ -126,7 +126,7 @@ class SearchPanel:
|
||||
child.parent = node
|
||||
process_node(child)
|
||||
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
try:
|
||||
tag_browser_data = JSON.parse(xhr.responseText)
|
||||
except Exception as err:
|
||||
@ -220,7 +220,7 @@ class SearchPanel:
|
||||
|
||||
def search_expression_for_item(self, node, state):
|
||||
item = node.data
|
||||
if item.is_searchable is False or not state or state == 'clear':
|
||||
if item.is_searchable is False or not state or state is 'clear':
|
||||
return ''
|
||||
|
||||
search_state = {'plus':'true', 'plusplus':'.true', 'minus':'false', 'minusminus':'.false'}[state]
|
||||
@ -236,16 +236,16 @@ class SearchPanel:
|
||||
letters_seen = Object.keys(letters_seen)
|
||||
if letters_seen.length:
|
||||
charclass = letters_seen.join('')
|
||||
if category == 'authors':
|
||||
if category is 'authors':
|
||||
expr = str.format(r'author_sort:"~(^[{0}])|(&\s*[{0}])"', charclass)
|
||||
elif category == 'series':
|
||||
elif category is 'series':
|
||||
expr = str.format(r'series_sort:"~^[{0}]"', charclass)
|
||||
else:
|
||||
expr = str.format(r'{0}:"~^[{1}]"', category, charclass)
|
||||
else:
|
||||
expr = str.format('{}:false', category)
|
||||
|
||||
elif category == 'news':
|
||||
elif category is 'news':
|
||||
expr = str.format('tags:"={}"', item.name)
|
||||
|
||||
else:
|
||||
@ -255,8 +255,8 @@ class SearchPanel:
|
||||
expr = '(not ' + expr + ')'
|
||||
return expr
|
||||
|
||||
category = 'tags' if item.category == 'news' else item.category
|
||||
if item.name and item.name[0] == '★':
|
||||
category = 'tags' if item.category is 'news' else item.category
|
||||
if item.name and item.name[0] is '★':
|
||||
# Assume ratings
|
||||
expr = str.format('{}:{}', category, item.name.length)
|
||||
else:
|
||||
@ -266,9 +266,9 @@ class SearchPanel:
|
||||
if not name:
|
||||
return ''
|
||||
name = str.replace(name, '"', r'\"')
|
||||
if name[0] == '.':
|
||||
if name[0] is '.':
|
||||
name = '.' + name
|
||||
if search_state == 'plusplus' or search_state == 'minusminus':
|
||||
if search_state is 'plusplus' or search_state is 'minusminus':
|
||||
name = '.' + name
|
||||
expr = str.format('{}:"={}{}"', category, name, suffix)
|
||||
|
||||
@ -324,7 +324,7 @@ class SearchPanel:
|
||||
(_('Books matching this category'), 'plus'),
|
||||
(_('Books that do not match this category'), 'minus'),
|
||||
]
|
||||
if node.data.is_hierarchical == 5:
|
||||
if node.data.is_hierarchical is 5:
|
||||
items.extend([
|
||||
(_('Books that match this category and all sub-categories'), 'plusplus'),
|
||||
(_('Books that do not match this category or any of its sub-categories'), 'minusminus'),
|
||||
@ -428,7 +428,7 @@ class SearchPanel:
|
||||
{
|
||||
'name': 'hide_empty_categories',
|
||||
'text': _('Hide empty categories (columns)'),
|
||||
'from_storage': def(x): return x.toLowerCase() == 'yes';,
|
||||
'from_storage': def(x): return x.toLowerCase() is 'yes';,
|
||||
'to_storage': def(x): return 'yes' if x else 'no';,
|
||||
'tooltip':_('When checked, calibre will automatically hide any category'
|
||||
' (a column, custom or standard) that has no items to show. For example, some'
|
||||
@ -469,7 +469,7 @@ class SearchPanel:
|
||||
|
||||
@property
|
||||
def is_visible(self):
|
||||
self.container.style.display == 'block'
|
||||
self.container.style.display is 'block'
|
||||
|
||||
@is_visible.setter
|
||||
def is_visible(self, val):
|
||||
|
@ -37,7 +37,7 @@ class TopBar:
|
||||
E.div(style="white-space:nowrap; overflow:hidden; text-overflow: ellipsis; padding-left: 0.5em;"),
|
||||
E.div(style="white-space:nowrap; text-align:right; padding-right: 0.5em;")
|
||||
)
|
||||
if bid == self.bar_id:
|
||||
if bid is self.bar_id:
|
||||
set_css(bar, position='fixed', left='0', top='0', z_index='1')
|
||||
bar.appendChild(E.style(style, type='text/css'))
|
||||
set_css(bar,
|
||||
@ -57,7 +57,7 @@ class TopBar:
|
||||
|
||||
def set_left(self, title='calibre', icon_name='heart', action=None, tooltip='', run_animation=False):
|
||||
self.current_left_data = {'title':title, 'icon_name':icon_name, 'action':action, 'tooltip':tooltip}
|
||||
if icon_name == 'heart':
|
||||
if icon_name is 'heart':
|
||||
if not tooltip:
|
||||
tooltip = _('Donate to support calibre development')
|
||||
|
||||
@ -75,7 +75,7 @@ class TopBar:
|
||||
'margin-left: {0}; font-weight: bold; padding-top: {1}; padding-bottom: {1}; vertical-align: middle', self.SPACING, self.VSPACING)))
|
||||
if bar is self.bar:
|
||||
a = left.firstChild
|
||||
if icon_name == 'heart':
|
||||
if icon_name is 'heart':
|
||||
set_css(a,
|
||||
animation_name=self.throbber_name, animation_duration='1s', animation_timing_function='ease-in-out',
|
||||
animation_iteration_count='5', animation_play_state='running' if run_animation else 'paused'
|
||||
|
@ -77,7 +77,7 @@ def change_library_actions():
|
||||
ans = []
|
||||
ans.subtitle = _('Currently showing the library: ') + interface_data.library_map[interface_data.library_id]
|
||||
for lid in sorted(interface_data.library_map):
|
||||
if lid != interface_data.library_id:
|
||||
if lid is not interface_data.library_id:
|
||||
library_name = interface_data.library_map[lid]
|
||||
ans.append({'title':library_name, 'action':boss.ui.change_library.bind(boss.ui, lid)})
|
||||
return ans
|
||||
@ -153,7 +153,7 @@ class UI:
|
||||
if callable(main_panel.init):
|
||||
panel_data = state.panel_data() if callable(state.panel_data) else state.panel_data
|
||||
main_panel.init(panel_data)
|
||||
if self.current_panel == self.ROOT_PANEL:
|
||||
if self.current_panel is self.ROOT_PANEL:
|
||||
# only run the beating heart animation once
|
||||
window.setTimeout(def(): state.top_bar_state.left_state.run_animation = False;, 10)
|
||||
|
||||
@ -164,7 +164,7 @@ class UI:
|
||||
self.show_panel(self.ROOT_PANEL)
|
||||
|
||||
def replace_panel(self, panel_name, force=False, extra_query_data=None):
|
||||
action_needed = force or panel_name != self.current_panel
|
||||
action_needed = force or panel_name is not self.current_panel
|
||||
if action_needed:
|
||||
self.current_panel = panel_name or self.ROOT_PANEL
|
||||
get_boss().push_state(replace=True, extra_query_data=extra_query_data)
|
||||
@ -172,7 +172,7 @@ class UI:
|
||||
self.apply_state()
|
||||
|
||||
def show_panel(self, panel_name, push_state=True, force=False, extra_query_data=None):
|
||||
action_needed = force or panel_name != self.current_panel
|
||||
action_needed = force or panel_name is not self.current_panel
|
||||
if action_needed:
|
||||
self.current_panel = panel_name or self.ROOT_PANEL
|
||||
if push_state:
|
||||
@ -182,7 +182,7 @@ class UI:
|
||||
|
||||
def refresh_books_view(self):
|
||||
self.books_view.refresh()
|
||||
if self.current_panel == self.ROOT_PANEL:
|
||||
if self.current_panel is self.ROOT_PANEL:
|
||||
self.top_bar.refresh_left()
|
||||
|
||||
def change_library(self, library_id):
|
||||
@ -191,7 +191,7 @@ class UI:
|
||||
'Fetching data from server, please wait') + '…', query=data, extra_data_for_callback={'library_id':library_id})
|
||||
|
||||
def library_changed(self, end_type, xhr, ev):
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
boss = get_boss()
|
||||
boss.interface_data.library_id = xhr.extra_data_for_callback.library_id
|
||||
try:
|
||||
@ -201,7 +201,7 @@ class UI:
|
||||
return error_dialog(_('Could not change library'), err + '', details=err.stack)
|
||||
self.show_panel(self.ROOT_PANEL)
|
||||
window.scrollTo(0, 0)
|
||||
elif end_type != 'abort':
|
||||
elif end_type is not 'abort':
|
||||
msg = xhr.error_html
|
||||
error_dialog(_('Could not change library'), msg)
|
||||
|
||||
|
@ -54,12 +54,12 @@ class BooksView:
|
||||
self.update_fetching_status()
|
||||
|
||||
def set_view_mode(self, mode='cover_grid'):
|
||||
if self.mode == mode:
|
||||
if self.mode is mode:
|
||||
return
|
||||
if mode not in v"['cover_grid']":
|
||||
mode = 'cover_grid'
|
||||
self.mode = mode
|
||||
if mode == 'cover_grid':
|
||||
if mode is 'cover_grid':
|
||||
self.render_book = self.cover_grid_item.bind(self)
|
||||
self.init_grid = self.init_cover_grid.bind(self)
|
||||
self.clear()
|
||||
@ -75,7 +75,7 @@ class BooksView:
|
||||
|
||||
@property
|
||||
def is_visible(self):
|
||||
self.container.style.display == 'block'
|
||||
self.container.style.display is 'block'
|
||||
|
||||
@is_visible.setter
|
||||
def is_visible(self, val):
|
||||
@ -136,7 +136,7 @@ class BooksView:
|
||||
return # Fetching was aborted
|
||||
self.is_fetching = None
|
||||
self.update_fetching_status()
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
try:
|
||||
data = JSON.parse(xhr.responseText)
|
||||
for key in data.metadata:
|
||||
@ -147,7 +147,7 @@ class BooksView:
|
||||
self.interface_data.search_result = data.search_result
|
||||
except Exception as err:
|
||||
error_dialog(_('Could not get more books'), _('Server returned an invalid response'), err.stack or err.toString())
|
||||
elif end_type != 'abort':
|
||||
elif end_type is not 'abort':
|
||||
error_dialog(_('Could not get more books'), xhr.error_html)
|
||||
|
||||
# Cover grid {{{
|
||||
@ -194,16 +194,16 @@ class BooksView:
|
||||
def sort_panel_data(self, create_item):
|
||||
current_sorted_field = str.partition(self.interface_data.search_result.sort, ',')[0]
|
||||
current_sorted_field_order = str.partition(self.interface_data.search_result.sort_order, ',')[0]
|
||||
new_sort_order = 'desc' if current_sorted_field_order == 'asc' else 'asc'
|
||||
if current_sorted_field == 'date':
|
||||
new_sort_order = 'desc' if current_sorted_field_order is 'asc' else 'asc'
|
||||
if current_sorted_field is 'date':
|
||||
current_sorted_field = 'timestamp'
|
||||
ans = []
|
||||
ans.subtitle = _('Change how the list of books is sorted')
|
||||
for field, name in self.interface_data.sortable_fields:
|
||||
subtitle = icon_name = None
|
||||
if field == current_sorted_field:
|
||||
if field is current_sorted_field:
|
||||
subtitle = _('Reverse current sort order')
|
||||
icon_name = 'sort-amount-asc' if current_sorted_field_order == 'asc' else 'sort-amount-desc'
|
||||
icon_name = 'sort-amount-asc' if current_sorted_field_order is 'asc' else 'sort-amount-desc'
|
||||
action = self.change_sort.bind(self, field, new_sort_order)
|
||||
else:
|
||||
action = self.change_sort.bind(self, field, None)
|
||||
@ -215,7 +215,7 @@ class BooksView:
|
||||
key = 'sort-order-for-' + field
|
||||
sd = get_session_data()
|
||||
order = order or sd.get(key, 'asc')
|
||||
order = 'asc' if order == 'asc' else 'desc'
|
||||
order = 'asc' if order is 'asc' else 'desc'
|
||||
sd.set(key, order)
|
||||
sr = self.interface_data.search_result
|
||||
sort = field + '.' + order + ',' + sr.sort + '.' + sr.order
|
||||
@ -224,7 +224,7 @@ class BooksView:
|
||||
'Fetching data from server, please wait') + '…', query=data)
|
||||
|
||||
def sort_change_completed(self, end_type, xhr, ev):
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
boss = get_boss()
|
||||
try:
|
||||
data = JSON.parse(xhr.responseText)
|
||||
@ -233,7 +233,7 @@ class BooksView:
|
||||
return error_dialog(_('Could not change sort order'), err + '', details=err.stack)
|
||||
boss.ui.show_panel(boss.ui.ROOT_PANEL)
|
||||
window.scrollTo(0, 0)
|
||||
elif end_type != 'abort':
|
||||
elif end_type is not 'abort':
|
||||
error_dialog(_('Could not change sort order'), xhr.error_html)
|
||||
|
||||
def change_search(self, query, push_state=True, panel_to_show=None):
|
||||
@ -245,7 +245,7 @@ class BooksView:
|
||||
'Fetching data from server, please wait') + '…', query=data, extra_data_for_callback={'push_state':push_state, 'panel_to_show': panel_to_show})
|
||||
|
||||
def search_change_completed(self, end_type, xhr, ev):
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
boss = get_boss()
|
||||
try:
|
||||
data = JSON.parse(xhr.responseText)
|
||||
@ -256,9 +256,9 @@ class BooksView:
|
||||
ed = xhr.extra_data_for_callback
|
||||
boss.ui.show_panel(ed.panel_to_show or boss.ui.ROOT_PANEL, push_state=ed.push_state)
|
||||
window.scrollTo(0, 0)
|
||||
elif end_type != 'abort':
|
||||
elif end_type is not 'abort':
|
||||
msg = xhr.error_html
|
||||
if xhr.status == 400 and str.startswith(xhr.responseText, 'Invalid search expression:'):
|
||||
if xhr.status is 400 and str.startswith(xhr.responseText, 'Invalid search expression:'):
|
||||
msg = _('The search expression could not be parsed: ') + xhr.responseText
|
||||
error_dialog(_('Could not change search query'), msg)
|
||||
|
||||
|
@ -6,9 +6,9 @@ UNDEFINED_DATE = Date('0101-01-01T00:00:00+00:00')
|
||||
def is_date_undefined(date):
|
||||
dy, uy = date.getUTCFullYear(), UNDEFINED_DATE.getUTCFullYear()
|
||||
return dy < uy or (
|
||||
dy == uy and
|
||||
date.getUTCMonth() == UNDEFINED_DATE.getUTCMonth() and
|
||||
date.getUTCDate() == UNDEFINED_DATE.getUTCDate())
|
||||
dy is uy and
|
||||
date.getUTCMonth() is UNDEFINED_DATE.getUTCMonth() and
|
||||
date.getUTCDate() is UNDEFINED_DATE.getUTCDate())
|
||||
|
||||
# format_date() {{{
|
||||
|
||||
@ -38,51 +38,51 @@ def fd_format_hour(dt, ampm, hr, as_utc):
|
||||
h = dt.getUTCHours() if as_utc else dt.getHours()
|
||||
if ampm:
|
||||
h = h % 12
|
||||
return h.toString() if hr.length == 1 else str.format('{:02d}', h)
|
||||
return h.toString() if hr.length is 1 else str.format('{:02d}', h)
|
||||
|
||||
def fd_format_minute(dt, ampm, min, as_utc):
|
||||
m = dt.getUTCMinutes() if as_utc else dt.getMinutes()
|
||||
return m.toString() if min.length == 1 else str.format('{:02d}', m)
|
||||
return m.toString() if min.length is 1 else str.format('{:02d}', m)
|
||||
|
||||
def fd_format_second(dt, ampm, min, as_utc):
|
||||
s = dt.getUTCSeconds() if as_utc else dt.getSeconds()
|
||||
return s.toString() if min.length == 1 else str.format('{:02d}', s)
|
||||
return s.toString() if min.length is 1 else str.format('{:02d}', s)
|
||||
|
||||
def fd_format_ampm(dt, ampm, ap, as_utc):
|
||||
h = dt.getUTCHours() if as_utc else dt.getHours()
|
||||
ans = 'am' if h < 12 else 'pm'
|
||||
return ans if ap == 'ap' else ans.toUpperCase()
|
||||
return ans if ap is 'ap' else ans.toUpperCase()
|
||||
|
||||
def fd_format_day(dt, ampm, dy, as_utc):
|
||||
d = dt.getUTCDate() if as_utc else dt.getDate()
|
||||
if dy.length == 1:
|
||||
if dy.length is 1:
|
||||
return d.toString()
|
||||
if dy.length == 2:
|
||||
if dy.length is 2:
|
||||
return str.format('{:02d}', d)
|
||||
if supports_locales:
|
||||
options = {'weekday': ('short' if dy.length == 3 else 'long')}
|
||||
options = {'weekday': ('short' if dy.length is 3 else 'long')}
|
||||
if as_utc:
|
||||
options['timeZone'] = 'UTC'
|
||||
return dt.toLocaleString(undefined, options)
|
||||
w = dt.getUTCDay() if as_utc else dt.getDay()
|
||||
return lcdata['abday' if dy.length == 3 else 'day'][(w + 1) % 7]
|
||||
return lcdata['abday' if dy.length is 3 else 'day'][(w + 1) % 7]
|
||||
|
||||
def fd_format_month(dt, ampm, mo, as_utc):
|
||||
m = dt.getUTCMonth() if as_utc else dt.getMonth()
|
||||
if mo.length == 1:
|
||||
if mo.length is 1:
|
||||
return (m + 1).toString()
|
||||
if mo.length == 2:
|
||||
if mo.length is 2:
|
||||
return str.format('{:02d}', m + 1)
|
||||
if supports_locales:
|
||||
options = {'month': {1:'numeric', 2:'2-digit', 3:'short', 4:'long'}[mo.length] or 'long'}
|
||||
if as_utc:
|
||||
options['timeZone'] = 'UTC'
|
||||
return dt.toLocaleString(undefined, options)
|
||||
return lcdata['abmon' if mo.length == 3 else 'mon'][m]
|
||||
return lcdata['abmon' if mo.length is 3 else 'mon'][m]
|
||||
|
||||
def fd_format_year(dt, ampm, yr, as_utc):
|
||||
y = dt.getUTCFullYear() if as_utc else dt.getFullYear()
|
||||
if yr.length == 2:
|
||||
if yr.length is 2:
|
||||
return str.format('{:02d}', y % 100)
|
||||
return str.format('{:04d}', y)
|
||||
|
||||
@ -99,13 +99,13 @@ fd_function_index = {
|
||||
|
||||
def test_fd(date, fmt, ans):
|
||||
q = format_date(date, fmt, as_utc=True)
|
||||
if q != ans:
|
||||
raise Exception(str.format('Failed to format {} with {}: {} != {}', date, fmt, q, ans))
|
||||
if q is not ans:
|
||||
raise Exception(str.format('Failed to format {} with {}: {} is not {}', date, fmt, q, ans))
|
||||
|
||||
def format_date(date=None, fmt='dd MMM yyyy', as_utc=False):
|
||||
fmt = fmt or 'dd MMM yyyy'
|
||||
ampm = 'ap' in fmt.toLowerCase()
|
||||
if type(date) == 'string':
|
||||
if type(date) is 'string':
|
||||
date = Date(date)
|
||||
date = date or Date()
|
||||
if is_date_undefined(date):
|
||||
@ -121,7 +121,7 @@ def format_date(date=None, fmt='dd MMM yyyy', as_utc=False):
|
||||
)
|
||||
# }}}
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ is '__main__':
|
||||
test_fd('1101-01-01T09:00:00+00:00', 'hh h', '09 9')
|
||||
test_fd('1101-01-01T09:05:01+00:00', 'hh h mm m ss s ap AP yy yyyy', '09 9 05 5 01 1 am AM 01 1101')
|
||||
test_fd('2001-01-02T09:00:00+00:00', 'M MM MMM MMMM', '1 01 Jan January')
|
||||
|
@ -82,12 +82,12 @@ class ModalContainer:
|
||||
return modal_id
|
||||
|
||||
def hide_modal(self, modal_id):
|
||||
if self.current_modal is not None and self.current_modal.id == modal_id:
|
||||
if self.current_modal is not None and self.current_modal.id is modal_id:
|
||||
self.clear_current_modal()
|
||||
else:
|
||||
doomed_modal = None
|
||||
for i, modal in enumerate(self.modals):
|
||||
if modal.id == modal_id:
|
||||
if modal.id is modal_id:
|
||||
doomed_modal = i
|
||||
break
|
||||
if doomed_modal is not None:
|
||||
@ -102,7 +102,7 @@ class ModalContainer:
|
||||
except:
|
||||
self.current_modal = None
|
||||
raise
|
||||
if c.style.display == 'none':
|
||||
if c.style.display is 'none':
|
||||
set_css(c, display='block')
|
||||
c.firstChild.lastChild.style.visibility = 'visible' if self.current_modal.show_close else 'hidden'
|
||||
|
||||
@ -110,7 +110,7 @@ class ModalContainer:
|
||||
self.current_modal = None
|
||||
c = self.modal_container
|
||||
clear(c.firstChild.firstChild)
|
||||
if self.modals.length == 0:
|
||||
if self.modals.length is 0:
|
||||
set_css(c, display='none')
|
||||
else:
|
||||
self.update()
|
||||
|
@ -39,7 +39,7 @@ class FakeStorage:
|
||||
return self.data[key]
|
||||
|
||||
def setItem(self, key, value):
|
||||
if type(value) != 'string':
|
||||
if type(value) is not 'string':
|
||||
value = JSON.stringify(value)
|
||||
self.data[key] = value
|
||||
|
||||
@ -153,7 +153,7 @@ class UserSessionData(SessionData):
|
||||
def push_to_server(self):
|
||||
if self.has_changes:
|
||||
ajax_send('interface-data/set-session-data', self.changes, def(end_type, xhr, ev):
|
||||
if end_type != 'load':
|
||||
if end_type is not 'load':
|
||||
console.error('Failed to send session data to server: ' + xhr.error_html)
|
||||
)
|
||||
self.changes = {}
|
||||
|
@ -13,7 +13,7 @@ from book_list.globals import set_session_data
|
||||
def on_library_loaded(end_type, xhr, ev):
|
||||
p = document.getElementById('page_load_progress')
|
||||
p.parentNode.removeChild(p)
|
||||
if end_type == 'load':
|
||||
if end_type is 'load':
|
||||
interface_data = JSON.parse(xhr.responseText)
|
||||
if interface_data.translations:
|
||||
install(interface_data.translations)
|
||||
@ -22,7 +22,7 @@ def on_library_loaded(end_type, xhr, ev):
|
||||
Boss(interface_data)
|
||||
else:
|
||||
p = E.p(style='color:red; font-weight: bold; font-size:1.5em')
|
||||
if xhr.status == 401:
|
||||
if xhr.status is 401:
|
||||
p.innerHTML = _('You are not authorized to view this site')
|
||||
else:
|
||||
p.innerHTML = xhr.error_html
|
||||
@ -50,7 +50,7 @@ def load_book_list():
|
||||
def on_load():
|
||||
ep = window.calibre_entry_point
|
||||
v'delete window.calibre_entry_point'
|
||||
if ep == 'book list':
|
||||
if ep is 'book list':
|
||||
print('calibre loaded at:', Date().toString())
|
||||
load_book_list()
|
||||
|
||||
|
@ -22,7 +22,7 @@ def debounce(func, wait, immediate=False):
|
||||
func.apply(context, args)
|
||||
|
||||
def to_utf8(string):
|
||||
if type(TextEncoder) == 'function':
|
||||
if type(TextEncoder) is 'function':
|
||||
return TextEncoder('utf-8').encode(string)
|
||||
escstr = encodeURIComponent(string)
|
||||
binstr = escstr.replace(/%([0-9A-F]{2})/g, def(match, p1):
|
||||
@ -61,7 +61,7 @@ _roman = list(zip(
|
||||
))
|
||||
|
||||
def roman(num):
|
||||
if num <= 0 or num >= 4000 or int(num) != num:
|
||||
if num <= 0 or num >= 4000 or int(num) is not num:
|
||||
return num + ''
|
||||
result = []
|
||||
for d, r in _roman:
|
||||
@ -71,13 +71,13 @@ def roman(num):
|
||||
return result.join('')
|
||||
|
||||
def fmt_sidx(val, fmt='{:.2f}', use_roman=True):
|
||||
if val is undefined or val is None or val == '':
|
||||
if val is undefined or val is None or val is '':
|
||||
return '1'
|
||||
if int(val) == float(val):
|
||||
if int(val) is float(val):
|
||||
if use_roman:
|
||||
return roman(val)
|
||||
return int(val) + ''
|
||||
return str.format(fmt, float(val))
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ is '__main__':
|
||||
print(fmt_sidx(10), fmt_sidx(1.2))
|
||||
|
Loading…
x
Reference in New Issue
Block a user