Documentación de la API para las herramientas de modificación de libros electrónicos¶
Las herramientas de modificación de libros electrónicos consisten en un objeto calibre.ebooks.oeb.polish.container.Container
que representa un libro como colección de archivos HTML y de recursos, y varias herramientas que pueden usarse para realizar diversas operaciones sobre el contenedor. Todas las herramientas están bajo la forma de funciones a nivel de módulo, en los distintos módulos calibre.ebooks.oeb.polish.*
.
Se obtiene un objeto contenedor para un libro en una ruta como esta:
from calibre.ebooks.oeb.polish.container import get_container
container = get_container('Path to book file', tweak_mode=True)
Si está escribiendo un complemento para el editor de libros electrónicos, puede obtener el contenedor actual para el libro que se está modificando de este modo:
from calibre.gui2.tweak_book import current_container
container = current_container()
if container is None:
report_error # No book has been opened yet
El objeto contenedor¶
- class calibre.ebooks.oeb.polish.container.Container(rootpath, opfpath, log, clone_data=None)[fuente]¶
Un contenedor representa un libro electrónico abierto como una carpeta con archivos más un archivo opf. Hay varios conceptos importantes:
La carpeta raíz. Ésta es la base del libro electrónico. Todos los archivos del libro se encuentran en esta carpeta o en sus subcarpetas.
Nombres: Son rutas a los archivos del libro con respecto a la carpeta raíz. Siempre contienen separadores POSIX, sin comillas. Pueden considerarse como identificadores canónicos para los archivos del libro. La mayoría de los métodos en el objeto contenedor trabajan con nombres. Los nombres están siempre en la forma normalizada Unicode NFC.
Clones: el objeto contenedor soporta clonación eficiente en disco, que se utiliza para implementar hitos en el editor de libros electrónicos. Para que esto funcione, nunca se debe acceder a los archivos del sistema de archivos directamente. En su lugar, debe usarse
raw_data()
oopen()
para leer o escribir en los archivos que integran el libro.
Al convertir entre hrefs y nombres utilice los métodos suministrados por esta clase, éstos asumen que todas las hrefs están entre comillas.
- abspath_to_name(fullpath, root=None)[fuente]¶
Convierte una ruta absoluta en un nombre canónico con respecto a
root
- Parámetros:
root – La carpeta base. De manera predeterminada se usa la raíz del objeto contenedor.
- add_file(name, data, media_type=None, spine_index=None, modify_name_if_needed=False, process_manifest_item=None)[fuente]¶
Añade un archivo a este contenedor. Se crean automáticamente las entradas para el archivo en el manifiesto OPF y el lomo (si el archivo es un documento de texto)
- add_name_to_manifest(name, process_manifest_item=None)[fuente]¶
Añade una entrada al manifiesto para un archivo con el nombre especificado. Devuelve el id del manifiesto.
- add_properties(name, *properties)[fuente]¶
Añade las propiedades especificadas (
properties
) al elemento del manifiesto identificado porname
.
- apply_unique_properties(name, *properties)[fuente]¶
Se asegura de que las propiedades especificadas (properties) estás establecidas sólo en el elemento del manifiesto identificado por name. Pueda usarse None como name para eliminar la propiedad de todos los elementos.
- book_type = 'oeb'¶
El tipo de libro (epub para archivos EPUB o azw3 para archivos AZW3)
- commit(outpath=None, keep_parsed=False)[fuente]¶
Almacena todos los objetos procesados modificados en el sistema de archivos y escribe el archivo del libro en outpath.
- Parámetros:
output – La ruta de acceso donde se escribe el archivo del libro. Si es None, se usa la ruta del archivo original.
keep_parsed – Si es True, la representación procesada de los elementos almacenados se mantiene en memoria.
- commit_item(name, keep_parsed=False)[fuente]¶
Almacena un objeto procesado en el disco (se serializa y escribe en el archivo subyacente). Si
keep_parsed
es True la representación procesada se mantiene en el caché. Véase también:parsed()
- dirty(name)[fuente]¶
Marca el objeto analizado correspondiente a
nombre
como sucio. Véase tambiénparsed()
.
- exists(name)[fuente]¶
True si y sólo si existe un archivo o carpeta que corresponde con el nombre canónico
name
. Tenga en cuenta que esta función sufre de las limitaciones del sistema operativo subyacente, en particular la distinción o no entre mayúsculas y minúsculas. En un sistema operative que no distingue entre mayúsculas y minúsculas, esta función devuelve True incluso siname
y el archivo en el sistema de archivos difieren en mayúsculas y minúsculas. Véase tambiénhas_name()
.
- filesize(name)[fuente]¶
Devuelve el tamaño en bytes del archivo representado por el nombre canónico
name
. Gestiona automáticamente objectos procesados modificados. Véase tambiénparsed()
.
- generate_item(name, id_prefix=None, media_type=None, unique_href=True)[fuente]¶
Añade un elemento al manifiesto con href derivado del
name
dado. Asegura la unicidad del href y del id automáticamente. Devuelve el elemento generado.
- get_file_path_for_processing(name, allow_modification=True)[fuente]¶
Parecido a open() pero devuelve una ruta de archivo en lugar de un objeto de archivo abierto.
- property guide_type_map¶
Mapa de tipo de guía a nombre canónico
- has_name(name)[fuente]¶
Devuelve True si y sólo si existe un archivo con el mismo nombre canónico que el
name
especificado. A diferencia deexists()
, este método siempre distingue mayúsculas y minúsculas.
- href_to_name(href, base=None)[fuente]¶
Convierte un
href
(relativo abase
) a un nombre.base
debe ser un nombre o None, en cuyo caso se usa self.root.
- insert_into_xml(parent, item, index=None)[fuente]¶
Inserta
item
enparent
(o lo añade al final siindex
es None), arreglando la sangría. Sólo funciona con elementos con cierre incorporado.
- is_dir = False¶
Si este contenedor representa un libro descomprimido (un directorio)
- iterlinks(name, get_line_numbers=True)[fuente]¶
Itera sobre todos los enlaces en
name
. Siget_line_numbers
es True, los resultados producidos son de la forma (enlace, número_de_línea, desplazamiento). Donde «número_de_línea» es número de línea en el que aparece el enlace y «desplazamiente» es el número de caracteres desde el inicio de la línea. Tenga en cuenta que el desplazamiento puede de hecho abarcar varias líneas si no es cero.
- make_name_unique(name)[fuente]¶
Se asegura de que
name
no existe ya en este libro. Si existe, devuelve una versión modificada que no exista.
- manifest_has_name(name)[fuente]¶
Devuelve True si el manifiesto tiene una entrada correspondiente a
name
- property manifest_id_map¶
Correspondencia entre id del manifiesto y nombres canónicos
- manifest_items_of_type(predicate)[fuente]¶
Los nombres de todos los elementos del manifiesto cuyo media-type coincide con predicate. predicate puede ser un conjunto, una lista, un texto o una función que toma un único argumento, que se ejecutará con el media-type.
- manifest_items_with_property(property_name)[fuente]¶
Todos los elementos del manifiesto que tienen la propiedad especificada
- property manifest_type_map¶
Correspondencia entre media-type del manifiesto y lista de nombres canónicos de cada media-type
- property mi¶
Los metadatos de este libro como un objeto Metadata. Tenga en cuenta que este objeto se construye al vuelo cada vez que se solicita la propiedad, por lo que debe usarse con moderación.
- name_to_abspath(name)[fuente]¶
Convierte un nombre canónico en una ruta de acceso absoluta acorde al sistema operativo
- name_to_href(name, base=None)[fuente]¶
Convierte un nombre a un href relativo a la base, que debe ser un nombre o None, en cuyo caso self.root se toma como la base
- property names_that_must_not_be_changed¶
Conjunto de nombres que nunca deben cambiarse. Depende del formato de archivo del libro electrónico.
- property names_that_must_not_be_removed¶
Conjunto de nombres que nunca deben borrarse del contenedor. Depende del formato de archivo del libro electrónico.
- property names_that_need_not_be_manifested¶
Conjunto de nombres que pueden estar ausentes del manifiesto. Depende del formato de archivo del libro electrónico.
- open(name, mode='rb')[fuente]¶
Abre el archivo apuntado por
name
para lectura o escritura directa. Tenga en cuenta que esto almacenará el archivo si se modifica y lo eliminará del caché de procesamiento. Debe acabar con este archivo antes de acceder de nuevo a la versión procesada u ocurrirán cosas malas.
- property opf¶
El archivo OPF analizado
- opf_get_or_create(name)[fuente]¶
Método práctico que devuelve el primer elemento XML con el nombre especificado (
name
) o lo crea bajo el elemento opf:package y luego lo devuelve, si no existe previamente.
- property opf_version¶
La versión establecida en el elemento <package> del OPF
- property opf_version_parsed¶
La versión establecida en el elemento <package> del OPF, como una tupla de enteros
- opf_xpath(expr)[fuente]¶
Método práctico para evaluar una expresión XPath en el archivo OPF, tiene los prefijos de espacio de nombres «opf:» y «dc:» predefinidos.
- parsed(name)[fuente]¶
Devuelve una representación procesada del archivo especificado por
name
. Para archivos HTML y XML, devuelve un árbol lxml. Para archivos CSS devuelve una hoja de estilos css_parser. Tenga en cuenta que los objetos procesados se mantienen en caché para mejorar el rendimiento. Si hace algún cambio en el objeto procesado, debe ejecutardirty()
para que el contenedor sepa que tiene que actualizar el caché. Véase tambiénreplace()
.
- raw_data(name, decode=True, normalize_to_nfc=True)[fuente]¶
Devuelve el contenido en bruto correspondiente al archivo especificado por su
name
- Parámetros:
decode – Si es True y el archivo tiene un tipo MIME basado en texto, lo descodifica y devuelve un objeto unicode en lugar de bytes en bruto.
normalize_to_nfc – Si es True el objeto Unicode devuelto se normaliza a la norma NFC, como requieren los formatos de archivo EPUB y AZW3.
- relpath(path, base=None)[fuente]¶
Convierte una ruta absoluta (con separadores de sistema operativo) a una ruta relativa a
base
(de manera predeterminada, self.root). La ruta relativa no es un nombre. Useabspath_to_name()
para obtener un nombre.
- remove_from_spine(spine_items, remove_if_no_longer_in_spine=True)[fuente]¶
Elimina los elementos especificados (por nombre canónico) del lomo. Si
remove_if_no_longer_in_spine
es True, los elementos también se borran del libro, no sólo del lomo.
- remove_from_xml(item)[fuente]¶
Elimina
item
del elemento superior, arreglando la sangría (sólo funciona con elementos con cierre incorporado)
- remove_item(name, remove_from_guide=True)[fuente]¶
Elimina el elemento identificado por
name
de este contenedor. Esto elimina todas las referencias al elemento del manifiesto, guía y lomo del OPF, así como de cualquier caché interno.
- rename(current_name, new_name)[fuente]¶
Cambia el nombre de un archivo de
current_name
anew_name
. Cambia automáticamente la base de todos los enlaces en el archivo si cambia la carpeta en que se encuentra el archivo. Tenga en cuenta, no obstante, que no se actualizan los enlaces en otros archivos que puedan hacer referencia a éste. Esto es así por motivos de rendimiento, tales actualizaciones deben hacerse una sola vez en masa.
- replace(name, obj)[fuente]¶
Sustituye el objeto procesado correspondiente a
name
porobj
, que debe ser un objeto similar, es decir, un árbol lxml para archivos HTML o XML o una hoja de estilos css_parser para archivos CSS.
- replace_links(name, replace_func)[fuente]¶
Sustituye todos los enlaces en
name
usandoreplace_func
, que debe ser un objeto ejecutable que acepte un URL y devuelva el URL sustituido. También debe tener un atributoreplaced
que sea True si se ha efectuado alguna sustitución. Pueden crearse tales objetos ejecutables de forma práctica usando las clasesLinkReplacer
yLinkRebaser
.
- serialize_item(name)[fuente]¶
Convierte un objeto analizado (identificado por su nombre canónico) en una cadena de bytes. Vea
parsed()
.
- set_spine(spine_items)[fuente]¶
Establece el lomo como
spine_items
, dondespine_items
es un objeto iterable de la forma (nombre, lineal). Se producirá un error si alguno de los nombres no está presente en el manifiesto.
- property spine_items¶
Un iterador que proporciona la ruta de acceso para cada elemento del lomo de los libros. Véase también:
spine_iter
yspine_items
.
- property spine_iter¶
Un iterador que proporciona elemento, nombre, es_lineal para cada elemento del lomo de los libros.
elemento
es el elemento lxml,nombre
es el nombre canónico del archivo yes_lineal
es True si el elemento es lineal. Véase también:spine_names
yspine_items
.
- property spine_names¶
Un iterador que proporciona nombre y es_lineal para cada elemento del lomo de los libros. Véase también:
spine_iter
yspine_items
.
Gestionar los archivos dentro de un contenedor¶
- calibre.ebooks.oeb.polish.replace.replace_links(container, link_map, frag_map=<function <lambda>>, replace_in_opf=False)[fuente]¶
Sustituye enlaces a archivos en el contenedor. Iterará sobre todos los archivos en el contenedor y cambiará los enlaces especificados en ellos.
- Parámetros:
link_map – Un mapa de nombre canónico antiguo a nombre canónico nuevo. Por ejemplo:
{'images/antiguo.png': 'images/nuevo.png'}
frag_map – Un objeto ejecutable que toma dos argumentos
(name, anchor)
y devuelve un punto de anclaje. Esto es útil si tiene que cambiar los puntos de anclaje en archivos HTML. De manera predeterminada, no hace nada.replace_in_opf – Si es False, no se sustituyen los enlaces en el archivo OPF.
- calibre.ebooks.oeb.polish.replace.rename_files(container, file_map)[fuente]¶
Cambia el nombre de archivos en el contenedor, actualizando automáticamente actualizando todos los enlaces a que apunten a ellos.
- Parámetros:
file_map – Un mapo de nombres canónicos antiguo a nombre canónico nuevo, por ejemplo:
{'text/capitulo1.html': 'capitulo1.html'}
.
- calibre.ebooks.oeb.polish.replace.get_recommended_folders(container, names)[fuente]¶
Devuelve las carpetas recomendadas para los nombres de archivo dados. La recomendación se basa en dónde se encuentra la mayoría de los archivos del mismo tipo en el contenedor. Si no hay archivos de un tipo concreto, la carpeta recomendada es la que contiene el archivo OPF.
Presentación mejorada y corrección automática de errores¶
- calibre.ebooks.oeb.polish.pretty.fix_html(container, raw)[fuente]¶
Corrige cualquier error de procesado en el HTML representado como un texto en
raw
. La corrección se realiza usando el algoritmo de procesado HTML5.
- calibre.ebooks.oeb.polish.pretty.fix_all_html(container)[fuente]¶
Corrige cualquer error de procesado en todos los archivos HTML del contenedor. La corrección ser realiza usando el algoritmo de procesado HTML5.
- calibre.ebooks.oeb.polish.pretty.pretty_html(container, name, raw)[fuente]¶
Redistribuye el HTML representado como un texto en
raw
- calibre.ebooks.oeb.polish.pretty.pretty_css(container, name, raw)[fuente]¶
Redistribuye el CSS representado como un texto en
raw
Gestionar las sobrecubiertas de los libros¶
Dividir y combinar archivos¶
- calibre.ebooks.oeb.polish.split.split(container, name, loc_or_xpath, before=True, totals=None)[fuente]¶
Divide el archivo especificado por
name
en la ubicación especificada porloc_or_xpath
. La división migra automáticamente todos los enlaces y referencias a los archivos afectados.- Parámetros:
loc_or_xpath – Debería ser una expresión XPath como «//h:div[@id=»dividir_aqui»]». También puede ser un loc, que se usa internamente para ejecutar la división en el panel de vista previa.
before – Si es True, la división ocurre antes del elemento identificado, en caso contrario ocurre después.
totals – Usado internamente
- calibre.ebooks.oeb.polish.split.multisplit(container, name, xpath, before=True)[fuente]¶
Divide el archivo especificado en múltiples ubicaciones (todas las etiquetas que coincidan con la expresión XPath especificada). Véase también
split()
. La división migra automáticamente todos los enlaces y referencias a los archivos afectados.- Parámetros:
before – Si es True las divisiones se producen antes del elemento identificado, en caso contrario se producen después.
- calibre.ebooks.oeb.polish.split.merge(container, category, names, master)[fuente]¶
Combina los archivos especificados en un único archivo, migrando automáticamente todos los enlaces y referencias a los archivos afectados. Los archivos deben ser todos HTML o todos CSS.
- Parámetros:
category – Debe ser
'text'
para archivos HTML o'styles'
para archivos CSSnames – La lista de archivos para combinar.
master – Cuál de los archivos combinados es el archivo maestro, es decir, el archivo que se mantendrá después del proceso.
Gestionar portadas¶
- calibre.ebooks.oeb.polish.cover.set_cover(container, cover_path, report=None, options=None)[fuente]¶
Establece la imagen a la que apunta
cover_path
como la portada del libro.- Parámetros:
cover_path – La ruta absoluta a un archivo de imagen o el nombre canónico de una imagen en el libro. Si usa una imagen del libro, debe especificar también
options
, ver más abajo.report – Un objeto ejecutable opcional que toma un solo argumento. Se ejecutará con información sobre las tareas que se llevan a cabo.
options – None o un diccionario que controla cómo se establece la portada. El diccionario puede tener entradas: keep_aspect: True o False (mantiene la proporción de las portadas en EPUB) no_svg: True o False (Usa un envoltorio de portada SVG en la página de título EPUB) existing: True o False (
cover_path
se refiere a una imagen existente en el libro)
Trabajar con CSS¶
- calibre.ebooks.oeb.polish.fonts.change_font(container, old_name, new_name=None)[fuente]¶
Cambia un tipo de letra de
old_name
anew_name
. Modifica todas las ocasiones en que aparece el tipo de letra en hojas de estilo, etiquetas estilo y atributos de estilo. Siold_name
se refiere a un tipo de letr incrustado, se elimina. Puede establecernew_name
como None para eliminar el tipo de letra en lugar de cambiarlo.
- calibre.ebooks.oeb.polish.css.remove_unused_css(container, report=None, remove_unused_classes=False, merge_rules=False, merge_rules_with_identical_properties=False, remove_unreferenced_sheets=False)[fuente]¶
Elimina todas las reglas CSS no utilizadas en el libro. Una regla CSS sin usar es una que no coincide con ningún contenido real.
- Parámetros:
report – Un objeto ejecutable opcional que toma un único argumento. Se ejecuta con información sobre las operaciones que se lleva a cabo.
remove_unused_classes – Si es True, también se eliminan los atributos de clase del HTML que no correspondan a ninguna regla CSS.
merge_rules – Si es True, se combinan las reglas con selectores idénticos.
merge_rules_with_identical_properties – Si es True, se combinan las reglas con propiedades idénticas.
remove_unreferenced_sheets – Si es True, se eliminan las hojas de estilos que no tienen referencias en otros archivos
- calibre.ebooks.oeb.polish.css.filter_css(container, properties, names=())[fuente]¶
Elimina las propiedades CSS especificadas de todas las reglas CSS del libro.
- Parámetros:
properties – Conjunto de propiedades para eliminar. Por ejemplo:
{'font-family', 'color'}
.names – Los archivos en los que se eliminan las propiedades. De manera predeterminada, todos los archivos HTML y CSS del libro.
Trabajar con el índice¶
- calibre.ebooks.oeb.polish.toc.from_xpaths(container, xpaths, prefer_title=False)[fuente]¶
Genera un índice a partir de una lista de expresiones XPath. Cada expresión de la lista corresponde a un nivel del índice generado. Por ejemplo:
['//h:h1', '//h:h2', '//h:h3']
generará un índice de tres niveles a partir de las etiquetas<h1>
,<h2>
y<h3>
.
- calibre.ebooks.oeb.polish.toc.from_links(container)[fuente]¶
Genera un índice a partir de los enlaces del libro.
Herramienta para modificar libro¶
- class calibre.gui2.tweak_book.plugin.Tool[fuente]¶
Bases:
object
La clase básica para las herramientas individuales en un complemento para modificar libros. Algunos miembros útiles incluyen:
self.plugin
: Una referencia al objetocalibre.customize.Plugin
al que pertenece esta herramienta.self.
boss
self.
gui
Métodos que deben reemplazarse en subclases:
- name = None¶
Especifique un nombre único que se utilizará como clave
- allowed_in_toolbar = True¶
Si es True, el usuario puede colocar esta herramienta en la barra de herramientas de complementos
Si es True, el usuario puede colocar esta herramienta en el menú de complementos
- toolbar_button_popup_mode = 'delayed'¶
El modo emergente para el menú (si lo hay) del botón de la barra de herramientas. Los valores posibles son «delayed», «instant», «button»
- property boss¶
El objeto
calibre.gui2.tweak_book.boss.Boss
. Utilizado para controlar la interfaz de usuario.
- property gui¶
La ventana principal de la interfaz del usuario
- property current_container¶
Devuelve el objeto
calibre.ebooks.oeb.polish.container.Container
actual que representa el libro que se está modificando.
- register_shortcut(qaction, unique_name, default_keys=(), short_text=None, description=None, **extra_data)[fuente]¶
Registra un atajo de teclado que ejecutará la
qaction
especificada. Este atajo de teclado será automáticamente personalizable por el usuario a través de la sección Atajos de teclado de las preferencias del editor.- Parámetros:
qaction – Un objeto QAction, se ejecutará cuando el usuario pulse la combinación de teclas configurada.
unique_name – Un nombre único para este atajo o acción. Se usará internamente, no debe coincidir con ninguna otra acción de este complemento.
default_keys – Una lista de los atajos de teclado predeterminados. Si no se especifica, no se establecerá ningún atajo predeterminado. Si los atajos especificados están en conflicto on atajos predefinidos, con la configuración del usuario o con otros complementos, no se tendrán en cuenta. En tal caso, los usuarios tendrán que configurar los atajos manualmente a través de las Preferencias. Por ejemplo:
default_keys=('Ctrl+J', 'F9')
.short_text – Una breve descripción opcional de esta acción. Si no se especifica, se utilizará el texto de la QAction.
description – Una descripción opcional más extensa de esta acción, que se usará en la entrada de las preferencias para este acceso directo.
- create_action(for_toolbar=True)[fuente]¶
Crea una QAction que se añadirá a la barra de herramientas de complementos, o al menú de complementos según el valor de
for_toolbar
. Por ejemplo:def create_action(self, for_toolbar=True): ac = QAction(get_icons('myicon.png'), 'Do something') if for_toolbar: # We want the toolbar button to have a popup menu menu = QMenu() ac.setMenu(menu) menu.addAction('Do something else') subaction = menu.addAction('And another') # Register a keyboard shortcut for this toolbar action be # careful to do this for only one of the toolbar action or # the menu action, not both. self.register_shortcut(ac, 'some-unique-name', default_keys=('Ctrl+K',)) return ac
Ver también
Método
register_shortcut()
.
Controlar la interfaz de usuario del editor¶
La interfaz de usuario del editor de libros electrónicos está controlada por un único objeto global Boss. Este objeto posee varios métodos útiles que pueden utilizarse en el código de los complementos para realizar diversas tareas.
- class calibre.gui2.tweak_book.boss.Boss(parent, notify=None)[fuente]¶
-
- apply_container_update_to_gui(mark_as_modified=True)[fuente]¶
Actualiza todos los componentes de la interfaz para reflejar los datos más recientes del contenedor de libro actual.
- Parámetros:
mark_as_modified – Si es True, el libro se marcará como modificado, por lo que al usuario se le pedirá guardarlo al salir.
- commit_all_editors_to_container()[fuente]¶
Almacena todos los cambios que el usuario haya hecho en los archivos abiertos en el contenedor. Debe ejecutar este método antes de realizar cualquier acción sobre el contenedor actual.
- property currently_editing¶
Devuelve el nombre del archivo que está se está modificando actualmente o None si no se está modificando ningún archivo.
- edit_file(name, syntax=None, use_template=None)[fuente]¶
Abre el archivo especificado por
name
en un editor- Parámetros:
syntax – El tipo de medio del archivo, por ejemplo:
'text/html'
. Si no se especifica, se supone uno a partir de la extensión del archivo.use_template – Una plantilla con la que inicializar el editor abierto
- open_book(path=None, edit_file=None, clear_notify_data=True, open_folder=False, search_text=None)[fuente]¶
Abre el libro electrónico en
path
para modificarlo. Mostrará un error si el libro electrónico no está en un formato compatible o si el libro actual tiene cambios sin guardar.- Parámetros:
edit_file – El nombre de un archivo dentro del libro abierto para iniciar la modificación. También puede ser una lista de nombres.
- rewind_savepoint()[fuente]¶
Deshace la creación anterior de un hito de restauración, útil si crea un hito y luego cancela la operación sin ningún cambio
- show_current_diff(allow_revert=True, to_container=None)[fuente]¶
Muestra los cambios en el libro desde el estado del último hito
- Parámetros:
allow_revert – Si es True el cuadro de diferencias tendrá un botón que le permitirá al usuario deshacer los cambios
to_container – Un objeto de contenedor para compararlo con el contenedor actual. Si es None, se usará el contenedor del hito anterior.