Add author column to photos
This commit is contained in:
parent
f53b089b79
commit
232f8231e0
4 changed files with 26 additions and 2 deletions
|
@ -48,6 +48,7 @@ SQL_PHOTO_COLUMNS = [
|
||||||
'created',
|
'created',
|
||||||
'thumbnail',
|
'thumbnail',
|
||||||
'tagged_at',
|
'tagged_at',
|
||||||
|
'author_id',
|
||||||
]
|
]
|
||||||
SQL_TAG_COLUMNS = [
|
SQL_TAG_COLUMNS = [
|
||||||
'id',
|
'id',
|
||||||
|
|
|
@ -31,6 +31,13 @@ def upgrade_2_to_3(sql):
|
||||||
cur.execute('CREATE INDEX IF NOT EXISTS index_user_id ON users(id)')
|
cur.execute('CREATE INDEX IF NOT EXISTS index_user_id ON users(id)')
|
||||||
cur.execute('CREATE INDEX IF NOT EXISTS index_user_username ON users(username COLLATE NOCASE)')
|
cur.execute('CREATE INDEX IF NOT EXISTS index_user_username ON users(username COLLATE NOCASE)')
|
||||||
|
|
||||||
|
def upgrade_3_to_4(sql):
|
||||||
|
'''
|
||||||
|
Add an `author_id` column to Photos.
|
||||||
|
'''
|
||||||
|
cur = sql.cursor()
|
||||||
|
cur.execute('ALTER TABLE photos ADD COLUMN author_id TEXT')
|
||||||
|
cur.execute('CREATE INDEX IF NOT EXISTS index_photo_author on photos(author_id)')
|
||||||
|
|
||||||
def upgrade_all(database_filename):
|
def upgrade_all(database_filename):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -287,6 +287,7 @@ class Photo(ObjectBase):
|
||||||
self.created = row_tuple['created']
|
self.created = row_tuple['created']
|
||||||
self.thumbnail = row_tuple['thumbnail']
|
self.thumbnail = row_tuple['thumbnail']
|
||||||
self.tagged_at = row_tuple['tagged_at']
|
self.tagged_at = row_tuple['tagged_at']
|
||||||
|
self.author_id = row_tuple['author_id']
|
||||||
|
|
||||||
def __reinit__(self):
|
def __reinit__(self):
|
||||||
'''
|
'''
|
||||||
|
@ -336,6 +337,9 @@ class Photo(ObjectBase):
|
||||||
albums = [self.photodb.get_album(f[0]) for f in fetch]
|
albums = [self.photodb.get_album(f[0]) for f in fetch]
|
||||||
return albums
|
return albums
|
||||||
|
|
||||||
|
def author(self):
|
||||||
|
return self.photodb.get_user(id=self.author_id)
|
||||||
|
|
||||||
def bytestring(self):
|
def bytestring(self):
|
||||||
return bytestring.bytestring(self.bytes)
|
return bytestring.bytestring(self.bytes)
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ logging.getLogger('PIL.PngImagePlugin').setLevel(logging.WARNING)
|
||||||
# Note: Setting user_version pragma in init sequence is safe because it only
|
# Note: Setting user_version pragma in init sequence is safe because it only
|
||||||
# happens after the out-of-date check occurs, so no chance of accidentally
|
# happens after the out-of-date check occurs, so no chance of accidentally
|
||||||
# overwriting it.
|
# overwriting it.
|
||||||
DATABASE_VERSION = 3
|
DATABASE_VERSION = 4
|
||||||
DB_INIT = '''
|
DB_INIT = '''
|
||||||
PRAGMA count_changes = OFF;
|
PRAGMA count_changes = OFF;
|
||||||
PRAGMA cache_size = 10000;
|
PRAGMA cache_size = 10000;
|
||||||
|
@ -52,7 +52,8 @@ CREATE TABLE IF NOT EXISTS photos(
|
||||||
bytes INT,
|
bytes INT,
|
||||||
created INT,
|
created INT,
|
||||||
thumbnail TEXT,
|
thumbnail TEXT,
|
||||||
tagged_at INT
|
tagged_at INT,
|
||||||
|
author_id TEXT
|
||||||
);
|
);
|
||||||
CREATE TABLE IF NOT EXISTS tags(
|
CREATE TABLE IF NOT EXISTS tags(
|
||||||
id TEXT,
|
id TEXT,
|
||||||
|
@ -96,6 +97,7 @@ CREATE INDEX IF NOT EXISTS index_photo_path on photos(filepath COLLATE NOCASE);
|
||||||
CREATE INDEX IF NOT EXISTS index_photo_fakepath on photos(override_filename COLLATE NOCASE);
|
CREATE INDEX IF NOT EXISTS index_photo_fakepath on photos(override_filename COLLATE NOCASE);
|
||||||
CREATE INDEX IF NOT EXISTS index_photo_created on photos(created);
|
CREATE INDEX IF NOT EXISTS index_photo_created on photos(created);
|
||||||
CREATE INDEX IF NOT EXISTS index_photo_extension on photos(extension);
|
CREATE INDEX IF NOT EXISTS index_photo_extension on photos(extension);
|
||||||
|
CREATE INDEX IF NOT EXISTS index_photo_author on photos(author_id);
|
||||||
|
|
||||||
-- Tag
|
-- Tag
|
||||||
CREATE INDEX IF NOT EXISTS index_tag_id on tags(id);
|
CREATE INDEX IF NOT EXISTS index_tag_id on tags(id);
|
||||||
|
@ -435,6 +437,7 @@ class PDBPhotoMixin:
|
||||||
filename,
|
filename,
|
||||||
*,
|
*,
|
||||||
allow_duplicates=False,
|
allow_duplicates=False,
|
||||||
|
author=None,
|
||||||
commit=True,
|
commit=True,
|
||||||
do_metadata=True,
|
do_metadata=True,
|
||||||
do_thumbnail=True,
|
do_thumbnail=True,
|
||||||
|
@ -461,6 +464,14 @@ class PDBPhotoMixin:
|
||||||
exc.photo = existing
|
exc.photo = existing
|
||||||
raise exc
|
raise exc
|
||||||
|
|
||||||
|
if isinstance(author, objects.User):
|
||||||
|
if author.photodb != self:
|
||||||
|
raise ValueError('That user does not belong to this photodb')
|
||||||
|
author_id = author.id
|
||||||
|
elif author is not None:
|
||||||
|
# Just to confirm
|
||||||
|
author_id = self.get_user(id=author).id
|
||||||
|
|
||||||
extension = os.path.splitext(filename)[1]
|
extension = os.path.splitext(filename)[1]
|
||||||
extension = extension.replace('.', '')
|
extension = extension.replace('.', '')
|
||||||
extension = self.normalize_tagname(extension)
|
extension = self.normalize_tagname(extension)
|
||||||
|
@ -474,6 +485,7 @@ class PDBPhotoMixin:
|
||||||
'extension': extension,
|
'extension': extension,
|
||||||
'created': created,
|
'created': created,
|
||||||
'tagged_at': None,
|
'tagged_at': None,
|
||||||
|
'author_id': author_id,
|
||||||
# These will be filled in during the metadata stage.
|
# These will be filled in during the metadata stage.
|
||||||
'bytes': None,
|
'bytes': None,
|
||||||
'width': None,
|
'width': None,
|
||||||
|
|
Loading…
Reference in a new issue