Ejemplo n.º 1
0
def test_model_init():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    viewer_config = m.get_viewer_config()
    model_config = m.get_model_config()
    viewer = viewer_display.ViewerDisplay(viewer_config)
    viewer.slideshow_start()
    viewer.slideshow_is_running(os.path.expanduser(model_config['no_files_img']))
    assert True == True
Ejemplo n.º 2
0
def test_get_next_file_whole_loop():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    num = m.get_number_of_files()
    m.shuffle = False
    file1 = m.get_next_file()
    file2 = None
    for _ in range(0, num):
        file2 = m.get_next_file()
    assert file1 == file2
Ejemplo n.º 3
0
def test_for_file_changes():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    m.subdirectory = 'testdir'
    testfile = os.path.expanduser(
        m.get_model_config()['pic_dir']) + "/" + 'testdir' + "/testfile.jpg"
    assert m.check_for_file_changes() == False
    os.mknod(testfile)
    assert m.check_for_file_changes() == True
    os.remove(testfile)
Ejemplo n.º 4
0
def test_get_next_file_no_file_in_range():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    file, orientation, image_attr = m.get_next_file((1990, 1, 1), (1990, 1, 2))
    assert file == '/home/pi/.local/picframe/data/PictureFrame2020img.jpg'
    assert orientation == 1
    assert image_attr == {
        'latitude': None,
        'longitude': None,
        'EXIF FNumber': None,
        'EXIF ExposureTime': None,
        'EXIF ISOSpeedRatings': None,
        'EXIF FocalLength': None,
        'EXIF DateTimeOriginal': None,
        'Image Model': None
    }
Ejemplo n.º 5
0
def test_get_file_for_empty_dir():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    m.subdirectory = 'testdir'
    file, orientation, image_attr = m.get_next_file()
    assert file == '/home/pi/.local/picframe/data/PictureFrame2020img.jpg'
    assert orientation == 1
    assert image_attr == {
        'latitude': None,
        'longitude': None,
        'EXIF FNumber': None,
        'EXIF ExposureTime': None,
        'EXIF ISOSpeedRatings': None,
        'EXIF FocalLength': None,
        'EXIF DateTimeOriginal': None,
        'Image Model': None
    }
Ejemplo n.º 6
0
def main():
    logging.basicConfig(stream=sys.stdout, level=logging.INFO)
    logger = logging.getLogger("start.py")
    logger.info('starting %s', sys.argv)

    parser = argparse.ArgumentParser()
    group = parser.add_mutually_exclusive_group()
    group.add_argument(
        "-i",
        "--initialize",
        help=
        "creates standard file structure for picframe in destination directory",
        metavar=('DESTINATION_DIRECTORY'))
    group.add_argument("-v",
                       "--version",
                       help="print version information",
                       action="store_true")
    group.add_argument("configfile",
                       nargs='?',
                       help="/path/to/configuration.yaml")
    args = parser.parse_args()
    if args.initialize:
        if os.geteuid() == 0:
            print(
                "Don't run the initialize step with sudo. It might put the files in the wrong place!"
            )
            return
        pkgdir = sys.modules['picframe'].__path__[0]
        try:
            dest = os.path.abspath(os.path.expanduser(args.initialize))
            copy_files(pkgdir, dest, 'html')
            copy_files(pkgdir, dest, 'config')
            copy_files(pkgdir, dest, 'data')
            create_config(dest)
            print('created {}/picframe_data'.format(dest))
        except Exception as e:
            print("Can't copy files to: ", args.initialize, ". Reason: ", e)
        return
    elif args.version:
        print("picframe version: ", __version__)
        print("\nChecking required packages......")
        required_packages = [
            'PIL', 'exifread', 'pi3d', 'yaml', 'paho.mqtt', 'iptcinfo3',
            'numpy', 'ninepatch'
        ]
        check_packages(required_packages)
        print("\nChecking optional packages......")
        check_packages(['pyheif'])
        return
    elif args.configfile:
        m = model.Model(args.configfile)
    else:
        m = model.Model()

    v = viewer_display.ViewerDisplay(m.get_viewer_config())
    c = controller.Controller(m, v)
    c.start()

    mqtt_config = m.get_mqtt_config()
    if mqtt_config['use_mqtt']:
        from picframe import interface_mqtt
        try:
            mqtt = interface_mqtt.InterfaceMQTT(c, mqtt_config)
            mqtt.start()
        except:
            logger.error("Can't initialize mqtt. Stopping picframe")
            sys.exit(1)

    http_config = m.get_http_config()
    model_config = m.get_model_config()
    if http_config['use_http']:
        server = interface_http.InterfaceHttp(c, http_config['path'],
                                              model_config['pic_dir'],
                                              model_config['no_files_img'],
                                              http_config['port'])
        if http_config['use_ssl']:
            server.socket = ssl.wrap_socket(server.socket,
                                            keyfile=http_config['keyfile'],
                                            certfile=http_config['certfile'],
                                            server_side=True)
    c.loop()
    if mqtt_config['use_mqtt']:
        mqtt.stop()
    if http_config[
            'use_http']:  #TODO objects living in multiple threads issue at shutdown!
        server.stop()
    c.stop()
Ejemplo n.º 7
0
def test_getter_setter_time_delay():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    assert m.time_delay == 200.0
    m.time_delay = 21.0
    assert m.time_delay == 21.0
Ejemplo n.º 8
0
def test_getter_setter_fade_time():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    assert m.fade_time == 10.0
    m.fade_time = 20.0
    assert m.fade_time == 20.0
Ejemplo n.º 9
0
def test_get_next_file():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    file1 = m.get_next_file()
    file2 = m.get_next_file()
    assert file1 != file2
Ejemplo n.º 10
0
def test_get_files():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    num = m.get_number_of_files()
    assert num == 443
Ejemplo n.º 11
0
def test_get_subdirectory_list():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    act_dir, dir_list = m.get_directory_list()
    assert act_dir == 'Pictures'
    assert dir_list[0] == 'Pictures'
    assert dir_list[1] == 'testdir'
Ejemplo n.º 12
0
def test_getter_setter_shuffle():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    assert m.shuffle == True
    m.shuffle = False
    assert m.shuffle == False
Ejemplo n.º 13
0
def test_model_init():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    mqtt = m.get_mqtt_config()
    assert mqtt['server'] == 'home'
    viewer = m.get_viewer_config()
    assert viewer['test_key'] == 'test_value'
Ejemplo n.º 14
0
def test_getter_setter_subdirectory():
    m = model.Model('/home/pi/dev/picture_frame/config/configuration.yaml')
    assert m.subdirectory == ''
    m.subdirectory = 'testdir'
    assert m.subdirectory == 'testdir'