diff --git a/server/djrandom/model/indexer.py b/server/djrandom/model/indexer.py index 7022ba00c6c017270d41f941807b86e8984377c6..2ec9bd249041bbdf16a8f56e94fe82232000753e 100644 --- a/server/djrandom/model/indexer.py +++ b/server/djrandom/model/indexer.py @@ -32,5 +32,8 @@ class Indexer(object): def del_mp3(self, mp3): self._get_solr().delete(mp3.sha1) + def delete_all(self): + self._get_solr().delete_query('id:*') + def commit(self): self._get_solr().commit() diff --git a/server/djrandom/model/verify.py b/server/djrandom/model/verify.py new file mode 100644 index 0000000000000000000000000000000000000000..c0f447c635edf6bb9b26f89500b9f98adbaf4743 --- /dev/null +++ b/server/djrandom/model/verify.py @@ -0,0 +1,48 @@ +import os +import optparse +import logging +import time +from djrandom import daemonize +from djrandom import utils +from djrandom.database import Session, init_db, indexer +from djrandom.model.mp3 import MP3 + +log = logging.getLogger(__name__) + + +def fix_solr(): + print 'rebuilding the SOLR index...' + for mp3 in MP3.query: + indexer.add_mp3(mp3) + print 'commit...' + indexer.commit() + print 'done.' + + +def run_fixer(db_url, solr_url): + init_db(db_url, solr_url) + fix_solr() + + +def main(): + parser = optparse.OptionParser() + parser.add_option('--solr_url', default='http://localhost:8080/solr') + parser.add_option('--db_url') + daemonize.add_standard_options(parser) + utils.read_config_defaults( + parser, os.getenv('DJRANDOM_CONF', '/etc/djrandom.conf')) + opts, args = parser.parse_args() + if not opts.db_url: + parser.error('Must provide --db_url') + if args: + parser.error('Too many arguments') + + if opts.once: + opts.foreground = True + + daemonize.daemonize(opts, run_fixer, + (opts.solr_url, opts.db_url)) + + +if __name__ == '__main__': + main() diff --git a/server/setup.py b/server/setup.py index 22f935ba5e49ffc9aab03fadb78a55f8d91e405d..7cb08e73f68d8cb74985511010e426d58f75bb4f 100644 --- a/server/setup.py +++ b/server/setup.py @@ -23,6 +23,7 @@ setup( "djrandom-frontend = djrandom.frontend.frontend:main", "djrandom-update-markov = djrandom.model.markov:main", "djrandom-metadata-fixer = djrandom.metadata_fixer.metadata_fixer:main", + "djrandom-solr-fixer = djrandom.model.verify:main", ], }, )