def remove_media(): data = request.json ids = data.get('ids') if not ids: return jsonify(error='missing ids') if not isinstance(ids, (tuple, list)): ids = [ids] spec = {'_id': {'$in': [ObjectId(i) for i in ids]}} type = data.get('type') if type == 'media': for id in ids: map(remove_file, Media.get_bases(id)) Media.remove(spec) elif type == 'search': Search.remove(spec) elif type == 'similar': SimilarSearch.remove(spec) else: return jsonify(error='unknown type %s' % type) return jsonify(result=True)
def update_path(): paths = Settings.get_settings('paths') excl = paths['media_root_exclude'] re_excl = re.compile(r'^(%s)/' % '|'.join([re.escape(p.rstrip('/')) for p in excl])) for file in iter_files(str(paths['media_root'])): if not re_excl.search(file): Media.add_file(file) time.sleep(.05) for media in Media.find({'files': {'$exists': True}}, timeout=False): files_orig = media['files'][:] for file in files_orig: if not os.path.exists(file) or re_excl.search(file): media['files'].remove(file) if not media['files'] and not media.get('urls'): Media.remove({'_id': media['_id']}, safe=True) elif media['files'] != files_orig: Media.save(media, safe=True) Work.set_info(NAME, 'updated', datetime.utcnow())