support offsetting photo dates

This commit is contained in:
dave 2018-09-15 16:48:47 -07:00
parent 0789de35ff
commit 3900075ab4
5 changed files with 20 additions and 6 deletions

View File

@ -286,7 +286,7 @@ class TagView(object):
s = self.master.session()
tag = s.query(Tag).filter(Tag.uuid == uuid).first()
numphotos = s.query(func.count(Tag.id)).join(TagItem).join(PhotoSet).filter(Tag.uuid == uuid).scalar()
photos = s.query(PhotoSet).join(TagItem).join(Tag).filter(Tag.uuid == uuid).offset(page * pgsize).limit(pgsize).all()
photos = s.query(PhotoSet).join(TagItem).join(Tag).filter(Tag.uuid == uuid).order_by(PhotoSet.date.desc()).offset(page * pgsize).limit(pgsize).all()
yield self.master.render("album.html", tag=tag, images=photos, total_items=numphotos, pgsize=100, page=page)
@cherrypy.expose

View File

@ -26,7 +26,7 @@ def get_jpg_info(fpath):
photo = Photo(hash=get_hash(fpath), path=fpath, format=mime, size=size,
width=dimensions[0], height=dimensions[1], orientation=orientation)
return PhotoSet(date=date, lat=lat, lon=lon, files=[photo])
return PhotoSet(date=date, date_real=date, lat=lat, lon=lon, files=[photo])
def get_mtime(fpath):

View File

@ -80,7 +80,8 @@ def batch_ingest(library, files):
if foundmatch:
break
if not foundmatch:
photos.append(PhotoSet(date=get_mtime(item), lat=0, lon=0, files=[itemmeta]))
mtime = get_mtime(item)
photos.append(PhotoSet(date=mtime, date_real=mtime, lat=0, lon=0, files=[itemmeta]))
done += 1
pprogress(done, total)
# TODO prune any xmp without an associated regular image or cr2
@ -90,7 +91,8 @@ def batch_ingest(library, files):
for item in chain(*[byext[ext] for ext in files_video]):
itemmeta = Photo(hash=get_hash(item), path=item, size=os.path.getsize(item),
format=special_magic(item))
photos.append(PhotoSet(date=get_mtime(item), lat=0, lon=0, files=[itemmeta]))
mtime = get_mtime(item)
photos.append(PhotoSet(date=mtime, date_real=mtime, lat=0, lon=0, files=[itemmeta]))
done += 1
pprogress(done, total)

View File

@ -1,20 +1,29 @@
from sqlalchemy import Column, Integer, String, DateTime, Unicode, DECIMAL, ForeignKey, Boolean
from sqlalchemy import Column, Integer, String, DateTime, Unicode, DECIMAL, ForeignKey, Boolean, Enum
from sqlalchemy.orm import relationship
from sqlalchemy.schema import UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime
import uuid
import enum
Base = declarative_base()
class PhotoStatus(enum.Enum):
private = 0
public = 1
hidden = 2
class PhotoSet(Base):
__tablename__ = 'photos'
id = Column(Integer, primary_key=True)
uuid = Column(Unicode, unique=True, default=lambda: str(uuid.uuid4()))
date = Column(DateTime)
date_real = Column(DateTime)
date_offset = Column(Integer, default=0) # minutes
lat = Column(DECIMAL(precision=11))
lon = Column(DECIMAL(precision=11))
@ -24,6 +33,8 @@ class PhotoSet(Base):
title = Column(String)
description = Column(String)
status = Column(Enum(PhotoStatus), default=PhotoStatus.private)
class Photo(Base):
__tablename__ = 'files'

View File

@ -19,7 +19,8 @@ setup(name='photoapp',
"photoappd = photoapp.daemon:main",
"photoimport = photoapp.ingest:main",
"photovalidate = photoapp.validate:main",
"photoinfo = photoapp.image:main"
"photoinfo = photoapp.image:main",
"photooffset = photoapp.dateoffset:main",
]
},
include_package_data=True,