mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-10-31 10:37:00 -04:00 
			
		
		
		
	Implement #352
This commit is contained in:
		
							parent
							
								
									0128e830c5
								
							
						
					
					
						commit
						cedbe608ec
					
				| @ -107,7 +107,7 @@ class BooksModel(QAbstractTableModel): | |||||||
|     def __init__(self, parent): |     def __init__(self, parent): | ||||||
|         QAbstractTableModel.__init__(self, parent) |         QAbstractTableModel.__init__(self, parent) | ||||||
|         self.db = None |         self.db = None | ||||||
|         self.cols = ['title', 'authors', 'size', 'date', 'rating', 'publisher'] |         self.cols = ['title', 'authors', 'size', 'date', 'rating', 'publisher', 'series'] | ||||||
|         self.sorted_on = (3, Qt.AscendingOrder) |         self.sorted_on = (3, Qt.AscendingOrder) | ||||||
|         self.last_search = '' # The last search performed on this model |         self.last_search = '' # The last search performed on this model | ||||||
|              |              | ||||||
| @ -301,6 +301,10 @@ class BooksModel(QAbstractTableModel): | |||||||
|                 pub = self.db.publisher(row) |                 pub = self.db.publisher(row) | ||||||
|                 if pub:  |                 if pub:  | ||||||
|                     return QVariant(BooksView.wrap(pub, 20)) |                     return QVariant(BooksView.wrap(pub, 20)) | ||||||
|  |             elif col == 6: | ||||||
|  |                 series = self.db.series(row) | ||||||
|  |                 if series: | ||||||
|  |                     return QVariant(series) | ||||||
|             return NONE |             return NONE | ||||||
|         elif role == Qt.TextAlignmentRole and index.column() in [2, 3, 4]: |         elif role == Qt.TextAlignmentRole and index.column() in [2, 3, 4]: | ||||||
|             return QVariant(Qt.AlignRight | Qt.AlignVCenter) |             return QVariant(Qt.AlignRight | Qt.AlignVCenter) | ||||||
| @ -320,6 +324,7 @@ class BooksModel(QAbstractTableModel): | |||||||
|             elif section == 3: text = _("Date") |             elif section == 3: text = _("Date") | ||||||
|             elif section == 4: text = _("Rating") |             elif section == 4: text = _("Rating") | ||||||
|             elif section == 5: text = _("Publisher") |             elif section == 5: text = _("Publisher") | ||||||
|  |             elif section == 6: text = _("Series") | ||||||
|             return QVariant(text) |             return QVariant(text) | ||||||
|         else:  |         else:  | ||||||
|             return QVariant(section+1) |             return QVariant(section+1) | ||||||
|  | |||||||
| @ -668,7 +668,32 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE; | |||||||
| ''') | ''') | ||||||
|         conn.execute('pragma user_version=3') |         conn.execute('pragma user_version=3') | ||||||
|         conn.commit() |         conn.commit() | ||||||
|  |          | ||||||
|  |     @staticmethod | ||||||
|  |     def upgrade_version3(conn): | ||||||
|  |         conn.executescript( | ||||||
|  | ''' | ||||||
|  | /***** Add series_index column to meta view ******/ | ||||||
|  |     DROP VIEW meta; | ||||||
|  |     CREATE VIEW meta AS | ||||||
|  |     SELECT id, title, | ||||||
|  |            (SELECT concat(name) FROM authors WHERE authors.id IN (SELECT author from books_authors_link WHERE book=books.id)) authors, | ||||||
|  |            (SELECT name FROM publishers WHERE publishers.id IN (SELECT publisher from books_publishers_link WHERE book=books.id)) publisher, | ||||||
|  |            (SELECT rating FROM ratings WHERE ratings.id IN (SELECT rating from books_ratings_link WHERE book=books.id)) rating, | ||||||
|  |            timestamp, | ||||||
|  |            (SELECT MAX(uncompressed_size) FROM data WHERE book=books.id) size, | ||||||
|  |            (SELECT concat(name) FROM tags WHERE tags.id IN (SELECT tag from books_tags_link WHERE book=books.id)) tags, | ||||||
|  |            (SELECT text FROM comments WHERE book=books.id) comments, | ||||||
|  |            (SELECT name FROM series WHERE series.id IN (SELECT series FROM books_series_link WHERE book=books.id)) series, | ||||||
|  |            series_index, | ||||||
|  |            sort, | ||||||
|  |            author_sort | ||||||
|  |     FROM books; | ||||||
|  | ''') | ||||||
|  |         conn.execute('pragma user_version=4') | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|  |          | ||||||
|     def __del__(self): |     def __del__(self): | ||||||
|         global _lock_file |         global _lock_file | ||||||
|         import os |         import os | ||||||
| @ -686,6 +711,8 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE; | |||||||
|             LibraryDatabase.upgrade_version1(self.conn) |             LibraryDatabase.upgrade_version1(self.conn) | ||||||
|         if self.user_version == 2: # Upgrade to 3 |         if self.user_version == 2: # Upgrade to 3 | ||||||
|             LibraryDatabase.upgrade_version2(self.conn) |             LibraryDatabase.upgrade_version2(self.conn) | ||||||
|  |         if self.user_version == 3: # Upgrade to 4 | ||||||
|  |             LibraryDatabase.upgrade_version3(self.conn) | ||||||
|          |          | ||||||
|     @apply |     @apply | ||||||
|     def user_version(): |     def user_version(): | ||||||
| @ -706,16 +733,19 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE; | |||||||
|                   'publisher': 'publisher', |                   'publisher': 'publisher', | ||||||
|                   'size': 'size', |                   'size': 'size', | ||||||
|                   'date': 'timestamp', |                   'date': 'timestamp', | ||||||
|                   'rating': 'rating' |                   'rating': 'rating', | ||||||
|  |                   'series': 'series', | ||||||
|                   } |                   } | ||||||
|         field = FIELDS[sort_field] |         field = FIELDS[sort_field] | ||||||
|         order = 'ASC' |         order = 'ASC' | ||||||
|         if not ascending: |         if not ascending: | ||||||
|             order = 'DESC' |             order = 'DESC' | ||||||
|  |         sort = field + ' ' + order | ||||||
|  |         if field == 'series': | ||||||
|  |             sort += ',series_index '+order | ||||||
|          |          | ||||||
|          |          | ||||||
|         self.cache = self.conn.execute('SELECT * from meta ORDER BY '+field+' ' |         self.cache = self.conn.execute('SELECT * from meta ORDER BY '+sort).fetchall() | ||||||
|                                        +order).fetchall() |  | ||||||
|         self.data  = self.cache |         self.data  = self.cache | ||||||
|         self.conn.commit() |         self.conn.commit() | ||||||
|          |          | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user