Add support for date published field to edit metadata dialog. Also preferentially use ISBN13 numbers from ISBNDB

This commit is contained in:
Kovid Goyal 2009-06-21 12:40:26 -07:00
parent 03dba92e8d
commit 119b154948
4 changed files with 44 additions and 5 deletions

View File

@ -49,7 +49,7 @@ class ISBNDBMetadata(MetaInformation):
def __init__(self, book): def __init__(self, book):
MetaInformation.__init__(self, None, []) MetaInformation.__init__(self, None, [])
self.isbn = book['isbn'] self.isbn = book.get('isbn13', book.get('isbn'))
self.title = book.find('titlelong').string self.title = book.find('titlelong').string
if not self.title: if not self.title:
self.title = book.find('title').string self.title = book.find('title').string
@ -74,7 +74,6 @@ class ISBNDBMetadata(MetaInformation):
self.comments = 'SUMMARY:\n'+summ.string self.comments = 'SUMMARY:\n'+summ.string
def build_isbn(base_url, opts): def build_isbn(base_url, opts):
return base_url + 'index1=isbn&value1='+opts.isbn return base_url + 'index1=isbn&value1='+opts.isbn

View File

@ -14,6 +14,7 @@ from calibre.gui2.dialogs.fetch_metadata_ui import Ui_FetchMetadata
from calibre.gui2 import error_dialog, NONE, info_dialog from calibre.gui2 import error_dialog, NONE, info_dialog
from calibre.gui2.widgets import ProgressIndicator from calibre.gui2.widgets import ProgressIndicator
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre import strftime
class Fetcher(QThread): class Fetcher(QThread):
@ -45,7 +46,7 @@ class Matches(QAbstractTableModel):
return len(self.matches) return len(self.matches)
def columnCount(self, *args): def columnCount(self, *args):
return 5 return 6
def headerData(self, section, orientation, role): def headerData(self, section, orientation, role):
if role != Qt.DisplayRole: if role != Qt.DisplayRole:
@ -57,6 +58,7 @@ class Matches(QAbstractTableModel):
elif section == 2: text = _("Author Sort") elif section == 2: text = _("Author Sort")
elif section == 3: text = _("Publisher") elif section == 3: text = _("Publisher")
elif section == 4: text = _("ISBN") elif section == 4: text = _("ISBN")
elif section == 5: text = _("Published")
return QVariant(text) return QVariant(text)
else: else:
@ -80,6 +82,9 @@ class Matches(QAbstractTableModel):
res = book.publisher res = book.publisher
elif col == 4: elif col == 4:
res = book.isbn res = book.isbn
elif col == 5:
if hasattr(book.pubdate, 'timetuple'):
res = strftime('%b %Y', book.pubdate.timetuple())
if not res: if not res:
return NONE return NONE
return QVariant(res) return QVariant(res)
@ -126,7 +131,7 @@ class FetchMetadata(QDialog, Ui_FetchMetadata):
prefs['isbndb_com_key'] = key prefs['isbndb_com_key'] = key
else: else:
key = None key = None
title = author = publisher = isbn = None title = author = publisher = isbn = pubdate = None
if self.isbn: if self.isbn:
isbn = self.isbn isbn = self.isbn
if self.title: if self.title:

View File

@ -10,8 +10,9 @@ import os
import re import re
import time import time
import traceback import traceback
from datetime import datetime
from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread from PyQt4.QtCore import SIGNAL, QObject, QCoreApplication, Qt, QTimer, QThread, QDate
from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog, QCompleter from PyQt4.QtGui import QPixmap, QListWidgetItem, QErrorMessage, QDialog, QCompleter
from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \ from calibre.gui2 import qstring_to_unicode, error_dialog, file_icon_provider, \
@ -234,6 +235,7 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
self.cover.setAcceptDrops(True) self.cover.setAcceptDrops(True)
self._author_completer = AuthorCompleter(self.db) self._author_completer = AuthorCompleter(self.db)
self.authors.setCompleter(self._author_completer) self.authors.setCompleter(self._author_completer)
self.pubdate.setMinimumDate(QDate(100,1,1))
self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped) self.connect(self.cover, SIGNAL('cover_changed()'), self.cover_dropped)
QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \ QObject.connect(self.cover_button, SIGNAL("clicked(bool)"), \
self.select_cover) self.select_cover)
@ -279,6 +281,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
comments = self.db.comments(row) comments = self.db.comments(row)
self.comments.setPlainText(comments if comments else '') self.comments.setPlainText(comments if comments else '')
cover = self.db.cover(row) cover = self.db.cover(row)
pubdate = db.pubdate(self.id, index_is_id=True)
self.pubdate.setDate(QDate(pubdate.year, pubdate.month,
pubdate.day))
exts = self.db.formats(row) exts = self.db.formats(row)
if exts: if exts:
@ -441,6 +446,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
if book.author_sort: self.author_sort.setText(book.author_sort) if book.author_sort: self.author_sort.setText(book.author_sort)
if book.publisher: self.publisher.setEditText(book.publisher) if book.publisher: self.publisher.setEditText(book.publisher)
if book.isbn: self.isbn.setText(book.isbn) if book.isbn: self.isbn.setText(book.isbn)
if book.pubdate:
d = book.pubdate
self.pubdate.setDate(QDate(d.year, d.month, d.day))
summ = book.comments summ = book.comments
if summ: if summ:
prefix = qstring_to_unicode(self.comments.toPlainText()) prefix = qstring_to_unicode(self.comments.toPlainText())
@ -485,6 +493,9 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog):
self.db.set_series(self.id, qstring_to_unicode(self.series.currentText()), notify=False) self.db.set_series(self.id, qstring_to_unicode(self.series.currentText()), notify=False)
self.db.set_series_index(self.id, self.series_index.value(), notify=False) self.db.set_series_index(self.id, self.series_index.value(), notify=False)
self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()), notify=False) self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()), notify=False)
d = self.pubdate.date()
self.db.set_pubdate(self.id, datetime(d.year(), d.month(), d.day()))
if self.cover_changed: if self.cover_changed:
self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap())) self.db.set_cover(self.id, pixmap_to_data(self.cover.pixmap()))
QDialog.accept(self) QDialog.accept(self)

View File

@ -325,6 +325,19 @@
<item row="8" column="1" colspan="2"> <item row="8" column="1" colspan="2">
<widget class="QLineEdit" name="isbn"/> <widget class="QLineEdit" name="isbn"/>
</item> </item>
<item row="9" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Publishe&amp;d:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>pubdate</cstring>
</property>
</widget>
</item>
<item row="4" column="1"> <item row="4" column="1">
<widget class="QComboBox" name="publisher"> <widget class="QComboBox" name="publisher">
<property name="editable"> <property name="editable">
@ -348,6 +361,16 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="9" column="1">
<widget class="QDateEdit" name="pubdate">
<property name="displayFormat">
<string>MMM yyyy</string>
</property>
<property name="calendarPopup">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@ -632,6 +655,7 @@
<tabstop>tag_editor_button</tabstop> <tabstop>tag_editor_button</tabstop>
<tabstop>remove_series_button</tabstop> <tabstop>remove_series_button</tabstop>
<tabstop>isbn</tabstop> <tabstop>isbn</tabstop>
<tabstop>pubdate</tabstop>
<tabstop>comments</tabstop> <tabstop>comments</tabstop>
<tabstop>fetch_metadata_button</tabstop> <tabstop>fetch_metadata_button</tabstop>
<tabstop>fetch_cover_button</tabstop> <tabstop>fetch_cover_button</tabstop>