Add thumbnail_photo to Album.
This commit is contained in:
parent
a6f9d1859e
commit
95b95bc7be
5 changed files with 52 additions and 4 deletions
|
@ -41,7 +41,7 @@ ffmpeg = _load_ffmpeg()
|
||||||
|
|
||||||
# Database #########################################################################################
|
# Database #########################################################################################
|
||||||
|
|
||||||
DATABASE_VERSION = 17
|
DATABASE_VERSION = 18
|
||||||
DB_VERSION_PRAGMA = f'''
|
DB_VERSION_PRAGMA = f'''
|
||||||
PRAGMA user_version = {DATABASE_VERSION};
|
PRAGMA user_version = {DATABASE_VERSION};
|
||||||
'''
|
'''
|
||||||
|
@ -62,8 +62,10 @@ CREATE TABLE IF NOT EXISTS albums(
|
||||||
title TEXT,
|
title TEXT,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
created INT,
|
created INT,
|
||||||
|
thumbnail_photo TEXT,
|
||||||
author_id TEXT,
|
author_id TEXT,
|
||||||
FOREIGN KEY(author_id) REFERENCES users(id)
|
FOREIGN KEY(author_id) REFERENCES users(id),
|
||||||
|
FOREIGN KEY(thumbnail_photo) REFERENCES photos(id)
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS index_albums_id on albums(id);
|
CREATE INDEX IF NOT EXISTS index_albums_id on albums(id);
|
||||||
CREATE INDEX IF NOT EXISTS index_albums_author_id on albums(author_id);
|
CREATE INDEX IF NOT EXISTS index_albums_author_id on albums(author_id);
|
||||||
|
|
|
@ -284,6 +284,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
self.title = self.normalize_title(db_row['title'])
|
self.title = self.normalize_title(db_row['title'])
|
||||||
self.description = self.normalize_description(db_row['description'])
|
self.description = self.normalize_description(db_row['description'])
|
||||||
self.created = db_row['created']
|
self.created = db_row['created']
|
||||||
|
self._thumbnail_photo = db_row['thumbnail_photo']
|
||||||
self.author_id = self.normalize_author_id(db_row['author_id'])
|
self.author_id = self.normalize_author_id(db_row['author_id'])
|
||||||
|
|
||||||
self.group_getter_many = self.photodb.get_albums_by_id
|
self.group_getter_many = self.photodb.get_albums_by_id
|
||||||
|
@ -532,6 +533,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
'description': self.description,
|
'description': self.description,
|
||||||
'title': self.title,
|
'title': self.title,
|
||||||
'created': self.created,
|
'created': self.created,
|
||||||
|
'thumbnail_photo': self.thumbnail_photo.id if self._thumbnail_photo else None,
|
||||||
'author': self.get_author().jsonify() if self.author_id else None,
|
'author': self.get_author().jsonify() if self.author_id else None,
|
||||||
}
|
}
|
||||||
if not minimal:
|
if not minimal:
|
||||||
|
@ -629,6 +631,16 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
total = self.photodb.sql_select_one(query)[0]
|
total = self.photodb.sql_select_one(query)[0]
|
||||||
return total
|
return total
|
||||||
|
|
||||||
|
@property
|
||||||
|
def thumbnail_photo(self):
|
||||||
|
if self._thumbnail_photo is None:
|
||||||
|
return None
|
||||||
|
if isinstance(self._thumbnail_photo, Photo):
|
||||||
|
return self._thumbnail_photo
|
||||||
|
photo = self.photodb.get_photo(self._thumbnail_photo)
|
||||||
|
self._thumbnail_photo = photo
|
||||||
|
return photo
|
||||||
|
|
||||||
def walk_photos(self):
|
def walk_photos(self):
|
||||||
yield from self.get_photos()
|
yield from self.get_photos()
|
||||||
children = self.walk_children()
|
children = self.walk_children()
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
.album_card_thumbnail
|
.album_card_thumbnail
|
||||||
{
|
{
|
||||||
grid-area: thumbnail;
|
grid-area: thumbnail;
|
||||||
background-color: var(--color_transparency);
|
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
|
|
|
@ -19,7 +19,12 @@ draggable=true
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="album_card_thumbnail" href="/album/{{album.id}}{{viewparam}}">
|
<a class="album_card_thumbnail" href="/album/{{album.id}}{{viewparam}}">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<img src="/static/basic_thumbnails/album.png"/>
|
{% if album.thumbnail_photo %}
|
||||||
|
{% set thumbnail_src = "/thumbnail/" + album.thumbnail_photo.id + ".jpg" %}
|
||||||
|
{% else %}
|
||||||
|
{% set thumbnail_src = "/static/basic_thumbnails/album.png" %}
|
||||||
|
{% endif %}
|
||||||
|
<img src="{{thumbnail_src}}"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div class="album_card_tools">
|
<div class="album_card_tools">
|
||||||
|
|
|
@ -572,6 +572,36 @@ def upgrade_16_to_17(photodb):
|
||||||
|
|
||||||
m.go()
|
m.go()
|
||||||
|
|
||||||
|
def upgrade_17_to_18(photodb):
|
||||||
|
'''
|
||||||
|
Added the thumbnail_photo column to albums.
|
||||||
|
'''
|
||||||
|
m = Migrator(photodb)
|
||||||
|
m.tables['albums']['create'] = '''
|
||||||
|
CREATE TABLE albums(
|
||||||
|
id TEXT PRIMARY KEY NOT NULL,
|
||||||
|
title TEXT,
|
||||||
|
description TEXT,
|
||||||
|
created INT,
|
||||||
|
thumbnail_photo TEXT,
|
||||||
|
author_id TEXT,
|
||||||
|
FOREIGN KEY(author_id) REFERENCES users(id),
|
||||||
|
FOREIGN KEY(thumbnail_photo) REFERENCES photos(id)
|
||||||
|
);
|
||||||
|
'''
|
||||||
|
m.tables['albums']['transfer'] = '''
|
||||||
|
INSERT INTO albums SELECT
|
||||||
|
id,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
created,
|
||||||
|
NULL,
|
||||||
|
author_id
|
||||||
|
FROM albums_old;
|
||||||
|
'''
|
||||||
|
|
||||||
|
m.go()
|
||||||
|
|
||||||
def upgrade_all(data_directory):
|
def upgrade_all(data_directory):
|
||||||
'''
|
'''
|
||||||
Given the directory containing a phototagger database, apply all of the
|
Given the directory containing a phototagger database, apply all of the
|
||||||
|
|
Loading…
Reference in a new issue