def main(): args = argument_parser() root_logger = logging.getLogger("PyFoto") if args.quiet: root_logger.setLevel(logging.ERROR) else: root_logger.setLevel(logging.DEBUG if args.debug else logging.INFO) logger = get_stream_logger("cli") org = Organize(args.config_file) tags = tuple() if not args.tags else [x.strip().lower().replace(" ", "-") for x in args.tags.split(",") if x.strip()] if args.directory: for count in org.add_images(args.directory, tags=tags): logger.info("Processed: {0}".format(count))
# -*- coding: UTF-8 -*- from __future__ import print_function, absolute_import import os import shutil from PIL import Image from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.orm.exc import NoResultFound import reusables from pyfoto.database import File, Tag, Base from pyfoto.config import get_config, save_config, get_stream_logger logger = get_stream_logger("organizer") class Organize: def __init__(self, config_file: str="config.yaml", engine=None): self.config = get_config(config_file) if not engine: engine = create_engine(self.config.connect_string) Base.metadata.create_all(engine, checkfirst=True) self.session = sessionmaker(bind=engine)() self.ensure_exists(self.config.storage_directory) self.save_config()
from functools import wraps import hashlib import bottle from pbkdf2 import crypt from bottle.ext import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.sql import func, distinct from pyfoto.organizer import Organize from pyfoto.database import File, Tag, Base, Users, Auth from pyfoto.config import get_config, get_stream_logger logger = get_stream_logger('web_service') app = bottle.Bottle() root = os.path.abspath(os.path.dirname(__file__)) bottle.TEMPLATE_PATH.append(os.path.join(root, "templates")) app.settings = {} app.org = None def auth(func): @wraps(func) def wrapper(*args, **kwargs): token = bottle.request.get_cookie('auth_token', secret=app.settings.get('cookie_key', '1234')) if not token: logger.debug("No token provided for request")