mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-03 19:17:02 -05: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)
 | 
				
			||||||
 | 
				
			|||||||
@ -669,6 +669,31 @@ 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