コード例 #1
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def setUp(self):
        """DeviceModel test set up"""

        if os.path.isfile("/tmp/box.db"):
            os.unlink("/tmp/box.db")
        DBHelper().set_db("/tmp/box.db")
        InstallHelper.reset()
        DeviceModel.install()
コード例 #2
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def setUp(self):
        """DeviceModel test set up"""

        if os.path.isfile('/tmp/box.db'):
            os.unlink('/tmp/box.db')
        DBHelper().set_db('/tmp/box.db')
        InstallHelper.reset()
        DeviceModel.install()
コード例 #3
0
ファイル: file.py プロジェクト: henkelund/memobox
    def index_all_devices(self):
        """Index files for every folder that qualifies as a device within
        the current directory
        """

        os.chdir(self._basedir)
        for node in os.listdir(self._basedir):
            device = DeviceModel().load_by_dir(node)
            if device.id() is not None:
                self.index_device(device)
コード例 #4
0
ファイル: file.py プロジェクト: henkelund/memobox
    def index_all_devices(self):
        """Index files for every folder that qualifies as a device within
        the current directory
        """

        os.chdir(self._basedir)
        for node in os.listdir(self._basedir):
            device = DeviceModel().load_by_dir(node)
            if device.id() is not None:
                self.index_device(device)
コード例 #5
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def test_load_by_dir(self):
        """Test DeviceModel.load_by_dir"""

        device = DeviceModel().load_by_dir('marklar')
        self.assertIsNone(device.id())
        device = DeviceModel().load_by_dir('fixture')
        self.assertIsNone(device.id())
        device = DeviceModel().load_by_dir('fixture/device')
        self.assertEqual(device.id(), 1)
コード例 #6
0
ファイル: file.py プロジェクト: henkelund/memobox
    def _install(cls):
        """Install base table and attributes"""

        DeviceModel.install()
        ExtendedModel.install()
        table = DBHelper.quote_identifier(cls._table)
        pk = DBHelper.quote_identifier(cls._pk)

        return (
            lambda: (
                DBHelper().query("""
                    CREATE TABLE %s (
                        %s           INTEGER PRIMARY KEY AUTOINCREMENT,
                        "name"       TEXT    NOT NULL DEFAULT '',
                        "abspath"    TEXT    NOT NULL DEFAULT '',
                        "extension"  TEXT,
                        "type"       TEXT    NOT NULL DEFAULT '',
                        "subtype"    TEXT    NOT NULL DEFAULT '',
                        "charset"    TEXT,
                        "checksum"   TEXT    NOT NULL DEFAULT '',
                        "size"       INTEGER,
                        "created_at" INTEGER,
                        "indexed_at" INTEGER,
                        "is_hidden"  INTEGER NOT NULL DEFAULT 0,
                        "rating"     INTEGER NOT NULL DEFAULT 0,
                        "device"     INTEGER,
                        "devpath"    TEXT    NOT NULL DEFAULT '',
                        FOREIGN KEY ("device") REFERENCES "device"("_id")
                            ON DELETE SET NULL ON UPDATE SET NULL
                    )
                """ % (table, pk)),
                DBHelper().query("""
                    CREATE UNIQUE INDEX "UNQ_FILE_DUPLICATE"
                        ON %s ("name", "devpath", "checksum")
                """ % table),
                cls._create_attribute_tables(),
                cls._create_attribute(
                    'width', 'Width', 'integer', 'Image'),
                cls._create_attribute(
                    'height', 'Height', 'integer', 'Image'),
                cls._create_attribute(
                    'latitude', 'Latitude', 'real', 'Image'),
                cls._create_attribute(
                    'longitude', 'Longitude', 'real', 'Image'),
                cls._create_attribute(
                    'timestamp', 'Timestamp', 'integer', 'Image'),
                cls._create_attribute(
                    'orientation', 'Orientation', 'integer', 'Image')
            ),
        )
コード例 #7
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def test_get_transfer_dirs(self):
        """Test DeviceModel.get_transfer_dirs"""

        device = DeviceModel()
        device.directory('marklar')
        self.assertEqual(len(device.get_transfer_dirs()), 0)
        device.directory('fixture/device')
        dirs = device.get_transfer_dirs()
        self.assertTrue(len(device.get_transfer_dirs()) > 0)
        for d in dirs:
            self.assertTrue(os.path.isdir(d))
コード例 #8
0
    def post(self):
        """
        Uses the houseguard db to make a device
        :return:
        """
        parser.add_argument('allowed', type=int, required=True)
        parser.add_argument('blocked', type=int, required=True)
        parser.add_argument('unknown', type=int, required=True)
        args = parser.parse_args()

        # Adding device to db
        model = DeviceModel()
        model.create_device(args['allowed'],
                        args['blocked'],
                        args['unknown'])
        return 'Complete', 200
コード例 #9
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def test_get_transfer_dirs(self):
        """Test DeviceModel.get_transfer_dirs"""

        device = DeviceModel()
        device.directory("marklar")
        self.assertEqual(len(device.get_transfer_dirs()), 0)
        device.directory("fixture/device")
        dirs = device.get_transfer_dirs()
        self.assertTrue(len(device.get_transfer_dirs()) > 0)
        for d in dirs:
            self.assertTrue(os.path.isdir(d))
コード例 #10
0
ファイル: file.py プロジェクト: henkelund/memobox
    def _install(cls):
        """Install base table and attributes"""

        DeviceModel.install()
        ExtendedModel.install()
        table = DBHelper.quote_identifier(cls._table)
        pk = DBHelper.quote_identifier(cls._pk)

        return (
            lambda:
            (DBHelper().query("""
                    CREATE TABLE %s (
                        %s           INTEGER PRIMARY KEY AUTOINCREMENT,
                        "name"       TEXT    NOT NULL DEFAULT '',
                        "abspath"    TEXT    NOT NULL DEFAULT '',
                        "extension"  TEXT,
                        "type"       TEXT    NOT NULL DEFAULT '',
                        "subtype"    TEXT    NOT NULL DEFAULT '',
                        "charset"    TEXT,
                        "checksum"   TEXT    NOT NULL DEFAULT '',
                        "size"       INTEGER,
                        "created_at" INTEGER,
                        "indexed_at" INTEGER,
                        "is_hidden"  INTEGER NOT NULL DEFAULT 0,
                        "rating"     INTEGER NOT NULL DEFAULT 0,
                        "device"     INTEGER,
                        "devpath"    TEXT    NOT NULL DEFAULT '',
                        FOREIGN KEY ("device") REFERENCES "device"("_id")
                            ON DELETE SET NULL ON UPDATE SET NULL
                    )
                """ % (table, pk)), DBHelper().query("""
                    CREATE UNIQUE INDEX "UNQ_FILE_DUPLICATE"
                        ON %s ("name", "devpath", "checksum")
                """ % table), cls._create_attribute_tables(),
             cls._create_attribute('width', 'Width', 'integer', 'Image'),
             cls._create_attribute('height', 'Height', 'integer', 'Image'),
             cls._create_attribute('latitude', 'Latitude', 'real', 'Image'),
             cls._create_attribute('longitude', 'Longitude', 'real', 'Image'),
             cls._create_attribute('timestamp', 'Timestamp', 'integer', 'Image'
                                   ),
             cls._create_attribute('orientation', 'Orientation', 'integer',
                                   'Image')), )
コード例 #11
0
ファイル: test_device.py プロジェクト: henkelund/memobox
    def test_load_by_dir(self):
        """Test DeviceModel.load_by_dir"""

        device = DeviceModel().load_by_dir("marklar")
        self.assertIsNone(device.id())
        device = DeviceModel().load_by_dir("fixture")
        self.assertIsNone(device.id())
        device = DeviceModel().load_by_dir("fixture/device")
        self.assertEqual(device.id(), 1)
コード例 #12
0
ファイル: wsgi.py プロジェクト: henkelund/memobox
def file_filters_action():

    filters = FilterHelper.get_all_filters()

    device_opts = {}
    for device in DeviceModel.all():
        device_opts[device.id()] = device.product_name()
    if len(device_opts) > 1:
        filters.insert(0, {
            'label': 'Device',
            'multi': True,
            'param': 'device',
            'options': device_opts
        })

    return jsonify({'filters': filters})
コード例 #13
0
ファイル: wsgi.py プロジェクト: henkelund/memobox
def file_filters_action():

    filters = FilterHelper.get_all_filters()

    device_opts = {}
    for device in DeviceModel.all():
        device_opts[device.id()] = device.product_name()
    if len(device_opts) > 1:
        filters.insert(
            0, {
                'label': 'Device',
                'multi': True,
                'param': 'device',
                'options': device_opts
            })

    return jsonify({'filters': filters})
コード例 #14
0
    def get(self):

        model = DeviceModel()
        device = model.get_device()
        return device, 200
コード例 #15
0
ファイル: file.py プロジェクト: henkelund/memobox
                                try:
                                    os.rmdir(file_model.abspath())
                                except OSError:
                                    pass # dir is not empty
                            except OSError:
                                logger.error('Unable to remove duplicate %s'
                                                % duplicate)

                        logger.info('%s already exists, skipping..'
                                        % os.path.join(devpath, filename))

            open(flagfile, 'w').close() # touch indexed flag

if (__name__ == '__main__'):
    """~$ python file.py path/to/database path/to/basedir"""

    if len(sys.argv) < 3:
        exit(1)

    database = sys.argv[1]
    basedir = '%s/devices' % sys.argv[2] #TODO: read from config

    if not os.path.isdir(basedir):
        exit(2)

    DBHelper(database)
    DeviceModel.install()
    FileModel.install()
    FileIndexer(basedir).index_all_devices()

コード例 #16
0
ファイル: file.py プロジェクト: henkelund/memobox
                                try:
                                    os.rmdir(file_model.abspath())
                                except OSError:
                                    pass  # dir is not empty
                            except OSError:
                                logger.error('Unable to remove duplicate %s' %
                                             duplicate)

                        logger.info('%s already exists, skipping..' %
                                    os.path.join(devpath, filename))

            open(flagfile, 'w').close()  # touch indexed flag


if (__name__ == '__main__'):
    """~$ python file.py path/to/database path/to/basedir"""

    if len(sys.argv) < 3:
        exit(1)

    database = sys.argv[1]
    basedir = '%s/devices' % sys.argv[2]  #TODO: read from config

    if not os.path.isdir(basedir):
        exit(2)

    DBHelper(database)
    DeviceModel.install()
    FileModel.install()
    FileIndexer(basedir).index_all_devices()