Exemple #1
0
 def get_temporary_file(self, dir=SOUNDFOREST_CACHE_DIR, prefix='tmp', suffix=''):
     if not os.path.isdir(dir):
         try:
             os.makedirs(dir)
         except IOError, (ecode, emsg):
             raise SoundforestError('Error creating directory %s: %s' % (SOUNDFOREST_CACHE_DIR, emsg))
         except OSError, (ecode, emsg):
             raise SoundforestError('Error creating directory %s: %s' % (SOUNDFOREST_CACHE_DIR, emsg))
Exemple #2
0
    def unregister_tree_type(self, name, description=''):
        existing = self.query(TreeTypeModel).filter(
            TreeTypeModel.name == name).first()
        if not existing:
            raise SoundforestError('Tree type was not registered: %s' % name)

        self.delete(existing)
Exemple #3
0
    def unregister_tree(self, path, description=''):
        """Unregister tree"""
        existing = self.query(TreeModel).filter(TreeModel.path == path).first()
        if not existing:
            raise SoundforestError('Tree was not registered: %s' % path)

        self.delete(existing)
Exemple #4
0
    def unregister_sync_target(self, name):
        existing = self.query(SyncTargetModel).filter(
            SyncTargetModel.name == name).first()
        if not existing:
            raise SoundforestError('Sync target was not registered: %s' % name)

        self.delete(existing)
Exemple #5
0
    def register_tree_type(self, name, description=''):
        existing = self.query(TreeTypeModel).filter(
            TreeTypeModel.name == name).first()
        if existing:
            raise SoundforestError('Tree type was already registered: %s' %
                                   name)

        self.add(TreeTypeModel(name=name, description=description))
Exemple #6
0
    def unregister_prefix(self, path):
        """Unregister a prefix"""
        existing = self.query(PrefixModel).filter(
            PrefixModel.path == path).first()
        if not existing:
            raise SoundforestError('Prefix was not registered: %s' % path)

        self.delete(existing)
Exemple #7
0
    def unregister_playlist_tree(self, path):
        existing = self.query(PlaylistTreeModel).filter(
            PlaylistTreeModel.path == path).first()
        if not existing:
            raise SoundforestError('Playlist source is not registered: %s' %
                                   path)

        self.delete(existing)
Exemple #8
0
    def register_playlist_tree(self, path, name='Playlists'):
        existing = self.query(PlaylistTreeModel).filter(
            PlaylistTreeModel.path == path).first()
        if existing:
            raise SoundforestError(
                'Playlist source is already registered: %s' % path)

        self.add(PlaylistTreeModel(path=path, name=name))
Exemple #9
0
        def __format_item__(self, key, value):
            if key in FIELD_CONVERT_MAP.keys():
                try:
                    value = FIELD_CONVERT_MAP[key](value)
                except ValueError:
                    raise SoundforestError(
                        'Invalid data in configuration for field %s' % key)

            return value
Exemple #10
0
    def unregister_tester(self, session, command):
        existing = session.query(TesterModel).filter(
            TesterModel.codec == self, TesterModel.command == command).first()
        if not existing:
            raise SoundforestError('File tester was not registered: %s' %
                                   command)

        session.delete(existing)
        session.commit()
Exemple #11
0
    def register_tester(self, session, command):
        existing = session.query(TesterModel).filter(
            TesterModel.codec == self, TesterModel.command == command).first()
        if existing:
            raise SoundforestError('File tester already registered: %s' %
                                   command)

        session.add(TesterModel(codec=self, command=command))
        session.commit()
Exemple #12
0
    def unregister_extension(self, session, extension):
        existing = session.query(ExtensionModel).filter(
            ExtensionModel.extension == extension).first()
        if not existing:
            raise SoundforestError('ExtensionModel was not registered: %s' %
                                   extension)

        session.delete(existing)
        session.commit()
Exemple #13
0
    def register_extension(self, session, extension):
        existing = session.query(ExtensionModel).filter(
            ExtensionModel.extension == extension).first()
        if existing:
            raise SoundforestError('ExtensionModel already registered: %s' %
                                   extension)

        session.add(ExtensionModel(codec=self, extension=extension))
        session.commit()
Exemple #14
0
    def register_tree(self, path, description='', tree_type='songs'):
        """Register tree"""
        if isinstance(path, str):
            path = unicode(path, 'utf-8')

        existing = self.query(TreeModel).filter(TreeModel.path == path).first()
        if existing:
            raise SoundforestError('Tree was already registered: %s' % path)

        tt = self.get_tree_type(tree_type)
        self.add(TreeModel(path=path, description=description, type=tt))
Exemple #15
0
    def register_prefix(self, path):
        """Register a prefix"""
        if isinstance(path, str):
            path = unicode(path, 'utf-8')

        existing = self.query(PrefixModel).filter(
            PrefixModel.path == path).first()
        if existing:
            raise SoundforestError('Prefix was already registered: %s' % path)

        self.add(PrefixModel(path=path))
Exemple #16
0
    def __init__(self, path=None, engine=None, debug=False):
        """
        By default, use sqlite databases in file given by path.
        """

        if engine is None:
            if path is None:
                path = DEFAULT_DATABASE

            config_dir = os.path.dirname(path)
            if not os.path.isdir(config_dir):
                try:
                    os.makedirs(config_dir)
                except OSError, (ecode, emsg):
                    raise SoundforestError('Error creating directory: %s' %
                                           config_dir)

            engine = create_engine('sqlite:///%s' % path,
                                   encoding='utf-8',
                                   echo=debug)
Exemple #17
0
    def register_sync_target(self,
                             name,
                             synctype,
                             src,
                             dst,
                             flags=None,
                             defaults=False):
        """Register a sync target"""

        existing = self.query(SyncTargetModel).filter(
            SyncTargetModel.name == name).first()
        if existing:
            raise SoundforestError('Sync target was already registerd: %s' %
                                   name)

        target = SyncTargetModel(name=name,
                                 type=synctype,
                                 src=src,
                                 dst=dst,
                                 flags=flags,
                                 defaults=defaults)

        self.add(target)
        return target.as_dict()