示例#1
0
文件: cli.py 项目: cdgriffith/PyFoto
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))
示例#2
0
# -*- 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()
示例#3
0
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")